diff --git a/pkg/app/server/grpcapi/web_api.go b/pkg/app/server/grpcapi/web_api.go index bfb6a3b7be..ee9af9dfd6 100644 --- a/pkg/app/server/grpcapi/web_api.go +++ b/pkg/app/server/grpcapi/web_api.go @@ -942,6 +942,93 @@ func (a *WebAPI) ListDeployments(ctx context.Context, req *webservice.ListDeploy }, nil } +// TODO: implement this method, currently only mock for frontend dev +func (a *WebAPI) ListDeploymentTraces(ctx context.Context, req *webservice.ListDeploymentTracesRequest) (*webservice.ListDeploymentTracesResponse, error) { + claims, err := rpcauth.ExtractClaims(ctx) + if err != nil { + a.logger.Error("failed to authenticate the current user", zap.Error(err)) + return nil, err + } + + orders := []datastore.Order{ + { + Field: "UpdatedAt", + Direction: datastore.Desc, + }, + { + Field: "Id", + Direction: datastore.Asc, + }, + } + filters := []datastore.ListFilter{ + { + Field: "ProjectId", + Operator: datastore.OperatorEqual, + Value: claims.Role.ProjectId, + }, + { + Field: "UpdatedAt", + Operator: datastore.OperatorGreaterThanOrEqual, + Value: req.PageMinUpdatedAt, + }, + } + + pageSize := int(req.PageSize) + options := datastore.ListOptions{ + Filters: filters, + Orders: orders, + Limit: pageSize, + Cursor: req.Cursor, + } + deployments, _, err := a.deploymentStore.List(ctx, options) + if err != nil { + a.logger.Error("failed to get deployments", zap.Error(err)) + return nil, gRPCStoreError(err, "get deployments") + } + + return &webservice.ListDeploymentTracesResponse{ + Traces: []*webservice.ListDeploymentTracesResponse_DeploymentTraceRes{ + { + Trace: &model.DeploymentTrace{ + Id: "trace-id-1", + CommitHash: "commit-hash-1", + Title: "Deployment of application 'app-name' to 'stage-name' stage", + CommitUrl: "https://github.com/pipe-cd/pipecd/commit/14f3d0bd403964378593dabafe3baab9238d0424", + CommitMessage: "Message mocked here", + CommitTimestamp: 125, + Author: "author", + }, + Deployments: deployments, + }, + { + Trace: &model.DeploymentTrace{ + Id: "trace-id-2", + CommitHash: "commit-hash-2", + Title: "Deployment of application 'app-name' to 'stage-name' stage", + CommitUrl: "https://github.com/pipe-cd/pipecd/commit/14f3d0bd403964378593dabafe3baab9238d0424", + CommitMessage: "Message mocked here", + CommitTimestamp: 123, + Author: "author", + }, + Deployments: deployments, + }, + { + Trace: &model.DeploymentTrace{ + Id: "trace-id-3", + CommitHash: "comit-hash-3", + Title: "Deployment of application 'app-name' to 'stage-name' stage", + CommitUrl: "https://github.com/pipe-cd/pipecd/commit/14f3d0bd403964378593dabafe3baab9238d0424", + CommitMessage: "Message mocked here", + CommitTimestamp: 123, + Author: "author", + }, + Deployments: deployments, + }, + }, + Cursor: "cursor", + }, nil +} + func (a *WebAPI) GetDeployment(ctx context.Context, req *webservice.GetDeploymentRequest) (*webservice.GetDeploymentResponse, error) { claims, err := rpcauth.ExtractClaims(ctx) if err != nil { diff --git a/pkg/app/server/service/webservice/service.pb.auth.go b/pkg/app/server/service/webservice/service.pb.auth.go index f61a4af4d3..23e123e9e7 100644 --- a/pkg/app/server/service/webservice/service.pb.auth.go +++ b/pkg/app/server/service/webservice/service.pb.auth.go @@ -163,6 +163,8 @@ func (a *authorizer) Authorize(ctx context.Context, method string, r model.Role) return verify(model.ProjectRBACResource_DEPLOYMENT, model.ProjectRBACPolicy_UPDATE) case "/grpc.service.webservice.WebService/ApproveStage": return verify(model.ProjectRBACResource_DEPLOYMENT, model.ProjectRBACPolicy_UPDATE) + case "/grpc.service.webservice.WebService/ListDeploymentTraces": + return verify(model.ProjectRBACResource_DEPLOYMENT, model.ProjectRBACPolicy_LIST) case "/grpc.service.webservice.WebService/ListEvents": return verify(model.ProjectRBACResource_EVENT, model.ProjectRBACPolicy_LIST) case "/grpc.service.webservice.WebService/GetInsightData": diff --git a/pkg/app/server/service/webservice/service.pb.go b/pkg/app/server/service/webservice/service.pb.go index 2f33c825c8..c3808ca095 100644 --- a/pkg/app/server/service/webservice/service.pb.go +++ b/pkg/app/server/service/webservice/service.pb.go @@ -2847,6 +2847,134 @@ func (x *ApproveStageResponse) GetCommandId() string { return "" } +type ListDeploymentTracesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Options *ListDeploymentTracesRequest_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Cursor string `protobuf:"bytes,3,opt,name=cursor,proto3" json:"cursor,omitempty"` + // It will not return any data older than this timestamp, even if it does not meet the page size. + // This aims to prevent the server from scanning the entire database to look for deployments that have the specified fields in spite of nothing. + PageMinUpdatedAt int64 `protobuf:"varint,4,opt,name=page_min_updated_at,json=pageMinUpdatedAt,proto3" json:"page_min_updated_at,omitempty"` +} + +func (x *ListDeploymentTracesRequest) Reset() { + *x = ListDeploymentTracesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDeploymentTracesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDeploymentTracesRequest) ProtoMessage() {} + +func (x *ListDeploymentTracesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_webservice_service_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 mi.MessageOf(x) +} + +// Deprecated: Use ListDeploymentTracesRequest.ProtoReflect.Descriptor instead. +func (*ListDeploymentTracesRequest) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{56} +} + +func (x *ListDeploymentTracesRequest) GetOptions() *ListDeploymentTracesRequest_Options { + if x != nil { + return x.Options + } + return nil +} + +func (x *ListDeploymentTracesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListDeploymentTracesRequest) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +func (x *ListDeploymentTracesRequest) GetPageMinUpdatedAt() int64 { + if x != nil { + return x.PageMinUpdatedAt + } + return 0 +} + +type ListDeploymentTracesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Traces []*ListDeploymentTracesResponse_DeploymentTraceRes `protobuf:"bytes,1,rep,name=traces,proto3" json:"traces,omitempty"` + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` +} + +func (x *ListDeploymentTracesResponse) Reset() { + *x = ListDeploymentTracesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDeploymentTracesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDeploymentTracesResponse) ProtoMessage() {} + +func (x *ListDeploymentTracesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_webservice_service_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 mi.MessageOf(x) +} + +// Deprecated: Use ListDeploymentTracesResponse.ProtoReflect.Descriptor instead. +func (*ListDeploymentTracesResponse) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{57} +} + +func (x *ListDeploymentTracesResponse) GetTraces() []*ListDeploymentTracesResponse_DeploymentTraceRes { + if x != nil { + return x.Traces + } + return nil +} + +func (x *ListDeploymentTracesResponse) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + type GetApplicationLiveStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2858,7 +2986,7 @@ type GetApplicationLiveStateRequest struct { func (x *GetApplicationLiveStateRequest) Reset() { *x = GetApplicationLiveStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[56] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2871,7 +2999,7 @@ func (x *GetApplicationLiveStateRequest) String() string { func (*GetApplicationLiveStateRequest) ProtoMessage() {} func (x *GetApplicationLiveStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[56] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2884,7 +3012,7 @@ func (x *GetApplicationLiveStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationLiveStateRequest.ProtoReflect.Descriptor instead. func (*GetApplicationLiveStateRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{56} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{58} } func (x *GetApplicationLiveStateRequest) GetApplicationId() string { @@ -2905,7 +3033,7 @@ type GetApplicationLiveStateResponse struct { func (x *GetApplicationLiveStateResponse) Reset() { *x = GetApplicationLiveStateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[57] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2918,7 +3046,7 @@ func (x *GetApplicationLiveStateResponse) String() string { func (*GetApplicationLiveStateResponse) ProtoMessage() {} func (x *GetApplicationLiveStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[57] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2931,7 +3059,7 @@ func (x *GetApplicationLiveStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationLiveStateResponse.ProtoReflect.Descriptor instead. func (*GetApplicationLiveStateResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{57} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{59} } func (x *GetApplicationLiveStateResponse) GetSnapshot() *model.ApplicationLiveStateSnapshot { @@ -2950,7 +3078,7 @@ type GetProjectRequest struct { func (x *GetProjectRequest) Reset() { *x = GetProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[58] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2963,7 +3091,7 @@ func (x *GetProjectRequest) String() string { func (*GetProjectRequest) ProtoMessage() {} func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[58] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2976,7 +3104,7 @@ func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. func (*GetProjectRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{58} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{60} } type GetProjectResponse struct { @@ -2990,7 +3118,7 @@ type GetProjectResponse struct { func (x *GetProjectResponse) Reset() { *x = GetProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[59] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3003,7 +3131,7 @@ func (x *GetProjectResponse) String() string { func (*GetProjectResponse) ProtoMessage() {} func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[59] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3016,7 +3144,7 @@ func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead. func (*GetProjectResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{59} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{61} } func (x *GetProjectResponse) GetProject() *model.Project { @@ -3038,7 +3166,7 @@ type UpdateProjectStaticAdminRequest struct { func (x *UpdateProjectStaticAdminRequest) Reset() { *x = UpdateProjectStaticAdminRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[60] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3051,7 +3179,7 @@ func (x *UpdateProjectStaticAdminRequest) String() string { func (*UpdateProjectStaticAdminRequest) ProtoMessage() {} func (x *UpdateProjectStaticAdminRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[60] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3064,7 +3192,7 @@ func (x *UpdateProjectStaticAdminRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectStaticAdminRequest.ProtoReflect.Descriptor instead. func (*UpdateProjectStaticAdminRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{60} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{62} } func (x *UpdateProjectStaticAdminRequest) GetUsername() string { @@ -3090,7 +3218,7 @@ type UpdateProjectStaticAdminResponse struct { func (x *UpdateProjectStaticAdminResponse) Reset() { *x = UpdateProjectStaticAdminResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[61] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3103,7 +3231,7 @@ func (x *UpdateProjectStaticAdminResponse) String() string { func (*UpdateProjectStaticAdminResponse) ProtoMessage() {} func (x *UpdateProjectStaticAdminResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[61] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3116,7 +3244,7 @@ func (x *UpdateProjectStaticAdminResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectStaticAdminResponse.ProtoReflect.Descriptor instead. func (*UpdateProjectStaticAdminResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{61} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{63} } type UpdateProjectSSOConfigRequest struct { @@ -3130,7 +3258,7 @@ type UpdateProjectSSOConfigRequest struct { func (x *UpdateProjectSSOConfigRequest) Reset() { *x = UpdateProjectSSOConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[62] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3143,7 +3271,7 @@ func (x *UpdateProjectSSOConfigRequest) String() string { func (*UpdateProjectSSOConfigRequest) ProtoMessage() {} func (x *UpdateProjectSSOConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[62] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3156,7 +3284,7 @@ func (x *UpdateProjectSSOConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectSSOConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateProjectSSOConfigRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{62} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{64} } func (x *UpdateProjectSSOConfigRequest) GetSso() *model.ProjectSSOConfig { @@ -3175,7 +3303,7 @@ type UpdateProjectSSOConfigResponse struct { func (x *UpdateProjectSSOConfigResponse) Reset() { *x = UpdateProjectSSOConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[63] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3188,7 +3316,7 @@ func (x *UpdateProjectSSOConfigResponse) String() string { func (*UpdateProjectSSOConfigResponse) ProtoMessage() {} func (x *UpdateProjectSSOConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[63] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3201,7 +3329,7 @@ func (x *UpdateProjectSSOConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectSSOConfigResponse.ProtoReflect.Descriptor instead. func (*UpdateProjectSSOConfigResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{63} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{65} } type UpdateProjectRBACConfigRequest struct { @@ -3215,7 +3343,7 @@ type UpdateProjectRBACConfigRequest struct { func (x *UpdateProjectRBACConfigRequest) Reset() { *x = UpdateProjectRBACConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[64] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3228,7 +3356,7 @@ func (x *UpdateProjectRBACConfigRequest) String() string { func (*UpdateProjectRBACConfigRequest) ProtoMessage() {} func (x *UpdateProjectRBACConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[64] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3241,7 +3369,7 @@ func (x *UpdateProjectRBACConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectRBACConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateProjectRBACConfigRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{64} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{66} } func (x *UpdateProjectRBACConfigRequest) GetRbac() *model.ProjectRBACConfig { @@ -3260,7 +3388,7 @@ type UpdateProjectRBACConfigResponse struct { func (x *UpdateProjectRBACConfigResponse) Reset() { *x = UpdateProjectRBACConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[65] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3273,7 +3401,7 @@ func (x *UpdateProjectRBACConfigResponse) String() string { func (*UpdateProjectRBACConfigResponse) ProtoMessage() {} func (x *UpdateProjectRBACConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[65] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3286,7 +3414,7 @@ func (x *UpdateProjectRBACConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectRBACConfigResponse.ProtoReflect.Descriptor instead. func (*UpdateProjectRBACConfigResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{65} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{67} } type EnableStaticAdminRequest struct { @@ -3298,7 +3426,7 @@ type EnableStaticAdminRequest struct { func (x *EnableStaticAdminRequest) Reset() { *x = EnableStaticAdminRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[66] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3311,7 +3439,7 @@ func (x *EnableStaticAdminRequest) String() string { func (*EnableStaticAdminRequest) ProtoMessage() {} func (x *EnableStaticAdminRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[66] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3324,7 +3452,7 @@ func (x *EnableStaticAdminRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableStaticAdminRequest.ProtoReflect.Descriptor instead. func (*EnableStaticAdminRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{66} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{68} } type EnableStaticAdminResponse struct { @@ -3336,7 +3464,7 @@ type EnableStaticAdminResponse struct { func (x *EnableStaticAdminResponse) Reset() { *x = EnableStaticAdminResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[67] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3349,7 +3477,7 @@ func (x *EnableStaticAdminResponse) String() string { func (*EnableStaticAdminResponse) ProtoMessage() {} func (x *EnableStaticAdminResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[67] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3362,7 +3490,7 @@ func (x *EnableStaticAdminResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableStaticAdminResponse.ProtoReflect.Descriptor instead. func (*EnableStaticAdminResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{67} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{69} } type DisableStaticAdminRequest struct { @@ -3374,7 +3502,7 @@ type DisableStaticAdminRequest struct { func (x *DisableStaticAdminRequest) Reset() { *x = DisableStaticAdminRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[68] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3387,7 +3515,7 @@ func (x *DisableStaticAdminRequest) String() string { func (*DisableStaticAdminRequest) ProtoMessage() {} func (x *DisableStaticAdminRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[68] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3400,7 +3528,7 @@ func (x *DisableStaticAdminRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableStaticAdminRequest.ProtoReflect.Descriptor instead. func (*DisableStaticAdminRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{68} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{70} } type DisableStaticAdminResponse struct { @@ -3412,7 +3540,7 @@ type DisableStaticAdminResponse struct { func (x *DisableStaticAdminResponse) Reset() { *x = DisableStaticAdminResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[69] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3425,7 +3553,7 @@ func (x *DisableStaticAdminResponse) String() string { func (*DisableStaticAdminResponse) ProtoMessage() {} func (x *DisableStaticAdminResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[69] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3438,7 +3566,7 @@ func (x *DisableStaticAdminResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableStaticAdminResponse.ProtoReflect.Descriptor instead. func (*DisableStaticAdminResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{69} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{71} } type GetMeRequest struct { @@ -3450,7 +3578,7 @@ type GetMeRequest struct { func (x *GetMeRequest) Reset() { *x = GetMeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[70] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3463,7 +3591,7 @@ func (x *GetMeRequest) String() string { func (*GetMeRequest) ProtoMessage() {} func (x *GetMeRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[70] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3476,7 +3604,7 @@ func (x *GetMeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMeRequest.ProtoReflect.Descriptor instead. func (*GetMeRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{70} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{72} } type GetMeResponse struct { @@ -3492,7 +3620,7 @@ type GetMeResponse struct { func (x *GetMeResponse) Reset() { *x = GetMeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[71] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3505,7 +3633,7 @@ func (x *GetMeResponse) String() string { func (*GetMeResponse) ProtoMessage() {} func (x *GetMeResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[71] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3518,7 +3646,7 @@ func (x *GetMeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMeResponse.ProtoReflect.Descriptor instead. func (*GetMeResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{71} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{73} } func (x *GetMeResponse) GetSubject() string { @@ -3554,7 +3682,7 @@ type AddProjectRBACRoleRequest struct { func (x *AddProjectRBACRoleRequest) Reset() { *x = AddProjectRBACRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[72] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3567,7 +3695,7 @@ func (x *AddProjectRBACRoleRequest) String() string { func (*AddProjectRBACRoleRequest) ProtoMessage() {} func (x *AddProjectRBACRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[72] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3580,7 +3708,7 @@ func (x *AddProjectRBACRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddProjectRBACRoleRequest.ProtoReflect.Descriptor instead. func (*AddProjectRBACRoleRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{72} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{74} } func (x *AddProjectRBACRoleRequest) GetName() string { @@ -3606,7 +3734,7 @@ type AddProjectRBACRoleResponse struct { func (x *AddProjectRBACRoleResponse) Reset() { *x = AddProjectRBACRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[73] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3619,7 +3747,7 @@ func (x *AddProjectRBACRoleResponse) String() string { func (*AddProjectRBACRoleResponse) ProtoMessage() {} func (x *AddProjectRBACRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[73] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3632,7 +3760,7 @@ func (x *AddProjectRBACRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddProjectRBACRoleResponse.ProtoReflect.Descriptor instead. func (*AddProjectRBACRoleResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{73} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{75} } type UpdateProjectRBACRoleRequest struct { @@ -3647,7 +3775,7 @@ type UpdateProjectRBACRoleRequest struct { func (x *UpdateProjectRBACRoleRequest) Reset() { *x = UpdateProjectRBACRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[74] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3660,7 +3788,7 @@ func (x *UpdateProjectRBACRoleRequest) String() string { func (*UpdateProjectRBACRoleRequest) ProtoMessage() {} func (x *UpdateProjectRBACRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[74] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3673,7 +3801,7 @@ func (x *UpdateProjectRBACRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectRBACRoleRequest.ProtoReflect.Descriptor instead. func (*UpdateProjectRBACRoleRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{74} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{76} } func (x *UpdateProjectRBACRoleRequest) GetName() string { @@ -3699,7 +3827,7 @@ type UpdateProjectRBACRoleResponse struct { func (x *UpdateProjectRBACRoleResponse) Reset() { *x = UpdateProjectRBACRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[75] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3712,7 +3840,7 @@ func (x *UpdateProjectRBACRoleResponse) String() string { func (*UpdateProjectRBACRoleResponse) ProtoMessage() {} func (x *UpdateProjectRBACRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[75] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3725,7 +3853,7 @@ func (x *UpdateProjectRBACRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectRBACRoleResponse.ProtoReflect.Descriptor instead. func (*UpdateProjectRBACRoleResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{75} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{77} } type DeleteProjectRBACRoleRequest struct { @@ -3739,7 +3867,7 @@ type DeleteProjectRBACRoleRequest struct { func (x *DeleteProjectRBACRoleRequest) Reset() { *x = DeleteProjectRBACRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[76] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3752,7 +3880,7 @@ func (x *DeleteProjectRBACRoleRequest) String() string { func (*DeleteProjectRBACRoleRequest) ProtoMessage() {} func (x *DeleteProjectRBACRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[76] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3765,7 +3893,7 @@ func (x *DeleteProjectRBACRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectRBACRoleRequest.ProtoReflect.Descriptor instead. func (*DeleteProjectRBACRoleRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{76} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{78} } func (x *DeleteProjectRBACRoleRequest) GetName() string { @@ -3784,7 +3912,7 @@ type DeleteProjectRBACRoleResponse struct { func (x *DeleteProjectRBACRoleResponse) Reset() { *x = DeleteProjectRBACRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[77] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3797,7 +3925,7 @@ func (x *DeleteProjectRBACRoleResponse) String() string { func (*DeleteProjectRBACRoleResponse) ProtoMessage() {} func (x *DeleteProjectRBACRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[77] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3810,7 +3938,7 @@ func (x *DeleteProjectRBACRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectRBACRoleResponse.ProtoReflect.Descriptor instead. func (*DeleteProjectRBACRoleResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{77} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{79} } type AddProjectUserGroupRequest struct { @@ -3825,7 +3953,7 @@ type AddProjectUserGroupRequest struct { func (x *AddProjectUserGroupRequest) Reset() { *x = AddProjectUserGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[78] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3838,7 +3966,7 @@ func (x *AddProjectUserGroupRequest) String() string { func (*AddProjectUserGroupRequest) ProtoMessage() {} func (x *AddProjectUserGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[78] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3851,7 +3979,7 @@ func (x *AddProjectUserGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddProjectUserGroupRequest.ProtoReflect.Descriptor instead. func (*AddProjectUserGroupRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{78} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{80} } func (x *AddProjectUserGroupRequest) GetSsoGroup() string { @@ -3877,7 +4005,7 @@ type AddProjectUserGroupResponse struct { func (x *AddProjectUserGroupResponse) Reset() { *x = AddProjectUserGroupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[79] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3890,7 +4018,7 @@ func (x *AddProjectUserGroupResponse) String() string { func (*AddProjectUserGroupResponse) ProtoMessage() {} func (x *AddProjectUserGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[79] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3903,7 +4031,7 @@ func (x *AddProjectUserGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddProjectUserGroupResponse.ProtoReflect.Descriptor instead. func (*AddProjectUserGroupResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{79} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{81} } type DeleteProjectUserGroupRequest struct { @@ -3917,7 +4045,7 @@ type DeleteProjectUserGroupRequest struct { func (x *DeleteProjectUserGroupRequest) Reset() { *x = DeleteProjectUserGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[80] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3930,7 +4058,7 @@ func (x *DeleteProjectUserGroupRequest) String() string { func (*DeleteProjectUserGroupRequest) ProtoMessage() {} func (x *DeleteProjectUserGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[80] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3943,7 +4071,7 @@ func (x *DeleteProjectUserGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectUserGroupRequest.ProtoReflect.Descriptor instead. func (*DeleteProjectUserGroupRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{80} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{82} } func (x *DeleteProjectUserGroupRequest) GetSsoGroup() string { @@ -3962,7 +4090,7 @@ type DeleteProjectUserGroupResponse struct { func (x *DeleteProjectUserGroupResponse) Reset() { *x = DeleteProjectUserGroupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[81] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3975,7 +4103,7 @@ func (x *DeleteProjectUserGroupResponse) String() string { func (*DeleteProjectUserGroupResponse) ProtoMessage() {} func (x *DeleteProjectUserGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[81] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3988,7 +4116,7 @@ func (x *DeleteProjectUserGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectUserGroupResponse.ProtoReflect.Descriptor instead. func (*DeleteProjectUserGroupResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{81} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{83} } type GetCommandRequest struct { @@ -4002,7 +4130,7 @@ type GetCommandRequest struct { func (x *GetCommandRequest) Reset() { *x = GetCommandRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[82] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4015,7 +4143,7 @@ func (x *GetCommandRequest) String() string { func (*GetCommandRequest) ProtoMessage() {} func (x *GetCommandRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[82] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4028,7 +4156,7 @@ func (x *GetCommandRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCommandRequest.ProtoReflect.Descriptor instead. func (*GetCommandRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{82} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{84} } func (x *GetCommandRequest) GetCommandId() string { @@ -4049,7 +4177,7 @@ type GetCommandResponse struct { func (x *GetCommandResponse) Reset() { *x = GetCommandResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[83] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4062,7 +4190,7 @@ func (x *GetCommandResponse) String() string { func (*GetCommandResponse) ProtoMessage() {} func (x *GetCommandResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[83] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4075,7 +4203,7 @@ func (x *GetCommandResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCommandResponse.ProtoReflect.Descriptor instead. func (*GetCommandResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{83} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{85} } func (x *GetCommandResponse) GetCommand() *model.Command { @@ -4097,7 +4225,7 @@ type GenerateAPIKeyRequest struct { func (x *GenerateAPIKeyRequest) Reset() { *x = GenerateAPIKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[84] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4110,7 +4238,7 @@ func (x *GenerateAPIKeyRequest) String() string { func (*GenerateAPIKeyRequest) ProtoMessage() {} func (x *GenerateAPIKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[84] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4123,7 +4251,7 @@ func (x *GenerateAPIKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateAPIKeyRequest.ProtoReflect.Descriptor instead. func (*GenerateAPIKeyRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{84} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{86} } func (x *GenerateAPIKeyRequest) GetName() string { @@ -4151,7 +4279,7 @@ type GenerateAPIKeyResponse struct { func (x *GenerateAPIKeyResponse) Reset() { *x = GenerateAPIKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[85] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4164,7 +4292,7 @@ func (x *GenerateAPIKeyResponse) String() string { func (*GenerateAPIKeyResponse) ProtoMessage() {} func (x *GenerateAPIKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[85] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4177,7 +4305,7 @@ func (x *GenerateAPIKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateAPIKeyResponse.ProtoReflect.Descriptor instead. func (*GenerateAPIKeyResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{85} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{87} } func (x *GenerateAPIKeyResponse) GetKey() string { @@ -4198,7 +4326,7 @@ type DisableAPIKeyRequest struct { func (x *DisableAPIKeyRequest) Reset() { *x = DisableAPIKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[86] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4211,7 +4339,7 @@ func (x *DisableAPIKeyRequest) String() string { func (*DisableAPIKeyRequest) ProtoMessage() {} func (x *DisableAPIKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[86] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4224,7 +4352,7 @@ func (x *DisableAPIKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableAPIKeyRequest.ProtoReflect.Descriptor instead. func (*DisableAPIKeyRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{86} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{88} } func (x *DisableAPIKeyRequest) GetId() string { @@ -4243,7 +4371,7 @@ type DisableAPIKeyResponse struct { func (x *DisableAPIKeyResponse) Reset() { *x = DisableAPIKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[87] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4256,7 +4384,7 @@ func (x *DisableAPIKeyResponse) String() string { func (*DisableAPIKeyResponse) ProtoMessage() {} func (x *DisableAPIKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[87] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4269,7 +4397,7 @@ func (x *DisableAPIKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableAPIKeyResponse.ProtoReflect.Descriptor instead. func (*DisableAPIKeyResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{87} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{89} } type ListAPIKeysRequest struct { @@ -4283,7 +4411,7 @@ type ListAPIKeysRequest struct { func (x *ListAPIKeysRequest) Reset() { *x = ListAPIKeysRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[88] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4296,7 +4424,7 @@ func (x *ListAPIKeysRequest) String() string { func (*ListAPIKeysRequest) ProtoMessage() {} func (x *ListAPIKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[88] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4309,7 +4437,7 @@ func (x *ListAPIKeysRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPIKeysRequest.ProtoReflect.Descriptor instead. func (*ListAPIKeysRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{88} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{90} } func (x *ListAPIKeysRequest) GetOptions() *ListAPIKeysRequest_Options { @@ -4330,7 +4458,7 @@ type ListAPIKeysResponse struct { func (x *ListAPIKeysResponse) Reset() { *x = ListAPIKeysResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[89] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4343,7 +4471,7 @@ func (x *ListAPIKeysResponse) String() string { func (*ListAPIKeysResponse) ProtoMessage() {} func (x *ListAPIKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[89] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4356,7 +4484,7 @@ func (x *ListAPIKeysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPIKeysResponse.ProtoReflect.Descriptor instead. func (*ListAPIKeysResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{89} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{91} } func (x *ListAPIKeysResponse) GetKeys() []*model.APIKey { @@ -4382,7 +4510,7 @@ type GetInsightDataRequest struct { func (x *GetInsightDataRequest) Reset() { *x = GetInsightDataRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[90] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4395,7 +4523,7 @@ func (x *GetInsightDataRequest) String() string { func (*GetInsightDataRequest) ProtoMessage() {} func (x *GetInsightDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[90] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4408,7 +4536,7 @@ func (x *GetInsightDataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInsightDataRequest.ProtoReflect.Descriptor instead. func (*GetInsightDataRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{90} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{92} } func (x *GetInsightDataRequest) GetMetricsKind() model.InsightMetricsKind { @@ -4467,7 +4595,7 @@ type GetInsightDataResponse struct { func (x *GetInsightDataResponse) Reset() { *x = GetInsightDataResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[91] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4480,7 +4608,7 @@ func (x *GetInsightDataResponse) String() string { func (*GetInsightDataResponse) ProtoMessage() {} func (x *GetInsightDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[91] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4493,7 +4621,7 @@ func (x *GetInsightDataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInsightDataResponse.ProtoReflect.Descriptor instead. func (*GetInsightDataResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{91} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{93} } func (x *GetInsightDataResponse) GetUpdatedAt() int64 { @@ -4533,7 +4661,7 @@ type GetInsightApplicationCountRequest struct { func (x *GetInsightApplicationCountRequest) Reset() { *x = GetInsightApplicationCountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[92] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4546,7 +4674,7 @@ func (x *GetInsightApplicationCountRequest) String() string { func (*GetInsightApplicationCountRequest) ProtoMessage() {} func (x *GetInsightApplicationCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[92] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4559,7 +4687,7 @@ func (x *GetInsightApplicationCountRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetInsightApplicationCountRequest.ProtoReflect.Descriptor instead. func (*GetInsightApplicationCountRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{92} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{94} } type GetInsightApplicationCountResponse struct { @@ -4574,7 +4702,7 @@ type GetInsightApplicationCountResponse struct { func (x *GetInsightApplicationCountResponse) Reset() { *x = GetInsightApplicationCountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[93] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4587,7 +4715,7 @@ func (x *GetInsightApplicationCountResponse) String() string { func (*GetInsightApplicationCountResponse) ProtoMessage() {} func (x *GetInsightApplicationCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[93] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4600,7 +4728,7 @@ func (x *GetInsightApplicationCountResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetInsightApplicationCountResponse.ProtoReflect.Descriptor instead. func (*GetInsightApplicationCountResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{93} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{95} } func (x *GetInsightApplicationCountResponse) GetUpdatedAt() int64 { @@ -4633,7 +4761,7 @@ type ListDeploymentChainsRequest struct { func (x *ListDeploymentChainsRequest) Reset() { *x = ListDeploymentChainsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[94] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4646,7 +4774,7 @@ func (x *ListDeploymentChainsRequest) String() string { func (*ListDeploymentChainsRequest) ProtoMessage() {} func (x *ListDeploymentChainsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[94] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4659,7 +4787,7 @@ func (x *ListDeploymentChainsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDeploymentChainsRequest.ProtoReflect.Descriptor instead. func (*ListDeploymentChainsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{94} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{96} } func (x *ListDeploymentChainsRequest) GetOptions() *ListDeploymentChainsRequest_Options { @@ -4702,7 +4830,7 @@ type ListDeploymentChainsResponse struct { func (x *ListDeploymentChainsResponse) Reset() { *x = ListDeploymentChainsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[95] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4715,7 +4843,7 @@ func (x *ListDeploymentChainsResponse) String() string { func (*ListDeploymentChainsResponse) ProtoMessage() {} func (x *ListDeploymentChainsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[95] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4728,7 +4856,7 @@ func (x *ListDeploymentChainsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDeploymentChainsResponse.ProtoReflect.Descriptor instead. func (*ListDeploymentChainsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{95} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{97} } func (x *ListDeploymentChainsResponse) GetDeploymentChains() []*model.DeploymentChain { @@ -4756,7 +4884,7 @@ type GetDeploymentChainRequest struct { func (x *GetDeploymentChainRequest) Reset() { *x = GetDeploymentChainRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[96] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4769,7 +4897,7 @@ func (x *GetDeploymentChainRequest) String() string { func (*GetDeploymentChainRequest) ProtoMessage() {} func (x *GetDeploymentChainRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[96] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4782,7 +4910,7 @@ func (x *GetDeploymentChainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeploymentChainRequest.ProtoReflect.Descriptor instead. func (*GetDeploymentChainRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{96} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{98} } func (x *GetDeploymentChainRequest) GetDeploymentChainId() string { @@ -4803,7 +4931,7 @@ type GetDeploymentChainResponse struct { func (x *GetDeploymentChainResponse) Reset() { *x = GetDeploymentChainResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[97] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4816,7 +4944,7 @@ func (x *GetDeploymentChainResponse) String() string { func (*GetDeploymentChainResponse) ProtoMessage() {} func (x *GetDeploymentChainResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[97] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4829,7 +4957,7 @@ func (x *GetDeploymentChainResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeploymentChainResponse.ProtoReflect.Descriptor instead. func (*GetDeploymentChainResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{97} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{99} } func (x *GetDeploymentChainResponse) GetDeploymentChain() *model.DeploymentChain { @@ -4855,7 +4983,7 @@ type ListEventsRequest struct { func (x *ListEventsRequest) Reset() { *x = ListEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[98] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4868,7 +4996,7 @@ func (x *ListEventsRequest) String() string { func (*ListEventsRequest) ProtoMessage() {} func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[98] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4881,7 +5009,7 @@ func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsRequest.ProtoReflect.Descriptor instead. func (*ListEventsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{98} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{100} } func (x *ListEventsRequest) GetOptions() *ListEventsRequest_Options { @@ -4924,7 +5052,7 @@ type ListEventsResponse struct { func (x *ListEventsResponse) Reset() { *x = ListEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[99] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4937,7 +5065,7 @@ func (x *ListEventsResponse) String() string { func (*ListEventsResponse) ProtoMessage() {} func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[99] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4950,7 +5078,7 @@ func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsResponse.ProtoReflect.Descriptor instead. func (*ListEventsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{99} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{101} } func (x *ListEventsResponse) GetEvents() []*model.Event { @@ -4978,7 +5106,7 @@ type ListPipedsRequest_Options struct { func (x *ListPipedsRequest_Options) Reset() { *x = ListPipedsRequest_Options{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[100] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4991,7 +5119,7 @@ func (x *ListPipedsRequest_Options) String() string { func (*ListPipedsRequest_Options) ProtoMessage() {} func (x *ListPipedsRequest_Options) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[100] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5030,7 +5158,7 @@ type ListApplicationsRequest_Options struct { func (x *ListApplicationsRequest_Options) Reset() { *x = ListApplicationsRequest_Options{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[104] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5043,7 +5171,7 @@ func (x *ListApplicationsRequest_Options) String() string { func (*ListApplicationsRequest_Options) ProtoMessage() {} func (x *ListApplicationsRequest_Options) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[104] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5116,7 +5244,7 @@ type ListDeploymentsRequest_Options struct { func (x *ListDeploymentsRequest_Options) Reset() { *x = ListDeploymentsRequest_Options{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[106] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5129,7 +5257,7 @@ func (x *ListDeploymentsRequest_Options) String() string { func (*ListDeploymentsRequest_Options) ProtoMessage() {} func (x *ListDeploymentsRequest_Options) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[106] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5180,6 +5308,108 @@ func (x *ListDeploymentsRequest_Options) GetLabels() map[string]string { return nil } +type ListDeploymentTracesRequest_Options struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommitHash string `protobuf:"bytes,1,opt,name=commit_hash,json=commitHash,proto3" json:"commit_hash,omitempty"` +} + +func (x *ListDeploymentTracesRequest_Options) Reset() { + *x = ListDeploymentTracesRequest_Options{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDeploymentTracesRequest_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDeploymentTracesRequest_Options) ProtoMessage() {} + +func (x *ListDeploymentTracesRequest_Options) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[110] + if 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 ListDeploymentTracesRequest_Options.ProtoReflect.Descriptor instead. +func (*ListDeploymentTracesRequest_Options) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{56, 0} +} + +func (x *ListDeploymentTracesRequest_Options) GetCommitHash() string { + if x != nil { + return x.CommitHash + } + return "" +} + +type ListDeploymentTracesResponse_DeploymentTraceRes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trace *model.DeploymentTrace `protobuf:"bytes,1,opt,name=trace,proto3" json:"trace,omitempty"` + Deployments []*model.Deployment `protobuf:"bytes,2,rep,name=deployments,proto3" json:"deployments,omitempty"` +} + +func (x *ListDeploymentTracesResponse_DeploymentTraceRes) Reset() { + *x = ListDeploymentTracesResponse_DeploymentTraceRes{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDeploymentTracesResponse_DeploymentTraceRes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDeploymentTracesResponse_DeploymentTraceRes) ProtoMessage() {} + +func (x *ListDeploymentTracesResponse_DeploymentTraceRes) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[111] + if 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 ListDeploymentTracesResponse_DeploymentTraceRes.ProtoReflect.Descriptor instead. +func (*ListDeploymentTracesResponse_DeploymentTraceRes) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{57, 0} +} + +func (x *ListDeploymentTracesResponse_DeploymentTraceRes) GetTrace() *model.DeploymentTrace { + if x != nil { + return x.Trace + } + return nil +} + +func (x *ListDeploymentTracesResponse_DeploymentTraceRes) GetDeployments() []*model.Deployment { + if x != nil { + return x.Deployments + } + return nil +} + type ListAPIKeysRequest_Options struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5191,7 +5421,7 @@ type ListAPIKeysRequest_Options struct { func (x *ListAPIKeysRequest_Options) Reset() { *x = ListAPIKeysRequest_Options{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[108] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5204,7 +5434,7 @@ func (x *ListAPIKeysRequest_Options) String() string { func (*ListAPIKeysRequest_Options) ProtoMessage() {} func (x *ListAPIKeysRequest_Options) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[108] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5217,7 +5447,7 @@ func (x *ListAPIKeysRequest_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPIKeysRequest_Options.ProtoReflect.Descriptor instead. func (*ListAPIKeysRequest_Options) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{88, 0} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{90, 0} } func (x *ListAPIKeysRequest_Options) GetEnabled() *wrapperspb.BoolValue { @@ -5236,7 +5466,7 @@ type ListDeploymentChainsRequest_Options struct { func (x *ListDeploymentChainsRequest_Options) Reset() { *x = ListDeploymentChainsRequest_Options{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[110] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5249,7 +5479,7 @@ func (x *ListDeploymentChainsRequest_Options) String() string { func (*ListDeploymentChainsRequest_Options) ProtoMessage() {} func (x *ListDeploymentChainsRequest_Options) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[110] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5262,7 +5492,7 @@ func (x *ListDeploymentChainsRequest_Options) ProtoReflect() protoreflect.Messag // Deprecated: Use ListDeploymentChainsRequest_Options.ProtoReflect.Descriptor instead. func (*ListDeploymentChainsRequest_Options) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{94, 0} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{96, 0} } type ListEventsRequest_Options struct { @@ -5278,7 +5508,7 @@ type ListEventsRequest_Options struct { func (x *ListEventsRequest_Options) Reset() { *x = ListEventsRequest_Options{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[111] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5291,7 +5521,7 @@ func (x *ListEventsRequest_Options) String() string { func (*ListEventsRequest_Options) ProtoMessage() {} func (x *ListEventsRequest_Options) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[111] + mi := &file_pkg_app_server_service_webservice_service_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5304,7 +5534,7 @@ func (x *ListEventsRequest_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsRequest_Options.ProtoReflect.Descriptor instead. func (*ListEventsRequest_Options) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{98, 0} + return file_pkg_app_server_service_webservice_service_proto_rawDescGZIP(), []int{100, 0} } func (x *ListEventsRequest_Options) GetName() string { @@ -5349,1072 +5579,1119 @@ var file_pkg_app_server_service_webservice_service_proto_rawDesc = []byte{ 0x74, 0x6f, 0x1a, 0x1a, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x18, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x6c, 0x6f, 0x67, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x70, 0x6b, 0x67, 0x2f, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x14, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x72, 0x62, 0x61, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x16, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x6b, - 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x2f, 0x65, 0x76, 0x65, 0x6e, 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, - 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x44, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, - 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x39, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 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, 0x22, 0x6f, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, - 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x22, 0x15, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x17, 0x52, 0x65, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6c, 0x64, - 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, - 0x65, 0x64, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6c, - 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x38, 0x0a, 0x12, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, - 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x20, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x18, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x6c, 0x6f, + 0x67, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x70, 0x6b, + 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x72, + 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x70, 0x6b, 0x67, 0x2f, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x61, 0x70, + 0x69, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x70, 0x6b, 0x67, 0x2f, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x65, 0x76, 0x65, 0x6e, 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, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x44, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x39, 0x0a, 0x15, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 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, 0x22, 0x6f, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, 0x16, - 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3f, 0x0a, 0x07, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 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, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3a, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x64, - 0x52, 0x06, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x22, 0x35, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, - 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, - 0x36, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x70, 0x69, 0x70, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x64, - 0x52, 0x05, 0x70, 0x69, 0x70, 0x65, 0x64, 0x22, 0x6d, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x3a, 0x01, 0x76, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x25, 0x0a, 0x09, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x13, 0x52, - 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x15, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x17, + 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x52, 0x65, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x1d, 0x0a, - 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3a, 0x0a, 0x1c, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x44, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x33, - 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, - 0x74, 0x65, 0x73, 0x22, 0xa7, 0x05, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x3e, - 0x0a, 0x08, 0x67, 0x69, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x34, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x12, 0x8c, 0x01, 0x0a, 0x18, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4f, 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x12, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, + 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, + 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, 0x15, + 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, + 0x22, 0x16, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x4c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3f, 0x0a, + 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 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, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3a, + 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x69, 0x70, + 0x65, 0x64, 0x52, 0x06, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x22, 0x35, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, + 0x64, 0x22, 0x36, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x70, 0x69, 0x70, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x69, 0x70, + 0x65, 0x64, 0x52, 0x05, 0x70, 0x69, 0x70, 0x65, 0x64, 0x22, 0x6d, 0x0a, 0x20, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x3a, 0x01, 0x76, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x25, 0x0a, 0x09, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, + 0x13, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, + 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3a, + 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x44, 0x0a, 0x1a, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x22, 0x33, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x22, 0xa7, 0x05, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x08, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, + 0x12, 0x3e, 0x0a, 0x08, 0x67, 0x69, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x8c, 0x01, 0x0a, 0x18, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x08, 0x01, 0x52, 0x15, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x9a, 0x01, 0x02, 0x08, 0x01, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x5e, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x48, 0x0a, - 0x16, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x95, 0x04, 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, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x8f, 0x01, 0x0a, 0x18, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 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, 0x2e, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x9a, 0x01, - 0x02, 0x08, 0x01, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x1a, 0x5e, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, - 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x4a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1b, 0x0a, 0x19, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xee, 0x03, 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, 0x52, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xfe, 0x02, 0x0a, 0x07, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 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, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x6b, - 0x69, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, - 0x6e, 0x64, 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x73, 0x79, 0x6e, - 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, - 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x5c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x19, - 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 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, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x52, 0x0a, 0x18, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 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, 0x82, - 0x01, 0x0a, 0x16, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x5e, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 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, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, + 0x48, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0d, 0x73, 0x79, 0x6e, - 0x63, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x13, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x22, 0x38, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x95, 0x04, 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, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x34, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x5f, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x61, 0x73, - 0x65, 0x36, 0x34, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x46, 0x0a, 0x27, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x24, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb0, - 0x04, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, - 0x70, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x1a, 0xde, 0x02, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x08, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2b, 0x0a, + 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x8f, 0x01, 0x0a, 0x18, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x79, + 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 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, + 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x9a, 0x01, 0x02, 0x08, 0x01, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x5e, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x07, 0x10, + 0x08, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, + 0x0a, 0x18, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, + 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1b, + 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xee, 0x03, 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, 0x52, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xfe, 0x02, 0x0a, 0x07, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 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, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, + 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x73, + 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x4a, 0x04, 0x08, 0x04, 0x10, - 0x05, 0x22, 0x66, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0b, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, - 0x4a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xae, 0x01, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5c, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x17, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x6f, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x52, - 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x39, 0x0a, 0x18, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x49, 0x64, 0x22, 0x64, 0x0a, 0x10, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x32, 0x0a, 0x11, 0x53, 0x6b, 0x69, 0x70, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x67, 0x0a, 0x13, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x12, 0x19, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 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, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x52, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 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, 0x82, 0x01, 0x0a, 0x16, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0d, 0x73, + 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x38, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, + 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x5f, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, + 0x61, 0x73, 0x65, 0x36, 0x34, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x46, 0x0a, + 0x27, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x72, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x24, + 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0xb0, 0x04, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x10, 0x70, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x1a, 0xde, 0x02, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, + 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x6b, 0x69, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x05, 0x6b, 0x69, 0x6e, 0x64, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x22, 0x66, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, + 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x44, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x1e, - 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, - 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, - 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, - 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x6b, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x64, 0x22, 0x4a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xae, 0x01, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5c, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, + 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x9a, 0x01, 0x0a, + 0x17, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, + 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2a, 0x0a, + 0x11, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x4e, + 0x6f, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x39, 0x0a, 0x18, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x10, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x32, 0x0a, 0x11, 0x53, 0x6b, + 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x67, + 0x0a, 0x13, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x85, + 0x02, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, + 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, + 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x61, 0x67, 0x65, 0x4d, 0x69, + 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x1a, 0x2a, 0x0a, 0x07, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0xa6, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x1a, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x12, 0x3d, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x08, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0x50, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x62, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x6b, 0x0a, 0x1f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x03, 0x73, 0x73, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x73, 0x73, 0x6f, 0x22, 0x20, - 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, - 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x58, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x22, 0x21, 0x0a, 0x1f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, - 0x18, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x6d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, - 0x22, 0x78, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, - 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, - 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x41, 0x64, - 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, + 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x1d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x03, + 0x73, 0x73, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x73, 0x73, + 0x6f, 0x22, 0x20, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x58, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x22, 0x21, 0x0a, + 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, + 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1a, 0x0a, 0x18, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x6d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x22, 0x78, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, + 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x42, 0x41, 0x43, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, + 0x02, 0x08, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x1c, 0x0a, + 0x1a, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x1c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, 0x1c, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x73, 0x73, 0x6f, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x73, 0x73, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x73, 0x73, 0x6f, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x08, 0x73, 0x73, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x20, 0x0a, 0x1e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x66, 0x0a, 0x15, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x30, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x2f, - 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3f, - 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 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, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, - 0x38, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0xa5, 0x03, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x46, - 0x72, 0x6f, 0x6d, 0x12, 0x22, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x07, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x12, 0x42, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x52, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0xc7, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, - 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x6d, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, - 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x06, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x22, 0x23, 0x0a, 0x21, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x7b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xe4, 0x01, - 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x1a, 0x09, 0x0a, 0x07, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7b, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x22, 0x54, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, - 0x0a, 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0xa8, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, - 0x70, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x1a, 0xe0, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, - 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 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, 0x52, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x32, 0x9b, 0x35, 0x0a, 0x0a, 0x57, 0x65, 0x62, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7c, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, - 0x1c, 0x02, 0x10, 0x03, 0x12, 0x76, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, - 0x70, 0x65, 0x64, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x85, 0x01, 0x0a, - 0x10, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, - 0x79, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, - 0x1c, 0x02, 0x10, 0x04, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6c, 0x64, 0x50, - 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, - 0x10, 0x04, 0x12, 0x76, 0x0a, 0x0b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, - 0x64, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, - 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, - 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x79, 0x0a, 0x0c, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x2c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, - 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x73, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x01, 0x52, 0x08, 0x73, 0x73, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x73, 0x73, 0x6f, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x73, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x20, + 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x3e, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x66, 0x0a, + 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x22, 0x2f, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x69, - 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, - 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x6d, 0x0a, 0x08, 0x47, 0x65, - 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, - 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, - 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0xa0, 0x01, 0x0a, 0x19, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, - 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x79, 0x0a, 0x0c, - 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x2c, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, - 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x72, 0x70, + 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x3f, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 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, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x22, 0x38, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0xa5, 0x03, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x26, + 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x22, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, + 0x00, 0x52, 0x07, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x12, 0x42, 0x0a, 0x0a, 0x72, 0x65, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, + 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 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, 0xc7, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x06, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x6d, 0x61, + 0x74, 0x72, 0x69, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x06, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x22, 0x23, + 0x0a, 0x21, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x7b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x22, 0xe4, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x56, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x2d, 0x0a, + 0x13, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x61, 0x67, 0x65, + 0x4d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x1a, 0x09, 0x0a, 0x07, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7b, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x10, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x37, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x1a, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0xa8, 0x03, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x6e, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x10, 0x70, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x1a, 0xe0, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 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, 0x52, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x32, 0xaf, 0x36, 0x0a, 0x0a, 0x57, + 0x65, 0x62, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7c, 0x0a, 0x0d, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, - 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x91, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x03, 0x12, 0x76, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, - 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x8e, 0x01, 0x0a, 0x13, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, - 0x74, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x7f, 0x0a, 0x0e, - 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x03, 0x12, 0x88, 0x01, - 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 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, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, + 0x85, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, + 0x64, 0x4b, 0x65, 0x79, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, - 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x88, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, + 0x2e, 0x52, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, + 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4f, 0x6c, 0x64, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, + 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x76, 0x0a, 0x0b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x69, 0x70, 0x65, 0x64, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, - 0x02, 0x10, 0x04, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, - 0x04, 0x12, 0x88, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, + 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x79, 0x0a, + 0x0c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x2c, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x70, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, + 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x73, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x6d, 0x0a, + 0x08, 0x47, 0x65, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, + 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0xa0, 0x01, 0x0a, + 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x05, 0x12, 0x85, 0x01, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 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, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, + 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x70, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, + 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, + 0x79, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x12, + 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, + 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, + 0x69, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, + 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x91, 0x01, 0x0a, 0x14, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, - 0x1c, 0x02, 0x10, 0x02, 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, - 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x7f, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x67, 0x72, + 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x8e, + 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4e, + 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x04, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, + 0x7f, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x03, + 0x12, 0x88, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 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, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, + 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x88, 0x01, 0x0a, 0x11, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, + 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, + 0x1c, 0x02, 0x10, 0x04, 0x12, 0x88, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x05, 0x12, + 0x85, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 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, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, + 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, - 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0xb2, 0x01, 0x0a, 0x1f, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3f, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, + 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x7f, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x6c, - 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x40, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, - 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, - 0xa9, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, - 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x82, 0x01, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, - 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x76, - 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x2b, 0x2e, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0xb2, 0x01, + 0x0a, 0x1f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x12, 0x3f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, + 0x10, 0x04, 0x12, 0xa9, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x82, + 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, + 0x02, 0x10, 0x02, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, + 0x01, 0x12, 0x76, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, + 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, - 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x85, 0x01, 0x0a, 0x10, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, + 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, + 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x85, 0x01, 0x0a, 0x10, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x30, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, + 0x04, 0x12, 0x70, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x29, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, + 0x02, 0x10, 0x04, 0x12, 0x79, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x12, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x91, + 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x70, - 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, - 0x12, 0x79, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x12, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, + 0x10, 0x02, 0x12, 0x9a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, - 0xed, 0x1c, 0x02, 0x08, 0x02, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x9a, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, - 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, - 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x73, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x01, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, + 0x73, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, + 0x1c, 0x02, 0x10, 0x01, 0x12, 0x9d, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x12, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, + 0x1c, 0x02, 0x10, 0x04, 0x12, 0x88, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, + 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x9d, 0x01, - 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x38, 0x2e, 0x67, 0x72, 0x70, + 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x88, 0x01, - 0x0a, 0x11, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, - 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, - 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, - 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x97, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x97, 0x01, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, + 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x53, 0x53, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, - 0x12, 0x9a, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x2e, 0x67, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, + 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x9a, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, - 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x64, 0x0a, - 0x05, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, + 0x1c, 0x02, 0x10, 0x04, 0x12, 0x64, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, - 0x02, 0x10, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, - 0x04, 0x12, 0x94, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x35, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, + 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x41, + 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, + 0x65, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, - 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x94, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, + 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x94, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, - 0x8e, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, - 0x12, 0x97, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x36, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x94, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x42, 0x41, 0x43, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, + 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x8e, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x33, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, - 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x6d, 0x0a, 0x0a, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x18, 0x01, 0x12, 0x7f, 0x0a, 0x0e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, + 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, + 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x97, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x10, + 0x04, 0x12, 0x6d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, + 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, + 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, - 0x1c, 0x02, 0x08, 0x07, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x03, 0x12, 0x7c, 0x0a, 0x0d, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x2e, 0x67, 0x72, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x9a, 0xed, 0x1c, 0x02, 0x18, 0x01, + 0x12, 0x7f, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x07, 0x9a, 0xed, 0x1c, 0x02, 0x10, + 0x03, 0x12, 0x7c, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x12, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x07, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, + 0x76, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2b, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, - 0x08, 0x07, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x04, 0x12, 0x76, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, + 0x07, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x12, 0x7f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, + 0x08, 0x08, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x07, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, - 0x12, 0x7f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x08, 0x9a, 0xed, 0x1c, 0x02, 0x10, - 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x08, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x85, + 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, - 0x08, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x01, 0x12, 0x85, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, - 0x12, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x73, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x03, 0x9a, - 0xed, 0x1c, 0x02, 0x10, 0x02, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, - 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, + 0x9a, 0xed, 0x1c, 0x02, 0x08, 0x03, 0x9a, 0xed, 0x1c, 0x02, 0x10, 0x02, 0x42, 0x3d, 0x5a, 0x3b, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, + 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, + 0x70, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -6429,310 +6706,321 @@ func file_pkg_app_server_service_webservice_service_proto_rawDescGZIP() []byte { return file_pkg_app_server_service_webservice_service_proto_rawDescData } -var file_pkg_app_server_service_webservice_service_proto_msgTypes = make([]protoimpl.MessageInfo, 113) +var file_pkg_app_server_service_webservice_service_proto_msgTypes = make([]protoimpl.MessageInfo, 117) var file_pkg_app_server_service_webservice_service_proto_goTypes = []interface{}{ - (*RegisterPipedRequest)(nil), // 0: grpc.service.webservice.RegisterPipedRequest - (*RegisterPipedResponse)(nil), // 1: grpc.service.webservice.RegisterPipedResponse - (*UpdatePipedRequest)(nil), // 2: grpc.service.webservice.UpdatePipedRequest - (*UpdatePipedResponse)(nil), // 3: grpc.service.webservice.UpdatePipedResponse - (*RecreatePipedKeyRequest)(nil), // 4: grpc.service.webservice.RecreatePipedKeyRequest - (*RecreatePipedKeyResponse)(nil), // 5: grpc.service.webservice.RecreatePipedKeyResponse - (*DeleteOldPipedKeysRequest)(nil), // 6: grpc.service.webservice.DeleteOldPipedKeysRequest - (*DeleteOldPipedKeysResponse)(nil), // 7: grpc.service.webservice.DeleteOldPipedKeysResponse - (*EnablePipedRequest)(nil), // 8: grpc.service.webservice.EnablePipedRequest - (*EnablePipedResponse)(nil), // 9: grpc.service.webservice.EnablePipedResponse - (*DisablePipedRequest)(nil), // 10: grpc.service.webservice.DisablePipedRequest - (*DisablePipedResponse)(nil), // 11: grpc.service.webservice.DisablePipedResponse - (*ListPipedsRequest)(nil), // 12: grpc.service.webservice.ListPipedsRequest - (*ListPipedsResponse)(nil), // 13: grpc.service.webservice.ListPipedsResponse - (*GetPipedRequest)(nil), // 14: grpc.service.webservice.GetPipedRequest - (*GetPipedResponse)(nil), // 15: grpc.service.webservice.GetPipedResponse - (*UpdatePipedDesiredVersionRequest)(nil), // 16: grpc.service.webservice.UpdatePipedDesiredVersionRequest - (*UpdatePipedDesiredVersionResponse)(nil), // 17: grpc.service.webservice.UpdatePipedDesiredVersionResponse - (*RestartPipedRequest)(nil), // 18: grpc.service.webservice.RestartPipedRequest - (*RestartPipedResponse)(nil), // 19: grpc.service.webservice.RestartPipedResponse - (*ListReleasedVersionsRequest)(nil), // 20: grpc.service.webservice.ListReleasedVersionsRequest - (*ListReleasedVersionsResponse)(nil), // 21: grpc.service.webservice.ListReleasedVersionsResponse - (*ListDeprecatedNotesRequest)(nil), // 22: grpc.service.webservice.ListDeprecatedNotesRequest - (*ListDeprecatedNotesResponse)(nil), // 23: grpc.service.webservice.ListDeprecatedNotesResponse - (*AddApplicationRequest)(nil), // 24: grpc.service.webservice.AddApplicationRequest - (*AddApplicationResponse)(nil), // 25: grpc.service.webservice.AddApplicationResponse - (*UpdateApplicationRequest)(nil), // 26: grpc.service.webservice.UpdateApplicationRequest - (*UpdateApplicationResponse)(nil), // 27: grpc.service.webservice.UpdateApplicationResponse - (*EnableApplicationRequest)(nil), // 28: grpc.service.webservice.EnableApplicationRequest - (*EnableApplicationResponse)(nil), // 29: grpc.service.webservice.EnableApplicationResponse - (*DisableApplicationRequest)(nil), // 30: grpc.service.webservice.DisableApplicationRequest - (*DisableApplicationResponse)(nil), // 31: grpc.service.webservice.DisableApplicationResponse - (*DeleteApplicationRequest)(nil), // 32: grpc.service.webservice.DeleteApplicationRequest - (*DeleteApplicationResponse)(nil), // 33: grpc.service.webservice.DeleteApplicationResponse - (*ListApplicationsRequest)(nil), // 34: grpc.service.webservice.ListApplicationsRequest - (*ListApplicationsResponse)(nil), // 35: grpc.service.webservice.ListApplicationsResponse - (*SyncApplicationRequest)(nil), // 36: grpc.service.webservice.SyncApplicationRequest - (*SyncApplicationResponse)(nil), // 37: grpc.service.webservice.SyncApplicationResponse - (*GetApplicationRequest)(nil), // 38: grpc.service.webservice.GetApplicationRequest - (*GetApplicationResponse)(nil), // 39: grpc.service.webservice.GetApplicationResponse - (*GenerateApplicationSealedSecretRequest)(nil), // 40: grpc.service.webservice.GenerateApplicationSealedSecretRequest - (*GenerateApplicationSealedSecretResponse)(nil), // 41: grpc.service.webservice.GenerateApplicationSealedSecretResponse - (*ListUnregisteredApplicationsRequest)(nil), // 42: grpc.service.webservice.ListUnregisteredApplicationsRequest - (*ListUnregisteredApplicationsResponse)(nil), // 43: grpc.service.webservice.ListUnregisteredApplicationsResponse - (*ListDeploymentsRequest)(nil), // 44: grpc.service.webservice.ListDeploymentsRequest - (*ListDeploymentsResponse)(nil), // 45: grpc.service.webservice.ListDeploymentsResponse - (*GetDeploymentRequest)(nil), // 46: grpc.service.webservice.GetDeploymentRequest - (*GetDeploymentResponse)(nil), // 47: grpc.service.webservice.GetDeploymentResponse - (*GetStageLogRequest)(nil), // 48: grpc.service.webservice.GetStageLogRequest - (*GetStageLogResponse)(nil), // 49: grpc.service.webservice.GetStageLogResponse - (*CancelDeploymentRequest)(nil), // 50: grpc.service.webservice.CancelDeploymentRequest - (*CancelDeploymentResponse)(nil), // 51: grpc.service.webservice.CancelDeploymentResponse - (*SkipStageRequest)(nil), // 52: grpc.service.webservice.SkipStageRequest - (*SkipStageResponse)(nil), // 53: grpc.service.webservice.SkipStageResponse - (*ApproveStageRequest)(nil), // 54: grpc.service.webservice.ApproveStageRequest - (*ApproveStageResponse)(nil), // 55: grpc.service.webservice.ApproveStageResponse - (*GetApplicationLiveStateRequest)(nil), // 56: grpc.service.webservice.GetApplicationLiveStateRequest - (*GetApplicationLiveStateResponse)(nil), // 57: grpc.service.webservice.GetApplicationLiveStateResponse - (*GetProjectRequest)(nil), // 58: grpc.service.webservice.GetProjectRequest - (*GetProjectResponse)(nil), // 59: grpc.service.webservice.GetProjectResponse - (*UpdateProjectStaticAdminRequest)(nil), // 60: grpc.service.webservice.UpdateProjectStaticAdminRequest - (*UpdateProjectStaticAdminResponse)(nil), // 61: grpc.service.webservice.UpdateProjectStaticAdminResponse - (*UpdateProjectSSOConfigRequest)(nil), // 62: grpc.service.webservice.UpdateProjectSSOConfigRequest - (*UpdateProjectSSOConfigResponse)(nil), // 63: grpc.service.webservice.UpdateProjectSSOConfigResponse - (*UpdateProjectRBACConfigRequest)(nil), // 64: grpc.service.webservice.UpdateProjectRBACConfigRequest - (*UpdateProjectRBACConfigResponse)(nil), // 65: grpc.service.webservice.UpdateProjectRBACConfigResponse - (*EnableStaticAdminRequest)(nil), // 66: grpc.service.webservice.EnableStaticAdminRequest - (*EnableStaticAdminResponse)(nil), // 67: grpc.service.webservice.EnableStaticAdminResponse - (*DisableStaticAdminRequest)(nil), // 68: grpc.service.webservice.DisableStaticAdminRequest - (*DisableStaticAdminResponse)(nil), // 69: grpc.service.webservice.DisableStaticAdminResponse - (*GetMeRequest)(nil), // 70: grpc.service.webservice.GetMeRequest - (*GetMeResponse)(nil), // 71: grpc.service.webservice.GetMeResponse - (*AddProjectRBACRoleRequest)(nil), // 72: grpc.service.webservice.AddProjectRBACRoleRequest - (*AddProjectRBACRoleResponse)(nil), // 73: grpc.service.webservice.AddProjectRBACRoleResponse - (*UpdateProjectRBACRoleRequest)(nil), // 74: grpc.service.webservice.UpdateProjectRBACRoleRequest - (*UpdateProjectRBACRoleResponse)(nil), // 75: grpc.service.webservice.UpdateProjectRBACRoleResponse - (*DeleteProjectRBACRoleRequest)(nil), // 76: grpc.service.webservice.DeleteProjectRBACRoleRequest - (*DeleteProjectRBACRoleResponse)(nil), // 77: grpc.service.webservice.DeleteProjectRBACRoleResponse - (*AddProjectUserGroupRequest)(nil), // 78: grpc.service.webservice.AddProjectUserGroupRequest - (*AddProjectUserGroupResponse)(nil), // 79: grpc.service.webservice.AddProjectUserGroupResponse - (*DeleteProjectUserGroupRequest)(nil), // 80: grpc.service.webservice.DeleteProjectUserGroupRequest - (*DeleteProjectUserGroupResponse)(nil), // 81: grpc.service.webservice.DeleteProjectUserGroupResponse - (*GetCommandRequest)(nil), // 82: grpc.service.webservice.GetCommandRequest - (*GetCommandResponse)(nil), // 83: grpc.service.webservice.GetCommandResponse - (*GenerateAPIKeyRequest)(nil), // 84: grpc.service.webservice.GenerateAPIKeyRequest - (*GenerateAPIKeyResponse)(nil), // 85: grpc.service.webservice.GenerateAPIKeyResponse - (*DisableAPIKeyRequest)(nil), // 86: grpc.service.webservice.DisableAPIKeyRequest - (*DisableAPIKeyResponse)(nil), // 87: grpc.service.webservice.DisableAPIKeyResponse - (*ListAPIKeysRequest)(nil), // 88: grpc.service.webservice.ListAPIKeysRequest - (*ListAPIKeysResponse)(nil), // 89: grpc.service.webservice.ListAPIKeysResponse - (*GetInsightDataRequest)(nil), // 90: grpc.service.webservice.GetInsightDataRequest - (*GetInsightDataResponse)(nil), // 91: grpc.service.webservice.GetInsightDataResponse - (*GetInsightApplicationCountRequest)(nil), // 92: grpc.service.webservice.GetInsightApplicationCountRequest - (*GetInsightApplicationCountResponse)(nil), // 93: grpc.service.webservice.GetInsightApplicationCountResponse - (*ListDeploymentChainsRequest)(nil), // 94: grpc.service.webservice.ListDeploymentChainsRequest - (*ListDeploymentChainsResponse)(nil), // 95: grpc.service.webservice.ListDeploymentChainsResponse - (*GetDeploymentChainRequest)(nil), // 96: grpc.service.webservice.GetDeploymentChainRequest - (*GetDeploymentChainResponse)(nil), // 97: grpc.service.webservice.GetDeploymentChainResponse - (*ListEventsRequest)(nil), // 98: grpc.service.webservice.ListEventsRequest - (*ListEventsResponse)(nil), // 99: grpc.service.webservice.ListEventsResponse - (*ListPipedsRequest_Options)(nil), // 100: grpc.service.webservice.ListPipedsRequest.Options - nil, // 101: grpc.service.webservice.AddApplicationRequest.DeployTargetsByPluginEntry - nil, // 102: grpc.service.webservice.AddApplicationRequest.LabelsEntry - nil, // 103: grpc.service.webservice.UpdateApplicationRequest.DeployTargetsByPluginEntry - (*ListApplicationsRequest_Options)(nil), // 104: grpc.service.webservice.ListApplicationsRequest.Options - nil, // 105: grpc.service.webservice.ListApplicationsRequest.Options.LabelsEntry - (*ListDeploymentsRequest_Options)(nil), // 106: grpc.service.webservice.ListDeploymentsRequest.Options - nil, // 107: grpc.service.webservice.ListDeploymentsRequest.Options.LabelsEntry - (*ListAPIKeysRequest_Options)(nil), // 108: grpc.service.webservice.ListAPIKeysRequest.Options - nil, // 109: grpc.service.webservice.GetInsightDataRequest.LabelsEntry - (*ListDeploymentChainsRequest_Options)(nil), // 110: grpc.service.webservice.ListDeploymentChainsRequest.Options - (*ListEventsRequest_Options)(nil), // 111: grpc.service.webservice.ListEventsRequest.Options - nil, // 112: grpc.service.webservice.ListEventsRequest.Options.LabelsEntry - (*model.Piped)(nil), // 113: model.Piped - (*model.ApplicationGitPath)(nil), // 114: model.ApplicationGitPath - (model.ApplicationKind)(0), // 115: model.ApplicationKind - (*model.Application)(nil), // 116: model.Application - (model.SyncStrategy)(0), // 117: model.SyncStrategy - (*model.ApplicationInfo)(nil), // 118: model.ApplicationInfo - (*model.Deployment)(nil), // 119: model.Deployment - (*model.LogBlock)(nil), // 120: model.LogBlock - (*model.ApplicationLiveStateSnapshot)(nil), // 121: model.ApplicationLiveStateSnapshot - (*model.Project)(nil), // 122: model.Project - (*model.ProjectSSOConfig)(nil), // 123: model.ProjectSSOConfig - (*model.ProjectRBACConfig)(nil), // 124: model.ProjectRBACConfig - (*model.ProjectRBACPolicy)(nil), // 125: model.ProjectRBACPolicy - (*model.Command)(nil), // 126: model.Command - (model.APIKey_Role)(0), // 127: model.APIKey.Role - (*model.APIKey)(nil), // 128: model.APIKey - (model.InsightMetricsKind)(0), // 129: model.InsightMetricsKind - (model.InsightResolution)(0), // 130: model.InsightResolution - (model.InsightResultType)(0), // 131: model.InsightResultType - (*model.InsightSample)(nil), // 132: model.InsightSample - (*model.InsightSampleStream)(nil), // 133: model.InsightSampleStream - (*model.InsightApplicationCount)(nil), // 134: model.InsightApplicationCount - (*model.DeploymentChain)(nil), // 135: model.DeploymentChain - (*model.Event)(nil), // 136: model.Event - (*wrapperspb.BoolValue)(nil), // 137: google.protobuf.BoolValue - (*model.DeployTargets)(nil), // 138: model.DeployTargets - (model.ApplicationSyncStatus)(0), // 139: model.ApplicationSyncStatus - (model.DeploymentStatus)(0), // 140: model.DeploymentStatus - (model.EventStatus)(0), // 141: model.EventStatus + (*RegisterPipedRequest)(nil), // 0: grpc.service.webservice.RegisterPipedRequest + (*RegisterPipedResponse)(nil), // 1: grpc.service.webservice.RegisterPipedResponse + (*UpdatePipedRequest)(nil), // 2: grpc.service.webservice.UpdatePipedRequest + (*UpdatePipedResponse)(nil), // 3: grpc.service.webservice.UpdatePipedResponse + (*RecreatePipedKeyRequest)(nil), // 4: grpc.service.webservice.RecreatePipedKeyRequest + (*RecreatePipedKeyResponse)(nil), // 5: grpc.service.webservice.RecreatePipedKeyResponse + (*DeleteOldPipedKeysRequest)(nil), // 6: grpc.service.webservice.DeleteOldPipedKeysRequest + (*DeleteOldPipedKeysResponse)(nil), // 7: grpc.service.webservice.DeleteOldPipedKeysResponse + (*EnablePipedRequest)(nil), // 8: grpc.service.webservice.EnablePipedRequest + (*EnablePipedResponse)(nil), // 9: grpc.service.webservice.EnablePipedResponse + (*DisablePipedRequest)(nil), // 10: grpc.service.webservice.DisablePipedRequest + (*DisablePipedResponse)(nil), // 11: grpc.service.webservice.DisablePipedResponse + (*ListPipedsRequest)(nil), // 12: grpc.service.webservice.ListPipedsRequest + (*ListPipedsResponse)(nil), // 13: grpc.service.webservice.ListPipedsResponse + (*GetPipedRequest)(nil), // 14: grpc.service.webservice.GetPipedRequest + (*GetPipedResponse)(nil), // 15: grpc.service.webservice.GetPipedResponse + (*UpdatePipedDesiredVersionRequest)(nil), // 16: grpc.service.webservice.UpdatePipedDesiredVersionRequest + (*UpdatePipedDesiredVersionResponse)(nil), // 17: grpc.service.webservice.UpdatePipedDesiredVersionResponse + (*RestartPipedRequest)(nil), // 18: grpc.service.webservice.RestartPipedRequest + (*RestartPipedResponse)(nil), // 19: grpc.service.webservice.RestartPipedResponse + (*ListReleasedVersionsRequest)(nil), // 20: grpc.service.webservice.ListReleasedVersionsRequest + (*ListReleasedVersionsResponse)(nil), // 21: grpc.service.webservice.ListReleasedVersionsResponse + (*ListDeprecatedNotesRequest)(nil), // 22: grpc.service.webservice.ListDeprecatedNotesRequest + (*ListDeprecatedNotesResponse)(nil), // 23: grpc.service.webservice.ListDeprecatedNotesResponse + (*AddApplicationRequest)(nil), // 24: grpc.service.webservice.AddApplicationRequest + (*AddApplicationResponse)(nil), // 25: grpc.service.webservice.AddApplicationResponse + (*UpdateApplicationRequest)(nil), // 26: grpc.service.webservice.UpdateApplicationRequest + (*UpdateApplicationResponse)(nil), // 27: grpc.service.webservice.UpdateApplicationResponse + (*EnableApplicationRequest)(nil), // 28: grpc.service.webservice.EnableApplicationRequest + (*EnableApplicationResponse)(nil), // 29: grpc.service.webservice.EnableApplicationResponse + (*DisableApplicationRequest)(nil), // 30: grpc.service.webservice.DisableApplicationRequest + (*DisableApplicationResponse)(nil), // 31: grpc.service.webservice.DisableApplicationResponse + (*DeleteApplicationRequest)(nil), // 32: grpc.service.webservice.DeleteApplicationRequest + (*DeleteApplicationResponse)(nil), // 33: grpc.service.webservice.DeleteApplicationResponse + (*ListApplicationsRequest)(nil), // 34: grpc.service.webservice.ListApplicationsRequest + (*ListApplicationsResponse)(nil), // 35: grpc.service.webservice.ListApplicationsResponse + (*SyncApplicationRequest)(nil), // 36: grpc.service.webservice.SyncApplicationRequest + (*SyncApplicationResponse)(nil), // 37: grpc.service.webservice.SyncApplicationResponse + (*GetApplicationRequest)(nil), // 38: grpc.service.webservice.GetApplicationRequest + (*GetApplicationResponse)(nil), // 39: grpc.service.webservice.GetApplicationResponse + (*GenerateApplicationSealedSecretRequest)(nil), // 40: grpc.service.webservice.GenerateApplicationSealedSecretRequest + (*GenerateApplicationSealedSecretResponse)(nil), // 41: grpc.service.webservice.GenerateApplicationSealedSecretResponse + (*ListUnregisteredApplicationsRequest)(nil), // 42: grpc.service.webservice.ListUnregisteredApplicationsRequest + (*ListUnregisteredApplicationsResponse)(nil), // 43: grpc.service.webservice.ListUnregisteredApplicationsResponse + (*ListDeploymentsRequest)(nil), // 44: grpc.service.webservice.ListDeploymentsRequest + (*ListDeploymentsResponse)(nil), // 45: grpc.service.webservice.ListDeploymentsResponse + (*GetDeploymentRequest)(nil), // 46: grpc.service.webservice.GetDeploymentRequest + (*GetDeploymentResponse)(nil), // 47: grpc.service.webservice.GetDeploymentResponse + (*GetStageLogRequest)(nil), // 48: grpc.service.webservice.GetStageLogRequest + (*GetStageLogResponse)(nil), // 49: grpc.service.webservice.GetStageLogResponse + (*CancelDeploymentRequest)(nil), // 50: grpc.service.webservice.CancelDeploymentRequest + (*CancelDeploymentResponse)(nil), // 51: grpc.service.webservice.CancelDeploymentResponse + (*SkipStageRequest)(nil), // 52: grpc.service.webservice.SkipStageRequest + (*SkipStageResponse)(nil), // 53: grpc.service.webservice.SkipStageResponse + (*ApproveStageRequest)(nil), // 54: grpc.service.webservice.ApproveStageRequest + (*ApproveStageResponse)(nil), // 55: grpc.service.webservice.ApproveStageResponse + (*ListDeploymentTracesRequest)(nil), // 56: grpc.service.webservice.ListDeploymentTracesRequest + (*ListDeploymentTracesResponse)(nil), // 57: grpc.service.webservice.ListDeploymentTracesResponse + (*GetApplicationLiveStateRequest)(nil), // 58: grpc.service.webservice.GetApplicationLiveStateRequest + (*GetApplicationLiveStateResponse)(nil), // 59: grpc.service.webservice.GetApplicationLiveStateResponse + (*GetProjectRequest)(nil), // 60: grpc.service.webservice.GetProjectRequest + (*GetProjectResponse)(nil), // 61: grpc.service.webservice.GetProjectResponse + (*UpdateProjectStaticAdminRequest)(nil), // 62: grpc.service.webservice.UpdateProjectStaticAdminRequest + (*UpdateProjectStaticAdminResponse)(nil), // 63: grpc.service.webservice.UpdateProjectStaticAdminResponse + (*UpdateProjectSSOConfigRequest)(nil), // 64: grpc.service.webservice.UpdateProjectSSOConfigRequest + (*UpdateProjectSSOConfigResponse)(nil), // 65: grpc.service.webservice.UpdateProjectSSOConfigResponse + (*UpdateProjectRBACConfigRequest)(nil), // 66: grpc.service.webservice.UpdateProjectRBACConfigRequest + (*UpdateProjectRBACConfigResponse)(nil), // 67: grpc.service.webservice.UpdateProjectRBACConfigResponse + (*EnableStaticAdminRequest)(nil), // 68: grpc.service.webservice.EnableStaticAdminRequest + (*EnableStaticAdminResponse)(nil), // 69: grpc.service.webservice.EnableStaticAdminResponse + (*DisableStaticAdminRequest)(nil), // 70: grpc.service.webservice.DisableStaticAdminRequest + (*DisableStaticAdminResponse)(nil), // 71: grpc.service.webservice.DisableStaticAdminResponse + (*GetMeRequest)(nil), // 72: grpc.service.webservice.GetMeRequest + (*GetMeResponse)(nil), // 73: grpc.service.webservice.GetMeResponse + (*AddProjectRBACRoleRequest)(nil), // 74: grpc.service.webservice.AddProjectRBACRoleRequest + (*AddProjectRBACRoleResponse)(nil), // 75: grpc.service.webservice.AddProjectRBACRoleResponse + (*UpdateProjectRBACRoleRequest)(nil), // 76: grpc.service.webservice.UpdateProjectRBACRoleRequest + (*UpdateProjectRBACRoleResponse)(nil), // 77: grpc.service.webservice.UpdateProjectRBACRoleResponse + (*DeleteProjectRBACRoleRequest)(nil), // 78: grpc.service.webservice.DeleteProjectRBACRoleRequest + (*DeleteProjectRBACRoleResponse)(nil), // 79: grpc.service.webservice.DeleteProjectRBACRoleResponse + (*AddProjectUserGroupRequest)(nil), // 80: grpc.service.webservice.AddProjectUserGroupRequest + (*AddProjectUserGroupResponse)(nil), // 81: grpc.service.webservice.AddProjectUserGroupResponse + (*DeleteProjectUserGroupRequest)(nil), // 82: grpc.service.webservice.DeleteProjectUserGroupRequest + (*DeleteProjectUserGroupResponse)(nil), // 83: grpc.service.webservice.DeleteProjectUserGroupResponse + (*GetCommandRequest)(nil), // 84: grpc.service.webservice.GetCommandRequest + (*GetCommandResponse)(nil), // 85: grpc.service.webservice.GetCommandResponse + (*GenerateAPIKeyRequest)(nil), // 86: grpc.service.webservice.GenerateAPIKeyRequest + (*GenerateAPIKeyResponse)(nil), // 87: grpc.service.webservice.GenerateAPIKeyResponse + (*DisableAPIKeyRequest)(nil), // 88: grpc.service.webservice.DisableAPIKeyRequest + (*DisableAPIKeyResponse)(nil), // 89: grpc.service.webservice.DisableAPIKeyResponse + (*ListAPIKeysRequest)(nil), // 90: grpc.service.webservice.ListAPIKeysRequest + (*ListAPIKeysResponse)(nil), // 91: grpc.service.webservice.ListAPIKeysResponse + (*GetInsightDataRequest)(nil), // 92: grpc.service.webservice.GetInsightDataRequest + (*GetInsightDataResponse)(nil), // 93: grpc.service.webservice.GetInsightDataResponse + (*GetInsightApplicationCountRequest)(nil), // 94: grpc.service.webservice.GetInsightApplicationCountRequest + (*GetInsightApplicationCountResponse)(nil), // 95: grpc.service.webservice.GetInsightApplicationCountResponse + (*ListDeploymentChainsRequest)(nil), // 96: grpc.service.webservice.ListDeploymentChainsRequest + (*ListDeploymentChainsResponse)(nil), // 97: grpc.service.webservice.ListDeploymentChainsResponse + (*GetDeploymentChainRequest)(nil), // 98: grpc.service.webservice.GetDeploymentChainRequest + (*GetDeploymentChainResponse)(nil), // 99: grpc.service.webservice.GetDeploymentChainResponse + (*ListEventsRequest)(nil), // 100: grpc.service.webservice.ListEventsRequest + (*ListEventsResponse)(nil), // 101: grpc.service.webservice.ListEventsResponse + (*ListPipedsRequest_Options)(nil), // 102: grpc.service.webservice.ListPipedsRequest.Options + nil, // 103: grpc.service.webservice.AddApplicationRequest.DeployTargetsByPluginEntry + nil, // 104: grpc.service.webservice.AddApplicationRequest.LabelsEntry + nil, // 105: grpc.service.webservice.UpdateApplicationRequest.DeployTargetsByPluginEntry + (*ListApplicationsRequest_Options)(nil), // 106: grpc.service.webservice.ListApplicationsRequest.Options + nil, // 107: grpc.service.webservice.ListApplicationsRequest.Options.LabelsEntry + (*ListDeploymentsRequest_Options)(nil), // 108: grpc.service.webservice.ListDeploymentsRequest.Options + nil, // 109: grpc.service.webservice.ListDeploymentsRequest.Options.LabelsEntry + (*ListDeploymentTracesRequest_Options)(nil), // 110: grpc.service.webservice.ListDeploymentTracesRequest.Options + (*ListDeploymentTracesResponse_DeploymentTraceRes)(nil), // 111: grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes + (*ListAPIKeysRequest_Options)(nil), // 112: grpc.service.webservice.ListAPIKeysRequest.Options + nil, // 113: grpc.service.webservice.GetInsightDataRequest.LabelsEntry + (*ListDeploymentChainsRequest_Options)(nil), // 114: grpc.service.webservice.ListDeploymentChainsRequest.Options + (*ListEventsRequest_Options)(nil), // 115: grpc.service.webservice.ListEventsRequest.Options + nil, // 116: grpc.service.webservice.ListEventsRequest.Options.LabelsEntry + (*model.Piped)(nil), // 117: model.Piped + (*model.ApplicationGitPath)(nil), // 118: model.ApplicationGitPath + (model.ApplicationKind)(0), // 119: model.ApplicationKind + (*model.Application)(nil), // 120: model.Application + (model.SyncStrategy)(0), // 121: model.SyncStrategy + (*model.ApplicationInfo)(nil), // 122: model.ApplicationInfo + (*model.Deployment)(nil), // 123: model.Deployment + (*model.LogBlock)(nil), // 124: model.LogBlock + (*model.ApplicationLiveStateSnapshot)(nil), // 125: model.ApplicationLiveStateSnapshot + (*model.Project)(nil), // 126: model.Project + (*model.ProjectSSOConfig)(nil), // 127: model.ProjectSSOConfig + (*model.ProjectRBACConfig)(nil), // 128: model.ProjectRBACConfig + (*model.ProjectRBACPolicy)(nil), // 129: model.ProjectRBACPolicy + (*model.Command)(nil), // 130: model.Command + (model.APIKey_Role)(0), // 131: model.APIKey.Role + (*model.APIKey)(nil), // 132: model.APIKey + (model.InsightMetricsKind)(0), // 133: model.InsightMetricsKind + (model.InsightResolution)(0), // 134: model.InsightResolution + (model.InsightResultType)(0), // 135: model.InsightResultType + (*model.InsightSample)(nil), // 136: model.InsightSample + (*model.InsightSampleStream)(nil), // 137: model.InsightSampleStream + (*model.InsightApplicationCount)(nil), // 138: model.InsightApplicationCount + (*model.DeploymentChain)(nil), // 139: model.DeploymentChain + (*model.Event)(nil), // 140: model.Event + (*wrapperspb.BoolValue)(nil), // 141: google.protobuf.BoolValue + (*model.DeployTargets)(nil), // 142: model.DeployTargets + (model.ApplicationSyncStatus)(0), // 143: model.ApplicationSyncStatus + (model.DeploymentStatus)(0), // 144: model.DeploymentStatus + (*model.DeploymentTrace)(nil), // 145: model.DeploymentTrace + (model.EventStatus)(0), // 146: model.EventStatus } var file_pkg_app_server_service_webservice_service_proto_depIdxs = []int32{ - 100, // 0: grpc.service.webservice.ListPipedsRequest.options:type_name -> grpc.service.webservice.ListPipedsRequest.Options - 113, // 1: grpc.service.webservice.ListPipedsResponse.pipeds:type_name -> model.Piped - 113, // 2: grpc.service.webservice.GetPipedResponse.piped:type_name -> model.Piped - 114, // 3: grpc.service.webservice.AddApplicationRequest.git_path:type_name -> model.ApplicationGitPath - 115, // 4: grpc.service.webservice.AddApplicationRequest.kind:type_name -> model.ApplicationKind - 101, // 5: grpc.service.webservice.AddApplicationRequest.deploy_targets_by_plugin:type_name -> grpc.service.webservice.AddApplicationRequest.DeployTargetsByPluginEntry - 102, // 6: grpc.service.webservice.AddApplicationRequest.labels:type_name -> grpc.service.webservice.AddApplicationRequest.LabelsEntry - 115, // 7: grpc.service.webservice.UpdateApplicationRequest.kind:type_name -> model.ApplicationKind - 103, // 8: grpc.service.webservice.UpdateApplicationRequest.deploy_targets_by_plugin:type_name -> grpc.service.webservice.UpdateApplicationRequest.DeployTargetsByPluginEntry - 104, // 9: grpc.service.webservice.ListApplicationsRequest.options:type_name -> grpc.service.webservice.ListApplicationsRequest.Options - 116, // 10: grpc.service.webservice.ListApplicationsResponse.applications:type_name -> model.Application - 117, // 11: grpc.service.webservice.SyncApplicationRequest.sync_strategy:type_name -> model.SyncStrategy - 116, // 12: grpc.service.webservice.GetApplicationResponse.application:type_name -> model.Application - 118, // 13: grpc.service.webservice.ListUnregisteredApplicationsResponse.applications:type_name -> model.ApplicationInfo - 106, // 14: grpc.service.webservice.ListDeploymentsRequest.options:type_name -> grpc.service.webservice.ListDeploymentsRequest.Options - 119, // 15: grpc.service.webservice.ListDeploymentsResponse.deployments:type_name -> model.Deployment - 119, // 16: grpc.service.webservice.GetDeploymentResponse.deployment:type_name -> model.Deployment - 120, // 17: grpc.service.webservice.GetStageLogResponse.blocks:type_name -> model.LogBlock - 121, // 18: grpc.service.webservice.GetApplicationLiveStateResponse.snapshot:type_name -> model.ApplicationLiveStateSnapshot - 122, // 19: grpc.service.webservice.GetProjectResponse.project:type_name -> model.Project - 123, // 20: grpc.service.webservice.UpdateProjectSSOConfigRequest.sso:type_name -> model.ProjectSSOConfig - 124, // 21: grpc.service.webservice.UpdateProjectRBACConfigRequest.rbac:type_name -> model.ProjectRBACConfig - 125, // 22: grpc.service.webservice.AddProjectRBACRoleRequest.policies:type_name -> model.ProjectRBACPolicy - 125, // 23: grpc.service.webservice.UpdateProjectRBACRoleRequest.policies:type_name -> model.ProjectRBACPolicy - 126, // 24: grpc.service.webservice.GetCommandResponse.command:type_name -> model.Command - 127, // 25: grpc.service.webservice.GenerateAPIKeyRequest.role:type_name -> model.APIKey.Role - 108, // 26: grpc.service.webservice.ListAPIKeysRequest.options:type_name -> grpc.service.webservice.ListAPIKeysRequest.Options - 128, // 27: grpc.service.webservice.ListAPIKeysResponse.keys:type_name -> model.APIKey - 129, // 28: grpc.service.webservice.GetInsightDataRequest.metrics_kind:type_name -> model.InsightMetricsKind - 130, // 29: grpc.service.webservice.GetInsightDataRequest.resolution:type_name -> model.InsightResolution - 109, // 30: grpc.service.webservice.GetInsightDataRequest.labels:type_name -> grpc.service.webservice.GetInsightDataRequest.LabelsEntry - 131, // 31: grpc.service.webservice.GetInsightDataResponse.type:type_name -> model.InsightResultType - 132, // 32: grpc.service.webservice.GetInsightDataResponse.vector:type_name -> model.InsightSample - 133, // 33: grpc.service.webservice.GetInsightDataResponse.matrix:type_name -> model.InsightSampleStream - 134, // 34: grpc.service.webservice.GetInsightApplicationCountResponse.counts:type_name -> model.InsightApplicationCount - 110, // 35: grpc.service.webservice.ListDeploymentChainsRequest.options:type_name -> grpc.service.webservice.ListDeploymentChainsRequest.Options - 135, // 36: grpc.service.webservice.ListDeploymentChainsResponse.deployment_chains:type_name -> model.DeploymentChain - 135, // 37: grpc.service.webservice.GetDeploymentChainResponse.deployment_chain:type_name -> model.DeploymentChain - 111, // 38: grpc.service.webservice.ListEventsRequest.options:type_name -> grpc.service.webservice.ListEventsRequest.Options - 136, // 39: grpc.service.webservice.ListEventsResponse.events:type_name -> model.Event - 137, // 40: grpc.service.webservice.ListPipedsRequest.Options.enabled:type_name -> google.protobuf.BoolValue - 138, // 41: grpc.service.webservice.AddApplicationRequest.DeployTargetsByPluginEntry.value:type_name -> model.DeployTargets - 138, // 42: grpc.service.webservice.UpdateApplicationRequest.DeployTargetsByPluginEntry.value:type_name -> model.DeployTargets - 137, // 43: grpc.service.webservice.ListApplicationsRequest.Options.enabled:type_name -> google.protobuf.BoolValue - 115, // 44: grpc.service.webservice.ListApplicationsRequest.Options.kinds:type_name -> model.ApplicationKind - 139, // 45: grpc.service.webservice.ListApplicationsRequest.Options.sync_statuses:type_name -> model.ApplicationSyncStatus - 105, // 46: grpc.service.webservice.ListApplicationsRequest.Options.labels:type_name -> grpc.service.webservice.ListApplicationsRequest.Options.LabelsEntry - 140, // 47: grpc.service.webservice.ListDeploymentsRequest.Options.statuses:type_name -> model.DeploymentStatus - 115, // 48: grpc.service.webservice.ListDeploymentsRequest.Options.kinds:type_name -> model.ApplicationKind - 107, // 49: grpc.service.webservice.ListDeploymentsRequest.Options.labels:type_name -> grpc.service.webservice.ListDeploymentsRequest.Options.LabelsEntry - 137, // 50: grpc.service.webservice.ListAPIKeysRequest.Options.enabled:type_name -> google.protobuf.BoolValue - 141, // 51: grpc.service.webservice.ListEventsRequest.Options.statuses:type_name -> model.EventStatus - 112, // 52: grpc.service.webservice.ListEventsRequest.Options.labels:type_name -> grpc.service.webservice.ListEventsRequest.Options.LabelsEntry - 0, // 53: grpc.service.webservice.WebService.RegisterPiped:input_type -> grpc.service.webservice.RegisterPipedRequest - 2, // 54: grpc.service.webservice.WebService.UpdatePiped:input_type -> grpc.service.webservice.UpdatePipedRequest - 4, // 55: grpc.service.webservice.WebService.RecreatePipedKey:input_type -> grpc.service.webservice.RecreatePipedKeyRequest - 6, // 56: grpc.service.webservice.WebService.DeleteOldPipedKeys:input_type -> grpc.service.webservice.DeleteOldPipedKeysRequest - 8, // 57: grpc.service.webservice.WebService.EnablePiped:input_type -> grpc.service.webservice.EnablePipedRequest - 10, // 58: grpc.service.webservice.WebService.DisablePiped:input_type -> grpc.service.webservice.DisablePipedRequest - 12, // 59: grpc.service.webservice.WebService.ListPipeds:input_type -> grpc.service.webservice.ListPipedsRequest - 14, // 60: grpc.service.webservice.WebService.GetPiped:input_type -> grpc.service.webservice.GetPipedRequest - 16, // 61: grpc.service.webservice.WebService.UpdatePipedDesiredVersion:input_type -> grpc.service.webservice.UpdatePipedDesiredVersionRequest - 18, // 62: grpc.service.webservice.WebService.RestartPiped:input_type -> grpc.service.webservice.RestartPipedRequest - 20, // 63: grpc.service.webservice.WebService.ListReleasedVersions:input_type -> grpc.service.webservice.ListReleasedVersionsRequest - 22, // 64: grpc.service.webservice.WebService.ListDeprecatedNotes:input_type -> grpc.service.webservice.ListDeprecatedNotesRequest - 24, // 65: grpc.service.webservice.WebService.AddApplication:input_type -> grpc.service.webservice.AddApplicationRequest - 26, // 66: grpc.service.webservice.WebService.UpdateApplication:input_type -> grpc.service.webservice.UpdateApplicationRequest - 28, // 67: grpc.service.webservice.WebService.EnableApplication:input_type -> grpc.service.webservice.EnableApplicationRequest - 30, // 68: grpc.service.webservice.WebService.DisableApplication:input_type -> grpc.service.webservice.DisableApplicationRequest - 32, // 69: grpc.service.webservice.WebService.DeleteApplication:input_type -> grpc.service.webservice.DeleteApplicationRequest - 34, // 70: grpc.service.webservice.WebService.ListApplications:input_type -> grpc.service.webservice.ListApplicationsRequest - 36, // 71: grpc.service.webservice.WebService.SyncApplication:input_type -> grpc.service.webservice.SyncApplicationRequest - 38, // 72: grpc.service.webservice.WebService.GetApplication:input_type -> grpc.service.webservice.GetApplicationRequest - 40, // 73: grpc.service.webservice.WebService.GenerateApplicationSealedSecret:input_type -> grpc.service.webservice.GenerateApplicationSealedSecretRequest - 42, // 74: grpc.service.webservice.WebService.ListUnregisteredApplications:input_type -> grpc.service.webservice.ListUnregisteredApplicationsRequest - 44, // 75: grpc.service.webservice.WebService.ListDeployments:input_type -> grpc.service.webservice.ListDeploymentsRequest - 46, // 76: grpc.service.webservice.WebService.GetDeployment:input_type -> grpc.service.webservice.GetDeploymentRequest - 48, // 77: grpc.service.webservice.WebService.GetStageLog:input_type -> grpc.service.webservice.GetStageLogRequest - 50, // 78: grpc.service.webservice.WebService.CancelDeployment:input_type -> grpc.service.webservice.CancelDeploymentRequest - 52, // 79: grpc.service.webservice.WebService.SkipStage:input_type -> grpc.service.webservice.SkipStageRequest - 54, // 80: grpc.service.webservice.WebService.ApproveStage:input_type -> grpc.service.webservice.ApproveStageRequest - 56, // 81: grpc.service.webservice.WebService.GetApplicationLiveState:input_type -> grpc.service.webservice.GetApplicationLiveStateRequest - 58, // 82: grpc.service.webservice.WebService.GetProject:input_type -> grpc.service.webservice.GetProjectRequest - 60, // 83: grpc.service.webservice.WebService.UpdateProjectStaticAdmin:input_type -> grpc.service.webservice.UpdateProjectStaticAdminRequest - 66, // 84: grpc.service.webservice.WebService.EnableStaticAdmin:input_type -> grpc.service.webservice.EnableStaticAdminRequest - 68, // 85: grpc.service.webservice.WebService.DisableStaticAdmin:input_type -> grpc.service.webservice.DisableStaticAdminRequest - 62, // 86: grpc.service.webservice.WebService.UpdateProjectSSOConfig:input_type -> grpc.service.webservice.UpdateProjectSSOConfigRequest - 64, // 87: grpc.service.webservice.WebService.UpdateProjectRBACConfig:input_type -> grpc.service.webservice.UpdateProjectRBACConfigRequest - 70, // 88: grpc.service.webservice.WebService.GetMe:input_type -> grpc.service.webservice.GetMeRequest - 72, // 89: grpc.service.webservice.WebService.AddProjectRBACRole:input_type -> grpc.service.webservice.AddProjectRBACRoleRequest - 74, // 90: grpc.service.webservice.WebService.UpdateProjectRBACRole:input_type -> grpc.service.webservice.UpdateProjectRBACRoleRequest - 76, // 91: grpc.service.webservice.WebService.DeleteProjectRBACRole:input_type -> grpc.service.webservice.DeleteProjectRBACRoleRequest - 78, // 92: grpc.service.webservice.WebService.AddProjectUserGroup:input_type -> grpc.service.webservice.AddProjectUserGroupRequest - 80, // 93: grpc.service.webservice.WebService.DeleteProjectUserGroup:input_type -> grpc.service.webservice.DeleteProjectUserGroupRequest - 82, // 94: grpc.service.webservice.WebService.GetCommand:input_type -> grpc.service.webservice.GetCommandRequest - 84, // 95: grpc.service.webservice.WebService.GenerateAPIKey:input_type -> grpc.service.webservice.GenerateAPIKeyRequest - 86, // 96: grpc.service.webservice.WebService.DisableAPIKey:input_type -> grpc.service.webservice.DisableAPIKeyRequest - 88, // 97: grpc.service.webservice.WebService.ListAPIKeys:input_type -> grpc.service.webservice.ListAPIKeysRequest - 90, // 98: grpc.service.webservice.WebService.GetInsightData:input_type -> grpc.service.webservice.GetInsightDataRequest - 92, // 99: grpc.service.webservice.WebService.GetInsightApplicationCount:input_type -> grpc.service.webservice.GetInsightApplicationCountRequest - 94, // 100: grpc.service.webservice.WebService.ListDeploymentChains:input_type -> grpc.service.webservice.ListDeploymentChainsRequest - 96, // 101: grpc.service.webservice.WebService.GetDeploymentChain:input_type -> grpc.service.webservice.GetDeploymentChainRequest - 98, // 102: grpc.service.webservice.WebService.ListEvents:input_type -> grpc.service.webservice.ListEventsRequest - 1, // 103: grpc.service.webservice.WebService.RegisterPiped:output_type -> grpc.service.webservice.RegisterPipedResponse - 3, // 104: grpc.service.webservice.WebService.UpdatePiped:output_type -> grpc.service.webservice.UpdatePipedResponse - 5, // 105: grpc.service.webservice.WebService.RecreatePipedKey:output_type -> grpc.service.webservice.RecreatePipedKeyResponse - 7, // 106: grpc.service.webservice.WebService.DeleteOldPipedKeys:output_type -> grpc.service.webservice.DeleteOldPipedKeysResponse - 9, // 107: grpc.service.webservice.WebService.EnablePiped:output_type -> grpc.service.webservice.EnablePipedResponse - 11, // 108: grpc.service.webservice.WebService.DisablePiped:output_type -> grpc.service.webservice.DisablePipedResponse - 13, // 109: grpc.service.webservice.WebService.ListPipeds:output_type -> grpc.service.webservice.ListPipedsResponse - 15, // 110: grpc.service.webservice.WebService.GetPiped:output_type -> grpc.service.webservice.GetPipedResponse - 17, // 111: grpc.service.webservice.WebService.UpdatePipedDesiredVersion:output_type -> grpc.service.webservice.UpdatePipedDesiredVersionResponse - 19, // 112: grpc.service.webservice.WebService.RestartPiped:output_type -> grpc.service.webservice.RestartPipedResponse - 21, // 113: grpc.service.webservice.WebService.ListReleasedVersions:output_type -> grpc.service.webservice.ListReleasedVersionsResponse - 23, // 114: grpc.service.webservice.WebService.ListDeprecatedNotes:output_type -> grpc.service.webservice.ListDeprecatedNotesResponse - 25, // 115: grpc.service.webservice.WebService.AddApplication:output_type -> grpc.service.webservice.AddApplicationResponse - 27, // 116: grpc.service.webservice.WebService.UpdateApplication:output_type -> grpc.service.webservice.UpdateApplicationResponse - 29, // 117: grpc.service.webservice.WebService.EnableApplication:output_type -> grpc.service.webservice.EnableApplicationResponse - 31, // 118: grpc.service.webservice.WebService.DisableApplication:output_type -> grpc.service.webservice.DisableApplicationResponse - 33, // 119: grpc.service.webservice.WebService.DeleteApplication:output_type -> grpc.service.webservice.DeleteApplicationResponse - 35, // 120: grpc.service.webservice.WebService.ListApplications:output_type -> grpc.service.webservice.ListApplicationsResponse - 37, // 121: grpc.service.webservice.WebService.SyncApplication:output_type -> grpc.service.webservice.SyncApplicationResponse - 39, // 122: grpc.service.webservice.WebService.GetApplication:output_type -> grpc.service.webservice.GetApplicationResponse - 41, // 123: grpc.service.webservice.WebService.GenerateApplicationSealedSecret:output_type -> grpc.service.webservice.GenerateApplicationSealedSecretResponse - 43, // 124: grpc.service.webservice.WebService.ListUnregisteredApplications:output_type -> grpc.service.webservice.ListUnregisteredApplicationsResponse - 45, // 125: grpc.service.webservice.WebService.ListDeployments:output_type -> grpc.service.webservice.ListDeploymentsResponse - 47, // 126: grpc.service.webservice.WebService.GetDeployment:output_type -> grpc.service.webservice.GetDeploymentResponse - 49, // 127: grpc.service.webservice.WebService.GetStageLog:output_type -> grpc.service.webservice.GetStageLogResponse - 51, // 128: grpc.service.webservice.WebService.CancelDeployment:output_type -> grpc.service.webservice.CancelDeploymentResponse - 53, // 129: grpc.service.webservice.WebService.SkipStage:output_type -> grpc.service.webservice.SkipStageResponse - 55, // 130: grpc.service.webservice.WebService.ApproveStage:output_type -> grpc.service.webservice.ApproveStageResponse - 57, // 131: grpc.service.webservice.WebService.GetApplicationLiveState:output_type -> grpc.service.webservice.GetApplicationLiveStateResponse - 59, // 132: grpc.service.webservice.WebService.GetProject:output_type -> grpc.service.webservice.GetProjectResponse - 61, // 133: grpc.service.webservice.WebService.UpdateProjectStaticAdmin:output_type -> grpc.service.webservice.UpdateProjectStaticAdminResponse - 67, // 134: grpc.service.webservice.WebService.EnableStaticAdmin:output_type -> grpc.service.webservice.EnableStaticAdminResponse - 69, // 135: grpc.service.webservice.WebService.DisableStaticAdmin:output_type -> grpc.service.webservice.DisableStaticAdminResponse - 63, // 136: grpc.service.webservice.WebService.UpdateProjectSSOConfig:output_type -> grpc.service.webservice.UpdateProjectSSOConfigResponse - 65, // 137: grpc.service.webservice.WebService.UpdateProjectRBACConfig:output_type -> grpc.service.webservice.UpdateProjectRBACConfigResponse - 71, // 138: grpc.service.webservice.WebService.GetMe:output_type -> grpc.service.webservice.GetMeResponse - 73, // 139: grpc.service.webservice.WebService.AddProjectRBACRole:output_type -> grpc.service.webservice.AddProjectRBACRoleResponse - 75, // 140: grpc.service.webservice.WebService.UpdateProjectRBACRole:output_type -> grpc.service.webservice.UpdateProjectRBACRoleResponse - 77, // 141: grpc.service.webservice.WebService.DeleteProjectRBACRole:output_type -> grpc.service.webservice.DeleteProjectRBACRoleResponse - 79, // 142: grpc.service.webservice.WebService.AddProjectUserGroup:output_type -> grpc.service.webservice.AddProjectUserGroupResponse - 81, // 143: grpc.service.webservice.WebService.DeleteProjectUserGroup:output_type -> grpc.service.webservice.DeleteProjectUserGroupResponse - 83, // 144: grpc.service.webservice.WebService.GetCommand:output_type -> grpc.service.webservice.GetCommandResponse - 85, // 145: grpc.service.webservice.WebService.GenerateAPIKey:output_type -> grpc.service.webservice.GenerateAPIKeyResponse - 87, // 146: grpc.service.webservice.WebService.DisableAPIKey:output_type -> grpc.service.webservice.DisableAPIKeyResponse - 89, // 147: grpc.service.webservice.WebService.ListAPIKeys:output_type -> grpc.service.webservice.ListAPIKeysResponse - 91, // 148: grpc.service.webservice.WebService.GetInsightData:output_type -> grpc.service.webservice.GetInsightDataResponse - 93, // 149: grpc.service.webservice.WebService.GetInsightApplicationCount:output_type -> grpc.service.webservice.GetInsightApplicationCountResponse - 95, // 150: grpc.service.webservice.WebService.ListDeploymentChains:output_type -> grpc.service.webservice.ListDeploymentChainsResponse - 97, // 151: grpc.service.webservice.WebService.GetDeploymentChain:output_type -> grpc.service.webservice.GetDeploymentChainResponse - 99, // 152: grpc.service.webservice.WebService.ListEvents:output_type -> grpc.service.webservice.ListEventsResponse - 103, // [103:153] is the sub-list for method output_type - 53, // [53:103] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 102, // 0: grpc.service.webservice.ListPipedsRequest.options:type_name -> grpc.service.webservice.ListPipedsRequest.Options + 117, // 1: grpc.service.webservice.ListPipedsResponse.pipeds:type_name -> model.Piped + 117, // 2: grpc.service.webservice.GetPipedResponse.piped:type_name -> model.Piped + 118, // 3: grpc.service.webservice.AddApplicationRequest.git_path:type_name -> model.ApplicationGitPath + 119, // 4: grpc.service.webservice.AddApplicationRequest.kind:type_name -> model.ApplicationKind + 103, // 5: grpc.service.webservice.AddApplicationRequest.deploy_targets_by_plugin:type_name -> grpc.service.webservice.AddApplicationRequest.DeployTargetsByPluginEntry + 104, // 6: grpc.service.webservice.AddApplicationRequest.labels:type_name -> grpc.service.webservice.AddApplicationRequest.LabelsEntry + 119, // 7: grpc.service.webservice.UpdateApplicationRequest.kind:type_name -> model.ApplicationKind + 105, // 8: grpc.service.webservice.UpdateApplicationRequest.deploy_targets_by_plugin:type_name -> grpc.service.webservice.UpdateApplicationRequest.DeployTargetsByPluginEntry + 106, // 9: grpc.service.webservice.ListApplicationsRequest.options:type_name -> grpc.service.webservice.ListApplicationsRequest.Options + 120, // 10: grpc.service.webservice.ListApplicationsResponse.applications:type_name -> model.Application + 121, // 11: grpc.service.webservice.SyncApplicationRequest.sync_strategy:type_name -> model.SyncStrategy + 120, // 12: grpc.service.webservice.GetApplicationResponse.application:type_name -> model.Application + 122, // 13: grpc.service.webservice.ListUnregisteredApplicationsResponse.applications:type_name -> model.ApplicationInfo + 108, // 14: grpc.service.webservice.ListDeploymentsRequest.options:type_name -> grpc.service.webservice.ListDeploymentsRequest.Options + 123, // 15: grpc.service.webservice.ListDeploymentsResponse.deployments:type_name -> model.Deployment + 123, // 16: grpc.service.webservice.GetDeploymentResponse.deployment:type_name -> model.Deployment + 124, // 17: grpc.service.webservice.GetStageLogResponse.blocks:type_name -> model.LogBlock + 110, // 18: grpc.service.webservice.ListDeploymentTracesRequest.options:type_name -> grpc.service.webservice.ListDeploymentTracesRequest.Options + 111, // 19: grpc.service.webservice.ListDeploymentTracesResponse.traces:type_name -> grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes + 125, // 20: grpc.service.webservice.GetApplicationLiveStateResponse.snapshot:type_name -> model.ApplicationLiveStateSnapshot + 126, // 21: grpc.service.webservice.GetProjectResponse.project:type_name -> model.Project + 127, // 22: grpc.service.webservice.UpdateProjectSSOConfigRequest.sso:type_name -> model.ProjectSSOConfig + 128, // 23: grpc.service.webservice.UpdateProjectRBACConfigRequest.rbac:type_name -> model.ProjectRBACConfig + 129, // 24: grpc.service.webservice.AddProjectRBACRoleRequest.policies:type_name -> model.ProjectRBACPolicy + 129, // 25: grpc.service.webservice.UpdateProjectRBACRoleRequest.policies:type_name -> model.ProjectRBACPolicy + 130, // 26: grpc.service.webservice.GetCommandResponse.command:type_name -> model.Command + 131, // 27: grpc.service.webservice.GenerateAPIKeyRequest.role:type_name -> model.APIKey.Role + 112, // 28: grpc.service.webservice.ListAPIKeysRequest.options:type_name -> grpc.service.webservice.ListAPIKeysRequest.Options + 132, // 29: grpc.service.webservice.ListAPIKeysResponse.keys:type_name -> model.APIKey + 133, // 30: grpc.service.webservice.GetInsightDataRequest.metrics_kind:type_name -> model.InsightMetricsKind + 134, // 31: grpc.service.webservice.GetInsightDataRequest.resolution:type_name -> model.InsightResolution + 113, // 32: grpc.service.webservice.GetInsightDataRequest.labels:type_name -> grpc.service.webservice.GetInsightDataRequest.LabelsEntry + 135, // 33: grpc.service.webservice.GetInsightDataResponse.type:type_name -> model.InsightResultType + 136, // 34: grpc.service.webservice.GetInsightDataResponse.vector:type_name -> model.InsightSample + 137, // 35: grpc.service.webservice.GetInsightDataResponse.matrix:type_name -> model.InsightSampleStream + 138, // 36: grpc.service.webservice.GetInsightApplicationCountResponse.counts:type_name -> model.InsightApplicationCount + 114, // 37: grpc.service.webservice.ListDeploymentChainsRequest.options:type_name -> grpc.service.webservice.ListDeploymentChainsRequest.Options + 139, // 38: grpc.service.webservice.ListDeploymentChainsResponse.deployment_chains:type_name -> model.DeploymentChain + 139, // 39: grpc.service.webservice.GetDeploymentChainResponse.deployment_chain:type_name -> model.DeploymentChain + 115, // 40: grpc.service.webservice.ListEventsRequest.options:type_name -> grpc.service.webservice.ListEventsRequest.Options + 140, // 41: grpc.service.webservice.ListEventsResponse.events:type_name -> model.Event + 141, // 42: grpc.service.webservice.ListPipedsRequest.Options.enabled:type_name -> google.protobuf.BoolValue + 142, // 43: grpc.service.webservice.AddApplicationRequest.DeployTargetsByPluginEntry.value:type_name -> model.DeployTargets + 142, // 44: grpc.service.webservice.UpdateApplicationRequest.DeployTargetsByPluginEntry.value:type_name -> model.DeployTargets + 141, // 45: grpc.service.webservice.ListApplicationsRequest.Options.enabled:type_name -> google.protobuf.BoolValue + 119, // 46: grpc.service.webservice.ListApplicationsRequest.Options.kinds:type_name -> model.ApplicationKind + 143, // 47: grpc.service.webservice.ListApplicationsRequest.Options.sync_statuses:type_name -> model.ApplicationSyncStatus + 107, // 48: grpc.service.webservice.ListApplicationsRequest.Options.labels:type_name -> grpc.service.webservice.ListApplicationsRequest.Options.LabelsEntry + 144, // 49: grpc.service.webservice.ListDeploymentsRequest.Options.statuses:type_name -> model.DeploymentStatus + 119, // 50: grpc.service.webservice.ListDeploymentsRequest.Options.kinds:type_name -> model.ApplicationKind + 109, // 51: grpc.service.webservice.ListDeploymentsRequest.Options.labels:type_name -> grpc.service.webservice.ListDeploymentsRequest.Options.LabelsEntry + 145, // 52: grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.trace:type_name -> model.DeploymentTrace + 123, // 53: grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.deployments:type_name -> model.Deployment + 141, // 54: grpc.service.webservice.ListAPIKeysRequest.Options.enabled:type_name -> google.protobuf.BoolValue + 146, // 55: grpc.service.webservice.ListEventsRequest.Options.statuses:type_name -> model.EventStatus + 116, // 56: grpc.service.webservice.ListEventsRequest.Options.labels:type_name -> grpc.service.webservice.ListEventsRequest.Options.LabelsEntry + 0, // 57: grpc.service.webservice.WebService.RegisterPiped:input_type -> grpc.service.webservice.RegisterPipedRequest + 2, // 58: grpc.service.webservice.WebService.UpdatePiped:input_type -> grpc.service.webservice.UpdatePipedRequest + 4, // 59: grpc.service.webservice.WebService.RecreatePipedKey:input_type -> grpc.service.webservice.RecreatePipedKeyRequest + 6, // 60: grpc.service.webservice.WebService.DeleteOldPipedKeys:input_type -> grpc.service.webservice.DeleteOldPipedKeysRequest + 8, // 61: grpc.service.webservice.WebService.EnablePiped:input_type -> grpc.service.webservice.EnablePipedRequest + 10, // 62: grpc.service.webservice.WebService.DisablePiped:input_type -> grpc.service.webservice.DisablePipedRequest + 12, // 63: grpc.service.webservice.WebService.ListPipeds:input_type -> grpc.service.webservice.ListPipedsRequest + 14, // 64: grpc.service.webservice.WebService.GetPiped:input_type -> grpc.service.webservice.GetPipedRequest + 16, // 65: grpc.service.webservice.WebService.UpdatePipedDesiredVersion:input_type -> grpc.service.webservice.UpdatePipedDesiredVersionRequest + 18, // 66: grpc.service.webservice.WebService.RestartPiped:input_type -> grpc.service.webservice.RestartPipedRequest + 20, // 67: grpc.service.webservice.WebService.ListReleasedVersions:input_type -> grpc.service.webservice.ListReleasedVersionsRequest + 22, // 68: grpc.service.webservice.WebService.ListDeprecatedNotes:input_type -> grpc.service.webservice.ListDeprecatedNotesRequest + 24, // 69: grpc.service.webservice.WebService.AddApplication:input_type -> grpc.service.webservice.AddApplicationRequest + 26, // 70: grpc.service.webservice.WebService.UpdateApplication:input_type -> grpc.service.webservice.UpdateApplicationRequest + 28, // 71: grpc.service.webservice.WebService.EnableApplication:input_type -> grpc.service.webservice.EnableApplicationRequest + 30, // 72: grpc.service.webservice.WebService.DisableApplication:input_type -> grpc.service.webservice.DisableApplicationRequest + 32, // 73: grpc.service.webservice.WebService.DeleteApplication:input_type -> grpc.service.webservice.DeleteApplicationRequest + 34, // 74: grpc.service.webservice.WebService.ListApplications:input_type -> grpc.service.webservice.ListApplicationsRequest + 36, // 75: grpc.service.webservice.WebService.SyncApplication:input_type -> grpc.service.webservice.SyncApplicationRequest + 38, // 76: grpc.service.webservice.WebService.GetApplication:input_type -> grpc.service.webservice.GetApplicationRequest + 40, // 77: grpc.service.webservice.WebService.GenerateApplicationSealedSecret:input_type -> grpc.service.webservice.GenerateApplicationSealedSecretRequest + 42, // 78: grpc.service.webservice.WebService.ListUnregisteredApplications:input_type -> grpc.service.webservice.ListUnregisteredApplicationsRequest + 44, // 79: grpc.service.webservice.WebService.ListDeployments:input_type -> grpc.service.webservice.ListDeploymentsRequest + 46, // 80: grpc.service.webservice.WebService.GetDeployment:input_type -> grpc.service.webservice.GetDeploymentRequest + 48, // 81: grpc.service.webservice.WebService.GetStageLog:input_type -> grpc.service.webservice.GetStageLogRequest + 50, // 82: grpc.service.webservice.WebService.CancelDeployment:input_type -> grpc.service.webservice.CancelDeploymentRequest + 52, // 83: grpc.service.webservice.WebService.SkipStage:input_type -> grpc.service.webservice.SkipStageRequest + 54, // 84: grpc.service.webservice.WebService.ApproveStage:input_type -> grpc.service.webservice.ApproveStageRequest + 56, // 85: grpc.service.webservice.WebService.ListDeploymentTraces:input_type -> grpc.service.webservice.ListDeploymentTracesRequest + 58, // 86: grpc.service.webservice.WebService.GetApplicationLiveState:input_type -> grpc.service.webservice.GetApplicationLiveStateRequest + 60, // 87: grpc.service.webservice.WebService.GetProject:input_type -> grpc.service.webservice.GetProjectRequest + 62, // 88: grpc.service.webservice.WebService.UpdateProjectStaticAdmin:input_type -> grpc.service.webservice.UpdateProjectStaticAdminRequest + 68, // 89: grpc.service.webservice.WebService.EnableStaticAdmin:input_type -> grpc.service.webservice.EnableStaticAdminRequest + 70, // 90: grpc.service.webservice.WebService.DisableStaticAdmin:input_type -> grpc.service.webservice.DisableStaticAdminRequest + 64, // 91: grpc.service.webservice.WebService.UpdateProjectSSOConfig:input_type -> grpc.service.webservice.UpdateProjectSSOConfigRequest + 66, // 92: grpc.service.webservice.WebService.UpdateProjectRBACConfig:input_type -> grpc.service.webservice.UpdateProjectRBACConfigRequest + 72, // 93: grpc.service.webservice.WebService.GetMe:input_type -> grpc.service.webservice.GetMeRequest + 74, // 94: grpc.service.webservice.WebService.AddProjectRBACRole:input_type -> grpc.service.webservice.AddProjectRBACRoleRequest + 76, // 95: grpc.service.webservice.WebService.UpdateProjectRBACRole:input_type -> grpc.service.webservice.UpdateProjectRBACRoleRequest + 78, // 96: grpc.service.webservice.WebService.DeleteProjectRBACRole:input_type -> grpc.service.webservice.DeleteProjectRBACRoleRequest + 80, // 97: grpc.service.webservice.WebService.AddProjectUserGroup:input_type -> grpc.service.webservice.AddProjectUserGroupRequest + 82, // 98: grpc.service.webservice.WebService.DeleteProjectUserGroup:input_type -> grpc.service.webservice.DeleteProjectUserGroupRequest + 84, // 99: grpc.service.webservice.WebService.GetCommand:input_type -> grpc.service.webservice.GetCommandRequest + 86, // 100: grpc.service.webservice.WebService.GenerateAPIKey:input_type -> grpc.service.webservice.GenerateAPIKeyRequest + 88, // 101: grpc.service.webservice.WebService.DisableAPIKey:input_type -> grpc.service.webservice.DisableAPIKeyRequest + 90, // 102: grpc.service.webservice.WebService.ListAPIKeys:input_type -> grpc.service.webservice.ListAPIKeysRequest + 92, // 103: grpc.service.webservice.WebService.GetInsightData:input_type -> grpc.service.webservice.GetInsightDataRequest + 94, // 104: grpc.service.webservice.WebService.GetInsightApplicationCount:input_type -> grpc.service.webservice.GetInsightApplicationCountRequest + 96, // 105: grpc.service.webservice.WebService.ListDeploymentChains:input_type -> grpc.service.webservice.ListDeploymentChainsRequest + 98, // 106: grpc.service.webservice.WebService.GetDeploymentChain:input_type -> grpc.service.webservice.GetDeploymentChainRequest + 100, // 107: grpc.service.webservice.WebService.ListEvents:input_type -> grpc.service.webservice.ListEventsRequest + 1, // 108: grpc.service.webservice.WebService.RegisterPiped:output_type -> grpc.service.webservice.RegisterPipedResponse + 3, // 109: grpc.service.webservice.WebService.UpdatePiped:output_type -> grpc.service.webservice.UpdatePipedResponse + 5, // 110: grpc.service.webservice.WebService.RecreatePipedKey:output_type -> grpc.service.webservice.RecreatePipedKeyResponse + 7, // 111: grpc.service.webservice.WebService.DeleteOldPipedKeys:output_type -> grpc.service.webservice.DeleteOldPipedKeysResponse + 9, // 112: grpc.service.webservice.WebService.EnablePiped:output_type -> grpc.service.webservice.EnablePipedResponse + 11, // 113: grpc.service.webservice.WebService.DisablePiped:output_type -> grpc.service.webservice.DisablePipedResponse + 13, // 114: grpc.service.webservice.WebService.ListPipeds:output_type -> grpc.service.webservice.ListPipedsResponse + 15, // 115: grpc.service.webservice.WebService.GetPiped:output_type -> grpc.service.webservice.GetPipedResponse + 17, // 116: grpc.service.webservice.WebService.UpdatePipedDesiredVersion:output_type -> grpc.service.webservice.UpdatePipedDesiredVersionResponse + 19, // 117: grpc.service.webservice.WebService.RestartPiped:output_type -> grpc.service.webservice.RestartPipedResponse + 21, // 118: grpc.service.webservice.WebService.ListReleasedVersions:output_type -> grpc.service.webservice.ListReleasedVersionsResponse + 23, // 119: grpc.service.webservice.WebService.ListDeprecatedNotes:output_type -> grpc.service.webservice.ListDeprecatedNotesResponse + 25, // 120: grpc.service.webservice.WebService.AddApplication:output_type -> grpc.service.webservice.AddApplicationResponse + 27, // 121: grpc.service.webservice.WebService.UpdateApplication:output_type -> grpc.service.webservice.UpdateApplicationResponse + 29, // 122: grpc.service.webservice.WebService.EnableApplication:output_type -> grpc.service.webservice.EnableApplicationResponse + 31, // 123: grpc.service.webservice.WebService.DisableApplication:output_type -> grpc.service.webservice.DisableApplicationResponse + 33, // 124: grpc.service.webservice.WebService.DeleteApplication:output_type -> grpc.service.webservice.DeleteApplicationResponse + 35, // 125: grpc.service.webservice.WebService.ListApplications:output_type -> grpc.service.webservice.ListApplicationsResponse + 37, // 126: grpc.service.webservice.WebService.SyncApplication:output_type -> grpc.service.webservice.SyncApplicationResponse + 39, // 127: grpc.service.webservice.WebService.GetApplication:output_type -> grpc.service.webservice.GetApplicationResponse + 41, // 128: grpc.service.webservice.WebService.GenerateApplicationSealedSecret:output_type -> grpc.service.webservice.GenerateApplicationSealedSecretResponse + 43, // 129: grpc.service.webservice.WebService.ListUnregisteredApplications:output_type -> grpc.service.webservice.ListUnregisteredApplicationsResponse + 45, // 130: grpc.service.webservice.WebService.ListDeployments:output_type -> grpc.service.webservice.ListDeploymentsResponse + 47, // 131: grpc.service.webservice.WebService.GetDeployment:output_type -> grpc.service.webservice.GetDeploymentResponse + 49, // 132: grpc.service.webservice.WebService.GetStageLog:output_type -> grpc.service.webservice.GetStageLogResponse + 51, // 133: grpc.service.webservice.WebService.CancelDeployment:output_type -> grpc.service.webservice.CancelDeploymentResponse + 53, // 134: grpc.service.webservice.WebService.SkipStage:output_type -> grpc.service.webservice.SkipStageResponse + 55, // 135: grpc.service.webservice.WebService.ApproveStage:output_type -> grpc.service.webservice.ApproveStageResponse + 57, // 136: grpc.service.webservice.WebService.ListDeploymentTraces:output_type -> grpc.service.webservice.ListDeploymentTracesResponse + 59, // 137: grpc.service.webservice.WebService.GetApplicationLiveState:output_type -> grpc.service.webservice.GetApplicationLiveStateResponse + 61, // 138: grpc.service.webservice.WebService.GetProject:output_type -> grpc.service.webservice.GetProjectResponse + 63, // 139: grpc.service.webservice.WebService.UpdateProjectStaticAdmin:output_type -> grpc.service.webservice.UpdateProjectStaticAdminResponse + 69, // 140: grpc.service.webservice.WebService.EnableStaticAdmin:output_type -> grpc.service.webservice.EnableStaticAdminResponse + 71, // 141: grpc.service.webservice.WebService.DisableStaticAdmin:output_type -> grpc.service.webservice.DisableStaticAdminResponse + 65, // 142: grpc.service.webservice.WebService.UpdateProjectSSOConfig:output_type -> grpc.service.webservice.UpdateProjectSSOConfigResponse + 67, // 143: grpc.service.webservice.WebService.UpdateProjectRBACConfig:output_type -> grpc.service.webservice.UpdateProjectRBACConfigResponse + 73, // 144: grpc.service.webservice.WebService.GetMe:output_type -> grpc.service.webservice.GetMeResponse + 75, // 145: grpc.service.webservice.WebService.AddProjectRBACRole:output_type -> grpc.service.webservice.AddProjectRBACRoleResponse + 77, // 146: grpc.service.webservice.WebService.UpdateProjectRBACRole:output_type -> grpc.service.webservice.UpdateProjectRBACRoleResponse + 79, // 147: grpc.service.webservice.WebService.DeleteProjectRBACRole:output_type -> grpc.service.webservice.DeleteProjectRBACRoleResponse + 81, // 148: grpc.service.webservice.WebService.AddProjectUserGroup:output_type -> grpc.service.webservice.AddProjectUserGroupResponse + 83, // 149: grpc.service.webservice.WebService.DeleteProjectUserGroup:output_type -> grpc.service.webservice.DeleteProjectUserGroupResponse + 85, // 150: grpc.service.webservice.WebService.GetCommand:output_type -> grpc.service.webservice.GetCommandResponse + 87, // 151: grpc.service.webservice.WebService.GenerateAPIKey:output_type -> grpc.service.webservice.GenerateAPIKeyResponse + 89, // 152: grpc.service.webservice.WebService.DisableAPIKey:output_type -> grpc.service.webservice.DisableAPIKeyResponse + 91, // 153: grpc.service.webservice.WebService.ListAPIKeys:output_type -> grpc.service.webservice.ListAPIKeysResponse + 93, // 154: grpc.service.webservice.WebService.GetInsightData:output_type -> grpc.service.webservice.GetInsightDataResponse + 95, // 155: grpc.service.webservice.WebService.GetInsightApplicationCount:output_type -> grpc.service.webservice.GetInsightApplicationCountResponse + 97, // 156: grpc.service.webservice.WebService.ListDeploymentChains:output_type -> grpc.service.webservice.ListDeploymentChainsResponse + 99, // 157: grpc.service.webservice.WebService.GetDeploymentChain:output_type -> grpc.service.webservice.GetDeploymentChainResponse + 101, // 158: grpc.service.webservice.WebService.ListEvents:output_type -> grpc.service.webservice.ListEventsResponse + 108, // [108:159] is the sub-list for method output_type + 57, // [57:108] is the sub-list for method input_type + 57, // [57:57] is the sub-list for extension type_name + 57, // [57:57] is the sub-list for extension extendee + 0, // [0:57] is the sub-list for field type_name } func init() { file_pkg_app_server_service_webservice_service_proto_init() } @@ -7414,7 +7702,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetApplicationLiveStateRequest); i { + switch v := v.(*ListDeploymentTracesRequest); i { case 0: return &v.state case 1: @@ -7426,7 +7714,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetApplicationLiveStateResponse); i { + switch v := v.(*ListDeploymentTracesResponse); i { case 0: return &v.state case 1: @@ -7438,7 +7726,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProjectRequest); i { + switch v := v.(*GetApplicationLiveStateRequest); i { case 0: return &v.state case 1: @@ -7450,7 +7738,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProjectResponse); i { + switch v := v.(*GetApplicationLiveStateResponse); i { case 0: return &v.state case 1: @@ -7462,7 +7750,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectStaticAdminRequest); i { + switch v := v.(*GetProjectRequest); i { case 0: return &v.state case 1: @@ -7474,7 +7762,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectStaticAdminResponse); i { + switch v := v.(*GetProjectResponse); i { case 0: return &v.state case 1: @@ -7486,7 +7774,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectSSOConfigRequest); i { + switch v := v.(*UpdateProjectStaticAdminRequest); i { case 0: return &v.state case 1: @@ -7498,7 +7786,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectSSOConfigResponse); i { + switch v := v.(*UpdateProjectStaticAdminResponse); i { case 0: return &v.state case 1: @@ -7510,7 +7798,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectRBACConfigRequest); i { + switch v := v.(*UpdateProjectSSOConfigRequest); i { case 0: return &v.state case 1: @@ -7522,7 +7810,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectRBACConfigResponse); i { + switch v := v.(*UpdateProjectSSOConfigResponse); i { case 0: return &v.state case 1: @@ -7534,7 +7822,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnableStaticAdminRequest); i { + switch v := v.(*UpdateProjectRBACConfigRequest); i { case 0: return &v.state case 1: @@ -7546,7 +7834,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnableStaticAdminResponse); i { + switch v := v.(*UpdateProjectRBACConfigResponse); i { case 0: return &v.state case 1: @@ -7558,7 +7846,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisableStaticAdminRequest); i { + switch v := v.(*EnableStaticAdminRequest); i { case 0: return &v.state case 1: @@ -7570,7 +7858,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisableStaticAdminResponse); i { + switch v := v.(*EnableStaticAdminResponse); i { case 0: return &v.state case 1: @@ -7582,7 +7870,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMeRequest); i { + switch v := v.(*DisableStaticAdminRequest); i { case 0: return &v.state case 1: @@ -7594,7 +7882,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMeResponse); i { + switch v := v.(*DisableStaticAdminResponse); i { case 0: return &v.state case 1: @@ -7606,7 +7894,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddProjectRBACRoleRequest); i { + switch v := v.(*GetMeRequest); i { case 0: return &v.state case 1: @@ -7618,7 +7906,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddProjectRBACRoleResponse); i { + switch v := v.(*GetMeResponse); i { case 0: return &v.state case 1: @@ -7630,7 +7918,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectRBACRoleRequest); i { + switch v := v.(*AddProjectRBACRoleRequest); i { case 0: return &v.state case 1: @@ -7642,7 +7930,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProjectRBACRoleResponse); i { + switch v := v.(*AddProjectRBACRoleResponse); i { case 0: return &v.state case 1: @@ -7654,7 +7942,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteProjectRBACRoleRequest); i { + switch v := v.(*UpdateProjectRBACRoleRequest); i { case 0: return &v.state case 1: @@ -7666,7 +7954,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteProjectRBACRoleResponse); i { + switch v := v.(*UpdateProjectRBACRoleResponse); i { case 0: return &v.state case 1: @@ -7678,7 +7966,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddProjectUserGroupRequest); i { + switch v := v.(*DeleteProjectRBACRoleRequest); i { case 0: return &v.state case 1: @@ -7690,7 +7978,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddProjectUserGroupResponse); i { + switch v := v.(*DeleteProjectRBACRoleResponse); i { case 0: return &v.state case 1: @@ -7702,7 +7990,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteProjectUserGroupRequest); i { + switch v := v.(*AddProjectUserGroupRequest); i { case 0: return &v.state case 1: @@ -7714,7 +8002,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteProjectUserGroupResponse); i { + switch v := v.(*AddProjectUserGroupResponse); i { case 0: return &v.state case 1: @@ -7726,7 +8014,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCommandRequest); i { + switch v := v.(*DeleteProjectUserGroupRequest); i { case 0: return &v.state case 1: @@ -7738,7 +8026,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCommandResponse); i { + switch v := v.(*DeleteProjectUserGroupResponse); i { case 0: return &v.state case 1: @@ -7750,7 +8038,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateAPIKeyRequest); i { + switch v := v.(*GetCommandRequest); i { case 0: return &v.state case 1: @@ -7762,7 +8050,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateAPIKeyResponse); i { + switch v := v.(*GetCommandResponse); i { case 0: return &v.state case 1: @@ -7774,7 +8062,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisableAPIKeyRequest); i { + switch v := v.(*GenerateAPIKeyRequest); i { case 0: return &v.state case 1: @@ -7786,7 +8074,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DisableAPIKeyResponse); i { + switch v := v.(*GenerateAPIKeyResponse); i { case 0: return &v.state case 1: @@ -7798,7 +8086,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAPIKeysRequest); i { + switch v := v.(*DisableAPIKeyRequest); i { case 0: return &v.state case 1: @@ -7810,7 +8098,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAPIKeysResponse); i { + switch v := v.(*DisableAPIKeyResponse); i { case 0: return &v.state case 1: @@ -7822,7 +8110,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInsightDataRequest); i { + switch v := v.(*ListAPIKeysRequest); i { case 0: return &v.state case 1: @@ -7834,7 +8122,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInsightDataResponse); i { + switch v := v.(*ListAPIKeysResponse); i { case 0: return &v.state case 1: @@ -7846,7 +8134,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInsightApplicationCountRequest); i { + switch v := v.(*GetInsightDataRequest); i { case 0: return &v.state case 1: @@ -7858,7 +8146,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInsightApplicationCountResponse); i { + switch v := v.(*GetInsightDataResponse); i { case 0: return &v.state case 1: @@ -7870,7 +8158,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDeploymentChainsRequest); i { + switch v := v.(*GetInsightApplicationCountRequest); i { case 0: return &v.state case 1: @@ -7882,7 +8170,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDeploymentChainsResponse); i { + switch v := v.(*GetInsightApplicationCountResponse); i { case 0: return &v.state case 1: @@ -7894,7 +8182,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDeploymentChainRequest); i { + switch v := v.(*ListDeploymentChainsRequest); i { case 0: return &v.state case 1: @@ -7906,7 +8194,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDeploymentChainResponse); i { + switch v := v.(*ListDeploymentChainsResponse); i { case 0: return &v.state case 1: @@ -7918,7 +8206,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEventsRequest); i { + switch v := v.(*GetDeploymentChainRequest); i { case 0: return &v.state case 1: @@ -7930,7 +8218,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEventsResponse); i { + switch v := v.(*GetDeploymentChainResponse); i { case 0: return &v.state case 1: @@ -7942,6 +8230,30 @@ func file_pkg_app_server_service_webservice_service_proto_init() { } } file_pkg_app_server_service_webservice_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_webservice_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_webservice_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPipedsRequest_Options); i { case 0: return &v.state @@ -7953,7 +8265,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { return nil } } - file_pkg_app_server_service_webservice_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_webservice_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListApplicationsRequest_Options); i { case 0: return &v.state @@ -7965,7 +8277,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { return nil } } - file_pkg_app_server_service_webservice_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_webservice_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDeploymentsRequest_Options); i { case 0: return &v.state @@ -7977,7 +8289,31 @@ func file_pkg_app_server_service_webservice_service_proto_init() { return nil } } - file_pkg_app_server_service_webservice_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_webservice_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListDeploymentTracesRequest_Options); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_webservice_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListDeploymentTracesResponse_DeploymentTraceRes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_webservice_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPIKeysRequest_Options); i { case 0: return &v.state @@ -7989,7 +8325,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { return nil } } - file_pkg_app_server_service_webservice_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_webservice_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDeploymentChainsRequest_Options); i { case 0: return &v.state @@ -8001,7 +8337,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { return nil } } - file_pkg_app_server_service_webservice_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_webservice_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEventsRequest_Options); i { case 0: return &v.state @@ -8020,7 +8356,7 @@ func file_pkg_app_server_service_webservice_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_app_server_service_webservice_service_proto_rawDesc, NumEnums: 0, - NumMessages: 113, + NumMessages: 117, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/app/server/service/webservice/service.pb.validate.go b/pkg/app/server/service/webservice/service.pb.validate.go index 7e8eef381b..58d3bc81f1 100644 --- a/pkg/app/server/service/webservice/service.pb.validate.go +++ b/pkg/app/server/service/webservice/service.pb.validate.go @@ -6700,6 +6700,283 @@ var _ interface { ErrorName() string } = ApproveStageResponseValidationError{} +// Validate checks the field values on ListDeploymentTracesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListDeploymentTracesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListDeploymentTracesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListDeploymentTracesRequestMultiError, or nil if none found. +func (m *ListDeploymentTracesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListDeploymentTracesRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetOptions()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListDeploymentTracesRequestValidationError{ + field: "Options", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListDeploymentTracesRequestValidationError{ + field: "Options", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOptions()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListDeploymentTracesRequestValidationError{ + field: "Options", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for PageSize + + // no validation rules for Cursor + + // no validation rules for PageMinUpdatedAt + + if len(errors) > 0 { + return ListDeploymentTracesRequestMultiError(errors) + } + + return nil +} + +// ListDeploymentTracesRequestMultiError is an error wrapping multiple +// validation errors returned by ListDeploymentTracesRequest.ValidateAll() if +// the designated constraints aren't met. +type ListDeploymentTracesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListDeploymentTracesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListDeploymentTracesRequestMultiError) AllErrors() []error { return m } + +// ListDeploymentTracesRequestValidationError is the validation error returned +// by ListDeploymentTracesRequest.Validate if the designated constraints +// aren't met. +type ListDeploymentTracesRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListDeploymentTracesRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListDeploymentTracesRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListDeploymentTracesRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListDeploymentTracesRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListDeploymentTracesRequestValidationError) ErrorName() string { + return "ListDeploymentTracesRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListDeploymentTracesRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListDeploymentTracesRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListDeploymentTracesRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListDeploymentTracesRequestValidationError{} + +// Validate checks the field values on ListDeploymentTracesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListDeploymentTracesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListDeploymentTracesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListDeploymentTracesResponseMultiError, or nil if none found. +func (m *ListDeploymentTracesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListDeploymentTracesResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetTraces() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListDeploymentTracesResponseValidationError{ + field: fmt.Sprintf("Traces[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListDeploymentTracesResponseValidationError{ + field: fmt.Sprintf("Traces[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListDeploymentTracesResponseValidationError{ + field: fmt.Sprintf("Traces[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for Cursor + + if len(errors) > 0 { + return ListDeploymentTracesResponseMultiError(errors) + } + + return nil +} + +// ListDeploymentTracesResponseMultiError is an error wrapping multiple +// validation errors returned by ListDeploymentTracesResponse.ValidateAll() if +// the designated constraints aren't met. +type ListDeploymentTracesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListDeploymentTracesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListDeploymentTracesResponseMultiError) AllErrors() []error { return m } + +// ListDeploymentTracesResponseValidationError is the validation error returned +// by ListDeploymentTracesResponse.Validate if the designated constraints +// aren't met. +type ListDeploymentTracesResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListDeploymentTracesResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListDeploymentTracesResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListDeploymentTracesResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListDeploymentTracesResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListDeploymentTracesResponseValidationError) ErrorName() string { + return "ListDeploymentTracesResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ListDeploymentTracesResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListDeploymentTracesResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListDeploymentTracesResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListDeploymentTracesResponseValidationError{} + // Validate checks the field values on GetApplicationLiveStateRequest with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -12393,6 +12670,309 @@ var _ interface { ErrorName() string } = ListDeploymentsRequest_OptionsValidationError{} +// Validate checks the field values on ListDeploymentTracesRequest_Options with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *ListDeploymentTracesRequest_Options) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListDeploymentTracesRequest_Options +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// ListDeploymentTracesRequest_OptionsMultiError, or nil if none found. +func (m *ListDeploymentTracesRequest_Options) ValidateAll() error { + return m.validate(true) +} + +func (m *ListDeploymentTracesRequest_Options) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for CommitHash + + if len(errors) > 0 { + return ListDeploymentTracesRequest_OptionsMultiError(errors) + } + + return nil +} + +// ListDeploymentTracesRequest_OptionsMultiError is an error wrapping multiple +// validation errors returned by +// ListDeploymentTracesRequest_Options.ValidateAll() if the designated +// constraints aren't met. +type ListDeploymentTracesRequest_OptionsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListDeploymentTracesRequest_OptionsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListDeploymentTracesRequest_OptionsMultiError) AllErrors() []error { return m } + +// ListDeploymentTracesRequest_OptionsValidationError is the validation error +// returned by ListDeploymentTracesRequest_Options.Validate if the designated +// constraints aren't met. +type ListDeploymentTracesRequest_OptionsValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListDeploymentTracesRequest_OptionsValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListDeploymentTracesRequest_OptionsValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListDeploymentTracesRequest_OptionsValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListDeploymentTracesRequest_OptionsValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListDeploymentTracesRequest_OptionsValidationError) ErrorName() string { + return "ListDeploymentTracesRequest_OptionsValidationError" +} + +// Error satisfies the builtin error interface +func (e ListDeploymentTracesRequest_OptionsValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListDeploymentTracesRequest_Options.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListDeploymentTracesRequest_OptionsValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListDeploymentTracesRequest_OptionsValidationError{} + +// Validate checks the field values on +// ListDeploymentTracesResponse_DeploymentTraceRes with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *ListDeploymentTracesResponse_DeploymentTraceRes) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on +// ListDeploymentTracesResponse_DeploymentTraceRes with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in +// ListDeploymentTracesResponse_DeploymentTraceResMultiError, or nil if none found. +func (m *ListDeploymentTracesResponse_DeploymentTraceRes) ValidateAll() error { + return m.validate(true) +} + +func (m *ListDeploymentTracesResponse_DeploymentTraceRes) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if m.GetTrace() == nil { + err := ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: "Trace", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetTrace()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: "Trace", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: "Trace", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTrace()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: "Trace", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(m.GetDeployments()) < 1 { + err := ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: "Deployments", + reason: "value must contain at least 1 item(s)", + } + if !all { + return err + } + errors = append(errors, err) + } + + for idx, item := range m.GetDeployments() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: fmt.Sprintf("Deployments[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: fmt.Sprintf("Deployments[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListDeploymentTracesResponse_DeploymentTraceResValidationError{ + field: fmt.Sprintf("Deployments[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return ListDeploymentTracesResponse_DeploymentTraceResMultiError(errors) + } + + return nil +} + +// ListDeploymentTracesResponse_DeploymentTraceResMultiError is an error +// wrapping multiple validation errors returned by +// ListDeploymentTracesResponse_DeploymentTraceRes.ValidateAll() if the +// designated constraints aren't met. +type ListDeploymentTracesResponse_DeploymentTraceResMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListDeploymentTracesResponse_DeploymentTraceResMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListDeploymentTracesResponse_DeploymentTraceResMultiError) AllErrors() []error { return m } + +// ListDeploymentTracesResponse_DeploymentTraceResValidationError is the +// validation error returned by +// ListDeploymentTracesResponse_DeploymentTraceRes.Validate if the designated +// constraints aren't met. +type ListDeploymentTracesResponse_DeploymentTraceResValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListDeploymentTracesResponse_DeploymentTraceResValidationError) Field() string { + return e.field +} + +// Reason function returns reason value. +func (e ListDeploymentTracesResponse_DeploymentTraceResValidationError) Reason() string { + return e.reason +} + +// Cause function returns cause value. +func (e ListDeploymentTracesResponse_DeploymentTraceResValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListDeploymentTracesResponse_DeploymentTraceResValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListDeploymentTracesResponse_DeploymentTraceResValidationError) ErrorName() string { + return "ListDeploymentTracesResponse_DeploymentTraceResValidationError" +} + +// Error satisfies the builtin error interface +func (e ListDeploymentTracesResponse_DeploymentTraceResValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListDeploymentTracesResponse_DeploymentTraceRes.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListDeploymentTracesResponse_DeploymentTraceResValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListDeploymentTracesResponse_DeploymentTraceResValidationError{} + // Validate checks the field values on ListAPIKeysRequest_Options with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. diff --git a/pkg/app/server/service/webservice/service.proto b/pkg/app/server/service/webservice/service.proto index 1beefa8450..9290882a22 100644 --- a/pkg/app/server/service/webservice/service.proto +++ b/pkg/app/server/service/webservice/service.proto @@ -24,6 +24,7 @@ import "pkg/model/application.proto"; import "pkg/model/application_live_state.proto"; import "pkg/model/command.proto"; import "pkg/model/deployment.proto"; +import "pkg/model/deployment_trace.proto"; import "pkg/model/deployment_chain.proto"; import "pkg/model/logblock.proto"; import "pkg/model/piped.proto"; @@ -155,6 +156,12 @@ service WebService { option (model.rbac).action = UPDATE; } + // Deployment tracing + rpc ListDeploymentTraces(ListDeploymentTracesRequest) returns (ListDeploymentTracesResponse) { + option (model.rbac).resource = DEPLOYMENT; + option (model.rbac).action = LIST; + } + // ApplicationLiveState rpc GetApplicationLiveState(GetApplicationLiveStateRequest) returns (GetApplicationLiveStateResponse) { option (model.rbac).resource = APPLICATION; @@ -532,6 +539,28 @@ message ApproveStageResponse { string command_id = 1; } +message ListDeploymentTracesRequest { + message Options { + string commit_hash = 1; + } + + Options options = 1; + int32 page_size = 2; + string cursor = 3; + // It will not return any data older than this timestamp, even if it does not meet the page size. + // This aims to prevent the server from scanning the entire database to look for deployments that have the specified fields in spite of nothing. + int64 page_min_updated_at = 4; +} + +message ListDeploymentTracesResponse { + message DeploymentTraceRes { + model.DeploymentTrace trace = 1 [(validate.rules).message.required = true]; + repeated model.Deployment deployments = 2 [(validate.rules).repeated.min_items = 1]; + } + repeated DeploymentTraceRes traces = 1; + string cursor = 2; +} + message GetApplicationLiveStateRequest { string application_id = 1 [(validate.rules).string.min_len = 1]; } diff --git a/pkg/app/server/service/webservice/service_grpc.pb.go b/pkg/app/server/service/webservice/service_grpc.pb.go index 2f92c5ee33..6fc94220be 100644 --- a/pkg/app/server/service/webservice/service_grpc.pb.go +++ b/pkg/app/server/service/webservice/service_grpc.pb.go @@ -53,6 +53,8 @@ type WebServiceClient interface { CancelDeployment(ctx context.Context, in *CancelDeploymentRequest, opts ...grpc.CallOption) (*CancelDeploymentResponse, error) SkipStage(ctx context.Context, in *SkipStageRequest, opts ...grpc.CallOption) (*SkipStageResponse, error) ApproveStage(ctx context.Context, in *ApproveStageRequest, opts ...grpc.CallOption) (*ApproveStageResponse, error) + // Deployment tracing + ListDeploymentTraces(ctx context.Context, in *ListDeploymentTracesRequest, opts ...grpc.CallOption) (*ListDeploymentTracesResponse, error) // ApplicationLiveState GetApplicationLiveState(ctx context.Context, in *GetApplicationLiveStateRequest, opts ...grpc.CallOption) (*GetApplicationLiveStateResponse, error) // Account @@ -344,6 +346,15 @@ func (c *webServiceClient) ApproveStage(ctx context.Context, in *ApproveStageReq return out, nil } +func (c *webServiceClient) ListDeploymentTraces(ctx context.Context, in *ListDeploymentTracesRequest, opts ...grpc.CallOption) (*ListDeploymentTracesResponse, error) { + out := new(ListDeploymentTracesResponse) + err := c.cc.Invoke(ctx, "/grpc.service.webservice.WebService/ListDeploymentTraces", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *webServiceClient) GetApplicationLiveState(ctx context.Context, in *GetApplicationLiveStateRequest, opts ...grpc.CallOption) (*GetApplicationLiveStateResponse, error) { out := new(GetApplicationLiveStateResponse) err := c.cc.Invoke(ctx, "/grpc.service.webservice.WebService/GetApplicationLiveState", in, out, opts...) @@ -577,6 +588,8 @@ type WebServiceServer interface { CancelDeployment(context.Context, *CancelDeploymentRequest) (*CancelDeploymentResponse, error) SkipStage(context.Context, *SkipStageRequest) (*SkipStageResponse, error) ApproveStage(context.Context, *ApproveStageRequest) (*ApproveStageResponse, error) + // Deployment tracing + ListDeploymentTraces(context.Context, *ListDeploymentTracesRequest) (*ListDeploymentTracesResponse, error) // ApplicationLiveState GetApplicationLiveState(context.Context, *GetApplicationLiveStateRequest) (*GetApplicationLiveStateResponse, error) // Account @@ -697,6 +710,9 @@ func (UnimplementedWebServiceServer) SkipStage(context.Context, *SkipStageReques func (UnimplementedWebServiceServer) ApproveStage(context.Context, *ApproveStageRequest) (*ApproveStageResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ApproveStage not implemented") } +func (UnimplementedWebServiceServer) ListDeploymentTraces(context.Context, *ListDeploymentTracesRequest) (*ListDeploymentTracesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListDeploymentTraces not implemented") +} func (UnimplementedWebServiceServer) GetApplicationLiveState(context.Context, *GetApplicationLiveStateRequest) (*GetApplicationLiveStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetApplicationLiveState not implemented") } @@ -1280,6 +1296,24 @@ func _WebService_ApproveStage_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _WebService_ListDeploymentTraces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListDeploymentTracesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WebServiceServer).ListDeploymentTraces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.service.webservice.WebService/ListDeploymentTraces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WebServiceServer).ListDeploymentTraces(ctx, req.(*ListDeploymentTracesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _WebService_GetApplicationLiveState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetApplicationLiveStateRequest) if err := dec(in); err != nil { @@ -1795,6 +1829,10 @@ var WebService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ApproveStage", Handler: _WebService_ApproveStage_Handler, }, + { + MethodName: "ListDeploymentTraces", + Handler: _WebService_ListDeploymentTraces_Handler, + }, { MethodName: "GetApplicationLiveState", Handler: _WebService_GetApplicationLiveState_Handler, diff --git a/pkg/model/deployment.pb.go b/pkg/model/deployment.pb.go index 0e6c0ec8a5..fb0c84d638 100644 --- a/pkg/model/deployment.pb.go +++ b/pkg/model/deployment.pb.go @@ -341,6 +341,8 @@ type Deployment struct { // Index represents the offset of the node which this deployment // belongs to. DeploymentChainBlockIndex uint32 `protobuf:"varint,41,opt,name=deployment_chain_block_index,json=deploymentChainBlockIndex,proto3" json:"deployment_chain_block_index,omitempty"` + // The commit hash of the deployment trace, which contains this deployment. + DeploymentTraceCommitHash string `protobuf:"bytes,50,opt,name=deployment_trace_commit_hash,json=deploymentTraceCommitHash,proto3" json:"deployment_trace_commit_hash,omitempty"` CompletedAt int64 `protobuf:"varint,100,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` CreatedAt int64 `protobuf:"varint,101,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt int64 `protobuf:"varint,102,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` @@ -549,6 +551,13 @@ func (x *Deployment) GetDeploymentChainBlockIndex() uint32 { return 0 } +func (x *Deployment) GetDeploymentTraceCommitHash() string { + if x != nil { + return x.DeploymentTraceCommitHash + } + return "" +} + func (x *Deployment) GetCompletedAt() int64 { if x != nil { return x.CompletedAt @@ -1083,7 +1092,7 @@ var file_pkg_model_deployment_proto_rawDesc = []byte{ 0x64, 0x65, 0x6c, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xea, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, @@ -1160,169 +1169,173 @@ var file_pkg_model_deployment_proto_rawDesc = []byte{ 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, + 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x1c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x1a, 0x5e, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x3b, + 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x4a, 0x04, 0x08, 0x04, 0x10, + 0x05, 0x22, 0x36, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0xee, 0x01, 0x0a, 0x11, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, + 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x25, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x0d, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x79, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, + 0x29, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xb5, 0x05, 0x0a, 0x0d, 0x50, + 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 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, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0a, + 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x07, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, + 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x6f, + 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x65, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x1a, 0x5e, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6c, 0x75, 0x67, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x3b, 0x0a, - 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, - 0x22, 0x36, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0xee, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2f, - 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x0d, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x29, - 0x0a, 0x10, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xb5, 0x05, 0x0a, 0x0d, 0x50, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 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, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0a, 0x70, - 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x76, - 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, - 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x6f, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x22, 0x02, 0x28, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x51, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x51, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 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, 0xe7, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, + 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x1f, + 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, + 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x92, 0x03, 0x0a, + 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, + 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x12, 0x40, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x1a, 0x5f, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, + 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x9b, 0x01, 0x0a, 0x09, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x50, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 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, 0x22, 0xe7, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x04, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x1f, 0x0a, - 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x21, - 0x0a, 0x0c, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x92, 0x03, 0x0a, 0x12, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, - 0x40, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x73, 0x1a, 0x5f, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, 0x65, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x9b, 0x01, 0x0a, 0x09, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x50, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, - 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 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, - 0x2a, 0xc1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x4e, - 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1b, 0x0a, - 0x17, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, - 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, - 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, - 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, - 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, - 0x45, 0x44, 0x10, 0x06, 0x2a, 0x9b, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x4f, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x59, 0x45, 0x54, 0x10, 0x00, 0x12, - 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, - 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, - 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x46, - 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x47, - 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x11, 0x0a, - 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x05, - 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x45, 0x44, - 0x10, 0x06, 0x2a, 0x4e, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4b, 0x69, 0x6e, - 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x00, - 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x01, - 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x59, - 0x4e, 0x43, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, - 0x10, 0x03, 0x2a, 0x83, 0x01, 0x0a, 0x0f, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, - 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x10, 0x01, 0x12, - 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, - 0x15, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x25, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, 0x63, 0x64, 0x2f, 0x70, - 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x2a, 0xc1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x4c, 0x41, + 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1b, + 0x0a, 0x17, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, + 0x4c, 0x45, 0x44, 0x10, 0x06, 0x2a, 0x9b, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x4e, + 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x59, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, + 0x47, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x55, 0x43, + 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, + 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x11, + 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, + 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x45, + 0x44, 0x10, 0x06, 0x2a, 0x4e, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, + 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, + 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x49, + 0x4e, 0x10, 0x03, 0x2a, 0x83, 0x01, 0x0a, 0x0f, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x4e, 0x55, 0x41, + 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, + 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x10, 0x01, + 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x12, 0x19, + 0x0a, 0x15, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x25, 0x5a, 0x23, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, 0x63, 0x64, 0x2f, + 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/model/deployment.pb.validate.go b/pkg/model/deployment.pb.validate.go index f8ad263b11..0642ee3aea 100644 --- a/pkg/model/deployment.pb.validate.go +++ b/pkg/model/deployment.pb.validate.go @@ -379,6 +379,8 @@ func (m *Deployment) validate(all bool) error { // no validation rules for DeploymentChainBlockIndex + // no validation rules for DeploymentTraceCommitHash + if m.GetCompletedAt() < 0 { err := DeploymentValidationError{ field: "CompletedAt", diff --git a/pkg/model/deployment.proto b/pkg/model/deployment.proto index deaef0a75d..9a0d80c9ab 100644 --- a/pkg/model/deployment.proto +++ b/pkg/model/deployment.proto @@ -112,6 +112,9 @@ message Deployment { // belongs to. uint32 deployment_chain_block_index = 41; + // The commit hash of the deployment trace, which contains this deployment. + string deployment_trace_commit_hash = 50; + int64 completed_at = 100 [(validate.rules).int64.gte = 0]; int64 created_at = 101 [(validate.rules).int64.gte = 0]; int64 updated_at = 102 [(validate.rules).int64.gte = 0]; diff --git a/pkg/model/deployment_trace.pb.go b/pkg/model/deployment_trace.pb.go new file mode 100644 index 0000000000..c78bb01359 --- /dev/null +++ b/pkg/model/deployment_trace.pb.go @@ -0,0 +1,256 @@ +// Copyright 2025 The PipeCD Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.21.12 +// source: pkg/model/deployment_trace.proto + +package model + +import ( + _ "github.com/envoyproxy/protoc-gen-validate/validate" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +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 DeploymentTrace struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + CommitHash string `protobuf:"bytes,3,opt,name=commit_hash,json=commitHash,proto3" json:"commit_hash,omitempty"` + CommitUrl string `protobuf:"bytes,4,opt,name=commit_url,json=commitUrl,proto3" json:"commit_url,omitempty"` + CommitMessage string `protobuf:"bytes,5,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"` + CommitTimestamp int64 `protobuf:"varint,6,opt,name=commit_timestamp,json=commitTimestamp,proto3" json:"commit_timestamp,omitempty"` + Author string `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` + CompletedAt int64 `protobuf:"varint,100,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + CreatedAt int64 `protobuf:"varint,101,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,102,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` +} + +func (x *DeploymentTrace) Reset() { + *x = DeploymentTrace{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_model_deployment_trace_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeploymentTrace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeploymentTrace) ProtoMessage() {} + +func (x *DeploymentTrace) ProtoReflect() protoreflect.Message { + mi := &file_pkg_model_deployment_trace_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) +} + +// Deprecated: Use DeploymentTrace.ProtoReflect.Descriptor instead. +func (*DeploymentTrace) Descriptor() ([]byte, []int) { + return file_pkg_model_deployment_trace_proto_rawDescGZIP(), []int{0} +} + +func (x *DeploymentTrace) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DeploymentTrace) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DeploymentTrace) GetCommitHash() string { + if x != nil { + return x.CommitHash + } + return "" +} + +func (x *DeploymentTrace) GetCommitUrl() string { + if x != nil { + return x.CommitUrl + } + return "" +} + +func (x *DeploymentTrace) GetCommitMessage() string { + if x != nil { + return x.CommitMessage + } + return "" +} + +func (x *DeploymentTrace) GetCommitTimestamp() int64 { + if x != nil { + return x.CommitTimestamp + } + return 0 +} + +func (x *DeploymentTrace) GetAuthor() string { + if x != nil { + return x.Author + } + return "" +} + +func (x *DeploymentTrace) GetCompletedAt() int64 { + if x != nil { + return x.CompletedAt + } + return 0 +} + +func (x *DeploymentTrace) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *DeploymentTrace) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +var File_pkg_model_deployment_trace_proto protoreflect.FileDescriptor + +var file_pkg_model_deployment_trace_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x93, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1d, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, + 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x55, 0x72, 0x6c, + 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1f, 0x0a, 0x06, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x26, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x66, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x00, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x25, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, 0x63, 0x64, 0x2f, 0x70, + 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pkg_model_deployment_trace_proto_rawDescOnce sync.Once + file_pkg_model_deployment_trace_proto_rawDescData = file_pkg_model_deployment_trace_proto_rawDesc +) + +func file_pkg_model_deployment_trace_proto_rawDescGZIP() []byte { + file_pkg_model_deployment_trace_proto_rawDescOnce.Do(func() { + file_pkg_model_deployment_trace_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_model_deployment_trace_proto_rawDescData) + }) + return file_pkg_model_deployment_trace_proto_rawDescData +} + +var file_pkg_model_deployment_trace_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_pkg_model_deployment_trace_proto_goTypes = []interface{}{ + (*DeploymentTrace)(nil), // 0: model.DeploymentTrace +} +var file_pkg_model_deployment_trace_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_pkg_model_deployment_trace_proto_init() } +func file_pkg_model_deployment_trace_proto_init() { + if File_pkg_model_deployment_trace_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_model_deployment_trace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeploymentTrace); 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_pkg_model_deployment_trace_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pkg_model_deployment_trace_proto_goTypes, + DependencyIndexes: file_pkg_model_deployment_trace_proto_depIdxs, + MessageInfos: file_pkg_model_deployment_trace_proto_msgTypes, + }.Build() + File_pkg_model_deployment_trace_proto = out.File + file_pkg_model_deployment_trace_proto_rawDesc = nil + file_pkg_model_deployment_trace_proto_goTypes = nil + file_pkg_model_deployment_trace_proto_depIdxs = nil +} diff --git a/pkg/model/deployment_trace.pb.validate.go b/pkg/model/deployment_trace.pb.validate.go new file mode 100644 index 0000000000..b39cf0fd6b --- /dev/null +++ b/pkg/model/deployment_trace.pb.validate.go @@ -0,0 +1,237 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: pkg/model/deployment_trace.proto + +package model + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "sort" + "strings" + "time" + "unicode/utf8" + + "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = anypb.Any{} + _ = sort.Sort +) + +// Validate checks the field values on DeploymentTrace with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *DeploymentTrace) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeploymentTrace with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeploymentTraceMultiError, or nil if none found. +func (m *DeploymentTrace) ValidateAll() error { + return m.validate(true) +} + +func (m *DeploymentTrace) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetId()) < 1 { + err := DeploymentTraceValidationError{ + field: "Id", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetTitle()) < 1 { + err := DeploymentTraceValidationError{ + field: "Title", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetCommitHash()) < 1 { + err := DeploymentTraceValidationError{ + field: "CommitHash", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetCommitUrl()) < 1 { + err := DeploymentTraceValidationError{ + field: "CommitUrl", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for CommitMessage + + if m.GetCommitTimestamp() < 0 { + err := DeploymentTraceValidationError{ + field: "CommitTimestamp", + reason: "value must be greater than or equal to 0", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetAuthor()) < 1 { + err := DeploymentTraceValidationError{ + field: "Author", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if m.GetCompletedAt() < 0 { + err := DeploymentTraceValidationError{ + field: "CompletedAt", + reason: "value must be greater than or equal to 0", + } + if !all { + return err + } + errors = append(errors, err) + } + + if m.GetCreatedAt() < 0 { + err := DeploymentTraceValidationError{ + field: "CreatedAt", + reason: "value must be greater than or equal to 0", + } + if !all { + return err + } + errors = append(errors, err) + } + + if m.GetUpdatedAt() < 0 { + err := DeploymentTraceValidationError{ + field: "UpdatedAt", + reason: "value must be greater than or equal to 0", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeploymentTraceMultiError(errors) + } + + return nil +} + +// DeploymentTraceMultiError is an error wrapping multiple validation errors +// returned by DeploymentTrace.ValidateAll() if the designated constraints +// aren't met. +type DeploymentTraceMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeploymentTraceMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeploymentTraceMultiError) AllErrors() []error { return m } + +// DeploymentTraceValidationError is the validation error returned by +// DeploymentTrace.Validate if the designated constraints aren't met. +type DeploymentTraceValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeploymentTraceValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeploymentTraceValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeploymentTraceValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeploymentTraceValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeploymentTraceValidationError) ErrorName() string { return "DeploymentTraceValidationError" } + +// Error satisfies the builtin error interface +func (e DeploymentTraceValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeploymentTrace.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeploymentTraceValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeploymentTraceValidationError{} diff --git a/pkg/model/deployment_trace.proto b/pkg/model/deployment_trace.proto new file mode 100644 index 0000000000..01034d6939 --- /dev/null +++ b/pkg/model/deployment_trace.proto @@ -0,0 +1,34 @@ +// Copyright 2025 The PipeCD Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package model; +option go_package = "github.com/pipe-cd/pipecd/pkg/model"; + +import "validate/validate.proto"; + +message DeploymentTrace { + string id = 1 [(validate.rules).string.min_len = 1]; + string title = 2 [(validate.rules).string.min_len = 1]; + string commit_hash = 3 [(validate.rules).string.min_len = 1]; + string commit_url = 4 [(validate.rules).string.min_len = 1]; + string commit_message = 5; + int64 commit_timestamp = 6 [(validate.rules).int64.gte = 0]; + string author = 7 [(validate.rules).string.min_len = 1]; + + int64 completed_at = 100 [(validate.rules).int64.gte = 0]; + int64 created_at = 101 [(validate.rules).int64.gte = 0]; + int64 updated_at = 102 [(validate.rules).int64.gte = 0]; +} \ No newline at end of file diff --git a/web/api_client/service_grpc_web_pb.d.ts b/web/api_client/service_grpc_web_pb.d.ts index 0b9a85a951..d8ed538362 100644 --- a/web/api_client/service_grpc_web_pb.d.ts +++ b/web/api_client/service_grpc_web_pb.d.ts @@ -204,6 +204,13 @@ export class WebServiceClient { response: pkg_app_server_service_webservice_service_pb.ApproveStageResponse) => void ): grpcWeb.ClientReadableStream; + listDeploymentTraces( + request: pkg_app_server_service_webservice_service_pb.ListDeploymentTracesRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.RpcError, + response: pkg_app_server_service_webservice_service_pb.ListDeploymentTracesResponse) => void + ): grpcWeb.ClientReadableStream; + getApplicationLiveState( request: pkg_app_server_service_webservice_service_pb.GetApplicationLiveStateRequest, metadata: grpcWeb.Metadata | undefined, @@ -505,6 +512,11 @@ export class WebServicePromiseClient { metadata?: grpcWeb.Metadata ): Promise; + listDeploymentTraces( + request: pkg_app_server_service_webservice_service_pb.ListDeploymentTracesRequest, + metadata?: grpcWeb.Metadata + ): Promise; + getApplicationLiveState( request: pkg_app_server_service_webservice_service_pb.GetApplicationLiveStateRequest, metadata?: grpcWeb.Metadata diff --git a/web/api_client/service_grpc_web_pb.js b/web/api_client/service_grpc_web_pb.js index 19a19a4888..4156354422 100644 --- a/web/api_client/service_grpc_web_pb.js +++ b/web/api_client/service_grpc_web_pb.js @@ -30,6 +30,8 @@ var pkg_model_command_pb = require('pipecd/web/model/command_pb.js') var pkg_model_deployment_pb = require('pipecd/web/model/deployment_pb.js') +var pkg_model_deployment_trace_pb = require('pipecd/web/model/deployment_trace_pb.js') + var pkg_model_deployment_chain_pb = require('pipecd/web/model/deployment_chain_pb.js') var pkg_model_logblock_pb = require('pipecd/web/model/logblock_pb.js') @@ -1812,6 +1814,67 @@ proto.grpc.service.webservice.WebServicePromiseClient.prototype.approveStage = }; +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.grpc.service.webservice.ListDeploymentTracesRequest, + * !proto.grpc.service.webservice.ListDeploymentTracesResponse>} + */ +const methodDescriptor_WebService_ListDeploymentTraces = new grpc.web.MethodDescriptor( + '/grpc.service.webservice.WebService/ListDeploymentTraces', + grpc.web.MethodType.UNARY, + proto.grpc.service.webservice.ListDeploymentTracesRequest, + proto.grpc.service.webservice.ListDeploymentTracesResponse, + /** + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.grpc.service.webservice.ListDeploymentTracesResponse.deserializeBinary +); + + +/** + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.grpc.service.webservice.ListDeploymentTracesResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.grpc.service.webservice.WebServiceClient.prototype.listDeploymentTraces = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/grpc.service.webservice.WebService/ListDeploymentTraces', + request, + metadata || {}, + methodDescriptor_WebService_ListDeploymentTraces, + callback); +}; + + +/** + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.grpc.service.webservice.WebServicePromiseClient.prototype.listDeploymentTraces = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/grpc.service.webservice.WebService/ListDeploymentTraces', + request, + metadata || {}, + methodDescriptor_WebService_ListDeploymentTraces); +}; + + /** * @const * @type {!grpc.web.MethodDescriptor< diff --git a/web/api_client/service_pb.d.ts b/web/api_client/service_pb.d.ts index 33f3fdfe14..a69a99101a 100644 --- a/web/api_client/service_pb.d.ts +++ b/web/api_client/service_pb.d.ts @@ -7,6 +7,7 @@ import * as pkg_model_application_pb from 'pipecd/web/model/application_pb'; import * as pkg_model_application_live_state_pb from 'pipecd/web/model/application_live_state_pb'; import * as pkg_model_command_pb from 'pipecd/web/model/command_pb'; import * as pkg_model_deployment_pb from 'pipecd/web/model/deployment_pb'; +import * as pkg_model_deployment_trace_pb from 'pipecd/web/model/deployment_trace_pb'; import * as pkg_model_deployment_chain_pb from 'pipecd/web/model/deployment_chain_pb'; import * as pkg_model_logblock_pb from 'pipecd/web/model/logblock_pb'; import * as pkg_model_piped_pb from 'pipecd/web/model/piped_pb'; @@ -1253,6 +1254,108 @@ export namespace ApproveStageResponse { } } +export class ListDeploymentTracesRequest extends jspb.Message { + getOptions(): ListDeploymentTracesRequest.Options | undefined; + setOptions(value?: ListDeploymentTracesRequest.Options): ListDeploymentTracesRequest; + hasOptions(): boolean; + clearOptions(): ListDeploymentTracesRequest; + + getPageSize(): number; + setPageSize(value: number): ListDeploymentTracesRequest; + + getCursor(): string; + setCursor(value: string): ListDeploymentTracesRequest; + + getPageMinUpdatedAt(): number; + setPageMinUpdatedAt(value: number): ListDeploymentTracesRequest; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListDeploymentTracesRequest.AsObject; + static toObject(includeInstance: boolean, msg: ListDeploymentTracesRequest): ListDeploymentTracesRequest.AsObject; + static serializeBinaryToWriter(message: ListDeploymentTracesRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListDeploymentTracesRequest; + static deserializeBinaryFromReader(message: ListDeploymentTracesRequest, reader: jspb.BinaryReader): ListDeploymentTracesRequest; +} + +export namespace ListDeploymentTracesRequest { + export type AsObject = { + options?: ListDeploymentTracesRequest.Options.AsObject, + pageSize: number, + cursor: string, + pageMinUpdatedAt: number, + } + + export class Options extends jspb.Message { + getCommitHash(): string; + setCommitHash(value: string): Options; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): Options.AsObject; + static toObject(includeInstance: boolean, msg: Options): Options.AsObject; + static serializeBinaryToWriter(message: Options, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): Options; + static deserializeBinaryFromReader(message: Options, reader: jspb.BinaryReader): Options; + } + + export namespace Options { + export type AsObject = { + commitHash: string, + } + } + +} + +export class ListDeploymentTracesResponse extends jspb.Message { + getTracesList(): Array; + setTracesList(value: Array): ListDeploymentTracesResponse; + clearTracesList(): ListDeploymentTracesResponse; + addTraces(value?: ListDeploymentTracesResponse.DeploymentTraceRes, index?: number): ListDeploymentTracesResponse.DeploymentTraceRes; + + getCursor(): string; + setCursor(value: string): ListDeploymentTracesResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListDeploymentTracesResponse.AsObject; + static toObject(includeInstance: boolean, msg: ListDeploymentTracesResponse): ListDeploymentTracesResponse.AsObject; + static serializeBinaryToWriter(message: ListDeploymentTracesResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListDeploymentTracesResponse; + static deserializeBinaryFromReader(message: ListDeploymentTracesResponse, reader: jspb.BinaryReader): ListDeploymentTracesResponse; +} + +export namespace ListDeploymentTracesResponse { + export type AsObject = { + tracesList: Array, + cursor: string, + } + + export class DeploymentTraceRes extends jspb.Message { + getTrace(): pkg_model_deployment_trace_pb.DeploymentTrace | undefined; + setTrace(value?: pkg_model_deployment_trace_pb.DeploymentTrace): DeploymentTraceRes; + hasTrace(): boolean; + clearTrace(): DeploymentTraceRes; + + getDeploymentsList(): Array; + setDeploymentsList(value: Array): DeploymentTraceRes; + clearDeploymentsList(): DeploymentTraceRes; + addDeployments(value?: pkg_model_deployment_pb.Deployment, index?: number): pkg_model_deployment_pb.Deployment; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DeploymentTraceRes.AsObject; + static toObject(includeInstance: boolean, msg: DeploymentTraceRes): DeploymentTraceRes.AsObject; + static serializeBinaryToWriter(message: DeploymentTraceRes, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DeploymentTraceRes; + static deserializeBinaryFromReader(message: DeploymentTraceRes, reader: jspb.BinaryReader): DeploymentTraceRes; + } + + export namespace DeploymentTraceRes { + export type AsObject = { + trace?: pkg_model_deployment_trace_pb.DeploymentTrace.AsObject, + deploymentsList: Array, + } + } + +} + export class GetApplicationLiveStateRequest extends jspb.Message { getApplicationId(): string; setApplicationId(value: string): GetApplicationLiveStateRequest; diff --git a/web/api_client/service_pb.js b/web/api_client/service_pb.js index 84a44a027d..c48672acff 100644 --- a/web/api_client/service_pb.js +++ b/web/api_client/service_pb.js @@ -35,6 +35,8 @@ var pkg_model_command_pb = require('pipecd/web/model/command_pb.js'); goog.object.extend(proto, pkg_model_command_pb); var pkg_model_deployment_pb = require('pipecd/web/model/deployment_pb.js'); goog.object.extend(proto, pkg_model_deployment_pb); +var pkg_model_deployment_trace_pb = require('pipecd/web/model/deployment_trace_pb.js'); +goog.object.extend(proto, pkg_model_deployment_trace_pb); var pkg_model_deployment_chain_pb = require('pipecd/web/model/deployment_chain_pb.js'); goog.object.extend(proto, pkg_model_deployment_chain_pb); var pkg_model_logblock_pb = require('pipecd/web/model/logblock_pb.js'); @@ -120,6 +122,10 @@ goog.exportSymbol('proto.grpc.service.webservice.ListApplicationsResponse', null goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentChainsRequest', null, global); goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentChainsRequest.Options', null, global); goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentChainsResponse', null, global); +goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentTracesRequest', null, global); +goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentTracesRequest.Options', null, global); +goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentTracesResponse', null, global); +goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes', null, global); goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentsRequest', null, global); goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentsRequest.Options', null, global); goog.exportSymbol('proto.grpc.service.webservice.ListDeploymentsResponse', null, global); @@ -1398,6 +1404,90 @@ if (goog.DEBUG && !COMPILED) { */ proto.grpc.service.webservice.ApproveStageResponse.displayName = 'proto.grpc.service.webservice.ApproveStageResponse'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.grpc.service.webservice.ListDeploymentTracesRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.service.webservice.ListDeploymentTracesRequest.displayName = 'proto.grpc.service.webservice.ListDeploymentTracesRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.grpc.service.webservice.ListDeploymentTracesRequest.Options, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.displayName = 'proto.grpc.service.webservice.ListDeploymentTracesRequest.Options'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.service.webservice.ListDeploymentTracesResponse.repeatedFields_, null); +}; +goog.inherits(proto.grpc.service.webservice.ListDeploymentTracesResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.service.webservice.ListDeploymentTracesResponse.displayName = 'proto.grpc.service.webservice.ListDeploymentTracesResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.repeatedFields_, null); +}; +goog.inherits(proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.displayName = 'proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -11557,6 +11647,778 @@ proto.grpc.service.webservice.ApproveStageResponse.prototype.setCommandId = func +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.service.webservice.ListDeploymentTracesRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.toObject = function(includeInstance, msg) { + var f, obj = { + options: (f = msg.getOptions()) && proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.toObject(includeInstance, f), + pageSize: jspb.Message.getFieldWithDefault(msg, 2, 0), + cursor: jspb.Message.getFieldWithDefault(msg, 3, ""), + pageMinUpdatedAt: jspb.Message.getFieldWithDefault(msg, 4, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.service.webservice.ListDeploymentTracesRequest; + return proto.grpc.service.webservice.ListDeploymentTracesRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.grpc.service.webservice.ListDeploymentTracesRequest.Options; + reader.readMessage(value,proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.deserializeBinaryFromReader); + msg.setOptions(value); + break; + case 2: + var value = /** @type {number} */ (reader.readInt32()); + msg.setPageSize(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setCursor(value); + break; + case 4: + var value = /** @type {number} */ (reader.readInt64()); + msg.setPageMinUpdatedAt(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.service.webservice.ListDeploymentTracesRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getOptions(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.serializeBinaryToWriter + ); + } + f = message.getPageSize(); + if (f !== 0) { + writer.writeInt32( + 2, + f + ); + } + f = message.getCursor(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getPageMinUpdatedAt(); + if (f !== 0) { + writer.writeInt64( + 4, + f + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.toObject = function(includeInstance, msg) { + var f, obj = { + commitHash: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.service.webservice.ListDeploymentTracesRequest.Options; + return proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setCommitHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getCommitHash(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string commit_hash = 1; + * @return {string} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.prototype.getCommitHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.Options.prototype.setCommitHash = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional Options options = 1; + * @return {?proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.getOptions = function() { + return /** @type{?proto.grpc.service.webservice.ListDeploymentTracesRequest.Options} */ ( + jspb.Message.getWrapperField(this, proto.grpc.service.webservice.ListDeploymentTracesRequest.Options, 1)); +}; + + +/** + * @param {?proto.grpc.service.webservice.ListDeploymentTracesRequest.Options|undefined} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} returns this +*/ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.setOptions = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.clearOptions = function() { + return this.setOptions(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.hasOptions = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional int32 page_size = 2; + * @return {number} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.getPageSize = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.setPageSize = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * optional string cursor = 3; + * @return {string} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.getCursor = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.setCursor = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional int64 page_min_updated_at = 4; + * @return {number} + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.getPageMinUpdatedAt = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesRequest} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesRequest.prototype.setPageMinUpdatedAt = function(value) { + return jspb.Message.setProto3IntField(this, 4, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.service.webservice.ListDeploymentTracesResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.toObject = function(includeInstance, msg) { + var f, obj = { + tracesList: jspb.Message.toObjectList(msg.getTracesList(), + proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.toObject, includeInstance), + cursor: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.service.webservice.ListDeploymentTracesResponse; + return proto.grpc.service.webservice.ListDeploymentTracesResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes; + reader.readMessage(value,proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.deserializeBinaryFromReader); + msg.addTraces(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setCursor(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.service.webservice.ListDeploymentTracesResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTracesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.serializeBinaryToWriter + ); + } + f = message.getCursor(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.repeatedFields_ = [2]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.toObject = function(includeInstance, msg) { + var f, obj = { + trace: (f = msg.getTrace()) && pkg_model_deployment_trace_pb.DeploymentTrace.toObject(includeInstance, f), + deploymentsList: jspb.Message.toObjectList(msg.getDeploymentsList(), + pkg_model_deployment_pb.Deployment.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes; + return proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new pkg_model_deployment_trace_pb.DeploymentTrace; + reader.readMessage(value,pkg_model_deployment_trace_pb.DeploymentTrace.deserializeBinaryFromReader); + msg.setTrace(value); + break; + case 2: + var value = new pkg_model_deployment_pb.Deployment; + reader.readMessage(value,pkg_model_deployment_pb.Deployment.deserializeBinaryFromReader); + msg.addDeployments(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTrace(); + if (f != null) { + writer.writeMessage( + 1, + f, + pkg_model_deployment_trace_pb.DeploymentTrace.serializeBinaryToWriter + ); + } + f = message.getDeploymentsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 2, + f, + pkg_model_deployment_pb.Deployment.serializeBinaryToWriter + ); + } +}; + + +/** + * optional model.DeploymentTrace trace = 1; + * @return {?proto.model.DeploymentTrace} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.getTrace = function() { + return /** @type{?proto.model.DeploymentTrace} */ ( + jspb.Message.getWrapperField(this, pkg_model_deployment_trace_pb.DeploymentTrace, 1)); +}; + + +/** + * @param {?proto.model.DeploymentTrace|undefined} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} returns this +*/ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.setTrace = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.clearTrace = function() { + return this.setTrace(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.hasTrace = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * repeated model.Deployment deployments = 2; + * @return {!Array} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.getDeploymentsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, pkg_model_deployment_pb.Deployment, 2)); +}; + + +/** + * @param {!Array} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} returns this +*/ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.setDeploymentsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 2, value); +}; + + +/** + * @param {!proto.model.Deployment=} opt_value + * @param {number=} opt_index + * @return {!proto.model.Deployment} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.addDeployments = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.model.Deployment, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes.prototype.clearDeploymentsList = function() { + return this.setDeploymentsList([]); +}; + + +/** + * repeated DeploymentTraceRes traces = 1; + * @return {!Array} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.getTracesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse} returns this +*/ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.setTracesList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes=} opt_value + * @param {number=} opt_index + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.addTraces = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.grpc.service.webservice.ListDeploymentTracesResponse.DeploymentTraceRes, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.clearTracesList = function() { + return this.setTracesList([]); +}; + + +/** + * optional string cursor = 2; + * @return {string} + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.getCursor = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.service.webservice.ListDeploymentTracesResponse} returns this + */ +proto.grpc.service.webservice.ListDeploymentTracesResponse.prototype.setCursor = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/web/model/deployment_pb.d.ts b/web/model/deployment_pb.d.ts index 4c1e36d550..ee6bf0872a 100644 --- a/web/model/deployment_pb.d.ts +++ b/web/model/deployment_pb.d.ts @@ -87,6 +87,9 @@ export class Deployment extends jspb.Message { getDeploymentChainBlockIndex(): number; setDeploymentChainBlockIndex(value: number): Deployment; + getDeploymentTraceCommitHash(): string; + setDeploymentTraceCommitHash(value: string): Deployment; + getCompletedAt(): number; setCompletedAt(value: number): Deployment; @@ -130,6 +133,7 @@ export namespace Deployment { metadataV2?: DeploymentMetadata.AsObject, deploymentChainId: string, deploymentChainBlockIndex: number, + deploymentTraceCommitHash: string, completedAt: number, createdAt: number, updatedAt: number, diff --git a/web/model/deployment_pb.js b/web/model/deployment_pb.js index 1937e9491b..693d64f4d4 100644 --- a/web/model/deployment_pb.js +++ b/web/model/deployment_pb.js @@ -248,6 +248,7 @@ proto.model.Deployment.toObject = function(includeInstance, msg) { metadataV2: (f = msg.getMetadataV2()) && proto.model.DeploymentMetadata.toObject(includeInstance, f), deploymentChainId: jspb.Message.getFieldWithDefault(msg, 40, ""), deploymentChainBlockIndex: jspb.Message.getFieldWithDefault(msg, 41, 0), + deploymentTraceCommitHash: jspb.Message.getFieldWithDefault(msg, 50, ""), completedAt: jspb.Message.getFieldWithDefault(msg, 100, 0), createdAt: jspb.Message.getFieldWithDefault(msg, 101, 0), updatedAt: jspb.Message.getFieldWithDefault(msg, 102, 0) @@ -394,6 +395,10 @@ proto.model.Deployment.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {number} */ (reader.readUint32()); msg.setDeploymentChainBlockIndex(value); break; + case 50: + var value = /** @type {string} */ (reader.readString()); + msg.setDeploymentTraceCommitHash(value); + break; case 100: var value = /** @type {number} */ (reader.readInt64()); msg.setCompletedAt(value); @@ -599,6 +604,13 @@ proto.model.Deployment.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getDeploymentTraceCommitHash(); + if (f.length > 0) { + writer.writeString( + 50, + f + ); + } f = message.getCompletedAt(); if (f !== 0) { writer.writeInt64( @@ -1167,6 +1179,24 @@ proto.model.Deployment.prototype.setDeploymentChainBlockIndex = function(value) }; +/** + * optional string deployment_trace_commit_hash = 50; + * @return {string} + */ +proto.model.Deployment.prototype.getDeploymentTraceCommitHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 50, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.Deployment} returns this + */ +proto.model.Deployment.prototype.setDeploymentTraceCommitHash = function(value) { + return jspb.Message.setProto3StringField(this, 50, value); +}; + + /** * optional int64 completed_at = 100; * @return {number} diff --git a/web/model/deployment_trace_pb.d.ts b/web/model/deployment_trace_pb.d.ts new file mode 100644 index 0000000000..0dd552f5cd --- /dev/null +++ b/web/model/deployment_trace_pb.d.ts @@ -0,0 +1,59 @@ +import * as jspb from 'google-protobuf' + + + + +export class DeploymentTrace extends jspb.Message { + getId(): string; + setId(value: string): DeploymentTrace; + + getTitle(): string; + setTitle(value: string): DeploymentTrace; + + getCommitHash(): string; + setCommitHash(value: string): DeploymentTrace; + + getCommitUrl(): string; + setCommitUrl(value: string): DeploymentTrace; + + getCommitMessage(): string; + setCommitMessage(value: string): DeploymentTrace; + + getCommitTimestamp(): number; + setCommitTimestamp(value: number): DeploymentTrace; + + getAuthor(): string; + setAuthor(value: string): DeploymentTrace; + + getCompletedAt(): number; + setCompletedAt(value: number): DeploymentTrace; + + getCreatedAt(): number; + setCreatedAt(value: number): DeploymentTrace; + + getUpdatedAt(): number; + setUpdatedAt(value: number): DeploymentTrace; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DeploymentTrace.AsObject; + static toObject(includeInstance: boolean, msg: DeploymentTrace): DeploymentTrace.AsObject; + static serializeBinaryToWriter(message: DeploymentTrace, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DeploymentTrace; + static deserializeBinaryFromReader(message: DeploymentTrace, reader: jspb.BinaryReader): DeploymentTrace; +} + +export namespace DeploymentTrace { + export type AsObject = { + id: string, + title: string, + commitHash: string, + commitUrl: string, + commitMessage: string, + commitTimestamp: number, + author: string, + completedAt: number, + createdAt: number, + updatedAt: number, + } +} + diff --git a/web/model/deployment_trace_pb.js b/web/model/deployment_trace_pb.js new file mode 100644 index 0000000000..1f376e8e1e --- /dev/null +++ b/web/model/deployment_trace_pb.js @@ -0,0 +1,448 @@ +// source: pkg/model/deployment_trace.proto +/** + * @fileoverview + * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = + (typeof globalThis !== 'undefined' && globalThis) || + (typeof window !== 'undefined' && window) || + (typeof global !== 'undefined' && global) || + (typeof self !== 'undefined' && self) || + (function () { return this; }).call(null) || + Function('return this')(); + + + +goog.exportSymbol('proto.model.DeploymentTrace', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.model.DeploymentTrace = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.model.DeploymentTrace, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.model.DeploymentTrace.displayName = 'proto.model.DeploymentTrace'; +} + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.model.DeploymentTrace.prototype.toObject = function(opt_includeInstance) { + return proto.model.DeploymentTrace.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.model.DeploymentTrace} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.model.DeploymentTrace.toObject = function(includeInstance, msg) { + var f, obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, ""), + title: jspb.Message.getFieldWithDefault(msg, 2, ""), + commitHash: jspb.Message.getFieldWithDefault(msg, 3, ""), + commitUrl: jspb.Message.getFieldWithDefault(msg, 4, ""), + commitMessage: jspb.Message.getFieldWithDefault(msg, 5, ""), + commitTimestamp: jspb.Message.getFieldWithDefault(msg, 6, 0), + author: jspb.Message.getFieldWithDefault(msg, 7, ""), + completedAt: jspb.Message.getFieldWithDefault(msg, 100, 0), + createdAt: jspb.Message.getFieldWithDefault(msg, 101, 0), + updatedAt: jspb.Message.getFieldWithDefault(msg, 102, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.model.DeploymentTrace} + */ +proto.model.DeploymentTrace.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.model.DeploymentTrace; + return proto.model.DeploymentTrace.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.model.DeploymentTrace} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.model.DeploymentTrace} + */ +proto.model.DeploymentTrace.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setTitle(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setCommitHash(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setCommitUrl(value); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.setCommitMessage(value); + break; + case 6: + var value = /** @type {number} */ (reader.readInt64()); + msg.setCommitTimestamp(value); + break; + case 7: + var value = /** @type {string} */ (reader.readString()); + msg.setAuthor(value); + break; + case 100: + var value = /** @type {number} */ (reader.readInt64()); + msg.setCompletedAt(value); + break; + case 101: + var value = /** @type {number} */ (reader.readInt64()); + msg.setCreatedAt(value); + break; + case 102: + var value = /** @type {number} */ (reader.readInt64()); + msg.setUpdatedAt(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.model.DeploymentTrace.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.model.DeploymentTrace.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.model.DeploymentTrace} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.model.DeploymentTrace.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getTitle(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getCommitHash(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getCommitUrl(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } + f = message.getCommitMessage(); + if (f.length > 0) { + writer.writeString( + 5, + f + ); + } + f = message.getCommitTimestamp(); + if (f !== 0) { + writer.writeInt64( + 6, + f + ); + } + f = message.getAuthor(); + if (f.length > 0) { + writer.writeString( + 7, + f + ); + } + f = message.getCompletedAt(); + if (f !== 0) { + writer.writeInt64( + 100, + f + ); + } + f = message.getCreatedAt(); + if (f !== 0) { + writer.writeInt64( + 101, + f + ); + } + f = message.getUpdatedAt(); + if (f !== 0) { + writer.writeInt64( + 102, + f + ); + } +}; + + +/** + * optional string id = 1; + * @return {string} + */ +proto.model.DeploymentTrace.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string title = 2; + * @return {string} + */ +proto.model.DeploymentTrace.prototype.getTitle = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setTitle = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string commit_hash = 3; + * @return {string} + */ +proto.model.DeploymentTrace.prototype.getCommitHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setCommitHash = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string commit_url = 4; + * @return {string} + */ +proto.model.DeploymentTrace.prototype.getCommitUrl = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setCommitUrl = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + +/** + * optional string commit_message = 5; + * @return {string} + */ +proto.model.DeploymentTrace.prototype.getCommitMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setCommitMessage = function(value) { + return jspb.Message.setProto3StringField(this, 5, value); +}; + + +/** + * optional int64 commit_timestamp = 6; + * @return {number} + */ +proto.model.DeploymentTrace.prototype.getCommitTimestamp = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setCommitTimestamp = function(value) { + return jspb.Message.setProto3IntField(this, 6, value); +}; + + +/** + * optional string author = 7; + * @return {string} + */ +proto.model.DeploymentTrace.prototype.getAuthor = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "")); +}; + + +/** + * @param {string} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setAuthor = function(value) { + return jspb.Message.setProto3StringField(this, 7, value); +}; + + +/** + * optional int64 completed_at = 100; + * @return {number} + */ +proto.model.DeploymentTrace.prototype.getCompletedAt = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 100, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setCompletedAt = function(value) { + return jspb.Message.setProto3IntField(this, 100, value); +}; + + +/** + * optional int64 created_at = 101; + * @return {number} + */ +proto.model.DeploymentTrace.prototype.getCreatedAt = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 101, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setCreatedAt = function(value) { + return jspb.Message.setProto3IntField(this, 101, value); +}; + + +/** + * optional int64 updated_at = 102; + * @return {number} + */ +proto.model.DeploymentTrace.prototype.getUpdatedAt = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 102, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.model.DeploymentTrace} returns this + */ +proto.model.DeploymentTrace.prototype.setUpdatedAt = function(value) { + return jspb.Message.setProto3IntField(this, 102, value); +}; + + +goog.object.extend(exports, proto.model); diff --git a/web/src/__fixtures__/dummy-deployment.ts b/web/src/__fixtures__/dummy-deployment.ts index 38f3f40eb1..bcf90fa5ab 100644 --- a/web/src/__fixtures__/dummy-deployment.ts +++ b/web/src/__fixtures__/dummy-deployment.ts @@ -27,6 +27,7 @@ export const dummyDeployment: Deployment.AsObject = { platformProvider: "kube-1", deployTargetsByPluginMap: [], labelsMap: [], + deploymentTraceCommitHash: "", createdAt: createdAt.unix(), updatedAt: completedAt.unix(), completedAt: completedAt.unix(),