diff --git a/api/orchestration.go b/api/orchestration.go index cb21aea..ef7517a 100644 --- a/api/orchestration.go +++ b/api/orchestration.go @@ -3,10 +3,8 @@ package api import ( "encoding/json" "errors" - "fmt" "time" - "github.com/dapr/durabletask-go/api/helpers" "github.com/dapr/durabletask-go/api/protos" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" @@ -49,18 +47,6 @@ type OrchestrationIdReusePolicy = protos.OrchestrationIdReusePolicy // InstanceID is a unique identifier for an orchestration instance. type InstanceID string -type OrchestrationMetadata struct { - InstanceID InstanceID - Name string - RuntimeStatus protos.OrchestrationStatus - CreatedAt time.Time - LastUpdatedAt time.Time - SerializedInput string - SerializedOutput string - SerializedCustomStatus string - FailureDetails *protos.TaskFailureDetails -} - // NewOrchestrationOptions configures options for starting a new orchestration. type NewOrchestrationOptions func(*protos.CreateInstanceRequest) error @@ -110,9 +96,9 @@ func WithInput(input any) NewOrchestrationOptions { } // WithRawInput configures an input for the orchestration. The specified input must be a string. -func WithRawInput(rawInput string) NewOrchestrationOptions { +func WithRawInput(rawInput *wrapperspb.StringValue) NewOrchestrationOptions { return func(req *protos.CreateInstanceRequest) error { - req.Input = wrapperspb.String(rawInput) + req.Input = rawInput return nil } } @@ -147,9 +133,9 @@ func WithEventPayload(data any) RaiseEventOptions { } // WithRawEventData configures an event payload that is a raw, unprocessed string (e.g. JSON data). -func WithRawEventData(data string) RaiseEventOptions { +func WithRawEventData(data *wrapperspb.StringValue) RaiseEventOptions { return func(req *protos.RaiseEventRequest) error { - req.Input = wrapperspb.String(data) + req.Input = data return nil } } @@ -167,9 +153,9 @@ func WithOutput(data any) TerminateOptions { } // WithRawOutput configures a raw, unprocessed output (i.e. pre-serialized) for the terminated orchestration. -func WithRawOutput(data string) TerminateOptions { +func WithRawOutput(data *wrapperspb.StringValue) TerminateOptions { return func(req *protos.TerminateRequest) error { - req.Output = wrapperspb.String(data) + req.Output = data return nil } } @@ -190,168 +176,11 @@ func WithRecursivePurge(recursive bool) PurgeOptions { } } -func NewOrchestrationMetadata( - iid InstanceID, - name string, - status protos.OrchestrationStatus, - createdAt time.Time, - lastUpdatedAt time.Time, - serializedInput string, - serializedOutput string, - serializedCustomStatus string, - failureDetails *protos.TaskFailureDetails, -) *OrchestrationMetadata { - return &OrchestrationMetadata{ - InstanceID: iid, - Name: name, - RuntimeStatus: status, - CreatedAt: createdAt, - LastUpdatedAt: lastUpdatedAt, - SerializedInput: serializedInput, - SerializedOutput: serializedOutput, - SerializedCustomStatus: serializedCustomStatus, - FailureDetails: failureDetails, - } -} - -func (m *OrchestrationMetadata) MarshalJSON() ([]byte, error) { - obj := make(map[string]any, 16) - - // Required values - obj["id"] = m.InstanceID - obj["name"] = m.Name - obj["status"] = helpers.ToRuntimeStatusString(m.RuntimeStatus) - obj["createdAt"] = m.CreatedAt - obj["lastUpdatedAt"] = m.LastUpdatedAt - - // Optional values - if m.SerializedInput != "" { - obj["serializedInput"] = m.SerializedInput - } - if m.SerializedOutput != "" { - obj["serializedOutput"] = m.SerializedOutput - } - if m.SerializedCustomStatus != "" { - obj["serializedCustomStatus"] = m.SerializedCustomStatus - } - - // Optional failure details (recursive) - if m.FailureDetails != nil { - const fieldCount = 4 - root := make(map[string]any, fieldCount) - current := root - f := m.FailureDetails - for { - current["type"] = f.ErrorType - current["message"] = f.ErrorMessage - if f.StackTrace != nil { - current["stackTrace"] = f.StackTrace.GetValue() - } - if f.InnerFailure == nil { - // base case - break - } - // recursive case - f = f.InnerFailure - inner := make(map[string]any, fieldCount) - current["innerFailure"] = inner - current = inner - } - obj["failureDetails"] = root - } - return json.Marshal(obj) -} - -func (m *OrchestrationMetadata) UnmarshalJSON(data []byte) (err error) { - defer func() { - if r := recover(); r != nil { - if rerr, ok := r.(error); ok { - err = fmt.Errorf("failed to unmarshal the JSON payload: %w", rerr) - } else { - err = errors.New("failed to unmarshal the JSON payload") - } - } - }() - - var obj map[string]any - if err := json.Unmarshal(data, &obj); err != nil { - return fmt.Errorf("failed to unmarshal orchestration metadata json: %w", err) - } - - if id, ok := obj["id"]; ok { - m.InstanceID = InstanceID(id.(string)) - } else { - return errors.New("missing 'id' field") - } - if name, ok := obj["name"]; ok { - m.Name = name.(string) - } else { - return errors.New("missing 'name' field") - } - if status, ok := obj["status"]; ok { - m.RuntimeStatus = helpers.FromRuntimeStatusString(status.(string)) - } else { - return errors.New("missing 'name' field") - } - if createdAt, ok := obj["createdAt"]; ok { - if time, err := time.Parse(time.RFC3339, createdAt.(string)); err == nil { - m.CreatedAt = time - } else { - return errors.New("invalid 'createdAt' field: must be RFC3339 format") - } - } else { - return errors.New("missing 'createdAt' field") - } - if lastUpdatedAt, ok := obj["lastUpdatedAt"]; ok { - if time, err := time.Parse(time.RFC3339, lastUpdatedAt.(string)); err == nil { - m.LastUpdatedAt = time - } else { - return errors.New("invalid 'lastUpdatedAt' field: must be RFC3339 format") - } - } else { - return errors.New("missing 'lastUpdatedAt' field") - } - if input, ok := obj["serializedInput"]; ok { - m.SerializedInput = input.(string) - } - if output, ok := obj["serializedOutput"]; ok { - m.SerializedOutput = output.(string) - } - if output, ok := obj["serializedCustomStatus"]; ok { - m.SerializedCustomStatus = output.(string) - } - - failureDetails, ok := obj["failureDetails"] - if ok { - m.FailureDetails = &protos.TaskFailureDetails{} - current := m.FailureDetails - obj = failureDetails.(map[string]any) - for { - current.ErrorType = obj["type"].(string) - current.ErrorMessage = obj["message"].(string) - if stackTrace, ok := obj["stackTrace"]; ok { - current.StackTrace = wrapperspb.String(stackTrace.(string)) - } - if innerFailure, ok := obj["innerFailure"]; ok { - // recursive case - next := &protos.TaskFailureDetails{} - current.InnerFailure = next - current = next - obj = innerFailure.(map[string]any) - } else { - // base case - break - } - } - } - return nil -} - -func (o *OrchestrationMetadata) IsRunning() bool { - return !o.IsComplete() +func OrchestrationMetadataIsRunning(o *protos.OrchestrationMetadata) bool { + return !OrchestrationMetadataIsComplete(o) } -func (o *OrchestrationMetadata) IsComplete() bool { +func OrchestrationMetadataIsComplete(o *protos.OrchestrationMetadata) bool { return o.RuntimeStatus == protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED || o.RuntimeStatus == protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED || o.RuntimeStatus == protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED || diff --git a/api/protos/backend_service.pb.go b/api/protos/backend_service.pb.go new file mode 100644 index 0000000..9ab526a --- /dev/null +++ b/api/protos/backend_service.pb.go @@ -0,0 +1,1775 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.32.0 +// protoc v4.25.4 +// source: backend_service.proto + +package protos + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + 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) +) + +// Request payload for adding new orchestration events. +type AddEventRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the orchestration to send an event to. + Instance *OrchestrationInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + // The event to send to the orchestration. + Event *HistoryEvent `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` +} + +func (x *AddEventRequest) Reset() { + *x = AddEventRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddEventRequest) ProtoMessage() {} + +func (x *AddEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddEventRequest.ProtoReflect.Descriptor instead. +func (*AddEventRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{0} +} + +func (x *AddEventRequest) GetInstance() *OrchestrationInstance { + if x != nil { + return x.Instance + } + return nil +} + +func (x *AddEventRequest) GetEvent() *HistoryEvent { + if x != nil { + return x.Event + } + return nil +} + +// Response payload for adding new orchestration events. +type AddEventResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddEventResponse) Reset() { + *x = AddEventResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddEventResponse) ProtoMessage() {} + +func (x *AddEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddEventResponse.ProtoReflect.Descriptor instead. +func (*AddEventResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{1} +} + +// Request payload for waiting for instance completion. +type WaitForInstanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + GetInputsAndOutputs bool `protobuf:"varint,2,opt,name=getInputsAndOutputs,proto3" json:"getInputsAndOutputs,omitempty"` +} + +func (x *WaitForInstanceRequest) Reset() { + *x = WaitForInstanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WaitForInstanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WaitForInstanceRequest) ProtoMessage() {} + +func (x *WaitForInstanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WaitForInstanceRequest.ProtoReflect.Descriptor instead. +func (*WaitForInstanceRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{2} +} + +func (x *WaitForInstanceRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *WaitForInstanceRequest) GetGetInputsAndOutputs() bool { + if x != nil { + return x.GetInputsAndOutputs + } + return false +} + +// Response payload for waiting for instance completion. +type WaitForInstanceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` + OrchestrationState *OrchestrationState `protobuf:"bytes,2,opt,name=orchestrationState,proto3" json:"orchestrationState,omitempty"` +} + +func (x *WaitForInstanceResponse) Reset() { + *x = WaitForInstanceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WaitForInstanceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WaitForInstanceResponse) ProtoMessage() {} + +func (x *WaitForInstanceResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WaitForInstanceResponse.ProtoReflect.Descriptor instead. +func (*WaitForInstanceResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{3} +} + +func (x *WaitForInstanceResponse) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +func (x *WaitForInstanceResponse) GetOrchestrationState() *OrchestrationState { + if x != nil { + return x.OrchestrationState + } + return nil +} + +// Request parameters for fetching orchestration runtime state. +type GetOrchestrationRuntimeStateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the target orchestration instance. + Instance *OrchestrationInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` +} + +func (x *GetOrchestrationRuntimeStateRequest) Reset() { + *x = GetOrchestrationRuntimeStateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrchestrationRuntimeStateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrchestrationRuntimeStateRequest) ProtoMessage() {} + +func (x *GetOrchestrationRuntimeStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrchestrationRuntimeStateRequest.ProtoReflect.Descriptor instead. +func (*GetOrchestrationRuntimeStateRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{4} +} + +func (x *GetOrchestrationRuntimeStateRequest) GetInstance() *OrchestrationInstance { + if x != nil { + return x.Instance + } + return nil +} + +// Response payload returned when fetching orchestration runtime state. +type GetOrchestrationRuntimeStateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The existing history events for the target orchestration instance. + History []*HistoryEvent `protobuf:"bytes,1,rep,name=history,proto3" json:"history,omitempty"` +} + +func (x *GetOrchestrationRuntimeStateResponse) Reset() { + *x = GetOrchestrationRuntimeStateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrchestrationRuntimeStateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrchestrationRuntimeStateResponse) ProtoMessage() {} + +func (x *GetOrchestrationRuntimeStateResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrchestrationRuntimeStateResponse.ProtoReflect.Descriptor instead. +func (*GetOrchestrationRuntimeStateResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{5} +} + +func (x *GetOrchestrationRuntimeStateResponse) GetHistory() []*HistoryEvent { + if x != nil { + return x.History + } + return nil +} + +// Request payload for completing an activity work item. +type CompleteActivityWorkItemRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The completion token that was provided when the work item was fetched. + CompletionToken string `protobuf:"bytes,1,opt,name=completionToken,proto3" json:"completionToken,omitempty"` + // The response event that will be sent to the orchestrator. + // This must be either a TaskCompleted event or a TaskFailed event. + ResponseEvent *HistoryEvent `protobuf:"bytes,2,opt,name=responseEvent,proto3" json:"responseEvent,omitempty"` +} + +func (x *CompleteActivityWorkItemRequest) Reset() { + *x = CompleteActivityWorkItemRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompleteActivityWorkItemRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompleteActivityWorkItemRequest) ProtoMessage() {} + +func (x *CompleteActivityWorkItemRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompleteActivityWorkItemRequest.ProtoReflect.Descriptor instead. +func (*CompleteActivityWorkItemRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{6} +} + +func (x *CompleteActivityWorkItemRequest) GetCompletionToken() string { + if x != nil { + return x.CompletionToken + } + return "" +} + +func (x *CompleteActivityWorkItemRequest) GetResponseEvent() *HistoryEvent { + if x != nil { + return x.ResponseEvent + } + return nil +} + +// Response payload for completing an activity work item. +type CompleteActivityWorkItemResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CompleteActivityWorkItemResponse) Reset() { + *x = CompleteActivityWorkItemResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompleteActivityWorkItemResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompleteActivityWorkItemResponse) ProtoMessage() {} + +func (x *CompleteActivityWorkItemResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompleteActivityWorkItemResponse.ProtoReflect.Descriptor instead. +func (*CompleteActivityWorkItemResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{7} +} + +// Request payload for abandoning an activity work item. +type AbandonActivityWorkItemRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The completion token that was provided when the work item was fetched. + CompletionToken string `protobuf:"bytes,1,opt,name=completionToken,proto3" json:"completionToken,omitempty"` +} + +func (x *AbandonActivityWorkItemRequest) Reset() { + *x = AbandonActivityWorkItemRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AbandonActivityWorkItemRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbandonActivityWorkItemRequest) ProtoMessage() {} + +func (x *AbandonActivityWorkItemRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbandonActivityWorkItemRequest.ProtoReflect.Descriptor instead. +func (*AbandonActivityWorkItemRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{8} +} + +func (x *AbandonActivityWorkItemRequest) GetCompletionToken() string { + if x != nil { + return x.CompletionToken + } + return "" +} + +// Response payload for abandoning an activity work item. +type AbandonActivityWorkItemResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AbandonActivityWorkItemResponse) Reset() { + *x = AbandonActivityWorkItemResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AbandonActivityWorkItemResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbandonActivityWorkItemResponse) ProtoMessage() {} + +func (x *AbandonActivityWorkItemResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbandonActivityWorkItemResponse.ProtoReflect.Descriptor instead. +func (*AbandonActivityWorkItemResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{9} +} + +// Request payload for completing an orchestration work item. +type CompleteOrchestrationWorkItemRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The completion token that was provided when the work item was fetched. + CompletionToken string `protobuf:"bytes,1,opt,name=completionToken,proto3" json:"completionToken,omitempty"` + NewExecutionId *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=newExecutionId,proto3" json:"newExecutionId,omitempty"` + RuntimeStatus OrchestrationStatus `protobuf:"varint,3,opt,name=runtimeStatus,proto3,enum=OrchestrationStatus" json:"runtimeStatus,omitempty"` + CustomStatus *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=customStatus,proto3" json:"customStatus,omitempty"` + NewHistory []*HistoryEvent `protobuf:"bytes,5,rep,name=newHistory,proto3" json:"newHistory,omitempty"` + NewTasks []*HistoryEvent `protobuf:"bytes,6,rep,name=newTasks,proto3" json:"newTasks,omitempty"` + NewTimers []*HistoryEvent `protobuf:"bytes,7,rep,name=newTimers,proto3" json:"newTimers,omitempty"` + NewMessages []*OrchestratorMessage `protobuf:"bytes,8,rep,name=newMessages,proto3" json:"newMessages,omitempty"` +} + +func (x *CompleteOrchestrationWorkItemRequest) Reset() { + *x = CompleteOrchestrationWorkItemRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompleteOrchestrationWorkItemRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompleteOrchestrationWorkItemRequest) ProtoMessage() {} + +func (x *CompleteOrchestrationWorkItemRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompleteOrchestrationWorkItemRequest.ProtoReflect.Descriptor instead. +func (*CompleteOrchestrationWorkItemRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{10} +} + +func (x *CompleteOrchestrationWorkItemRequest) GetCompletionToken() string { + if x != nil { + return x.CompletionToken + } + return "" +} + +func (x *CompleteOrchestrationWorkItemRequest) GetNewExecutionId() *wrapperspb.StringValue { + if x != nil { + return x.NewExecutionId + } + return nil +} + +func (x *CompleteOrchestrationWorkItemRequest) GetRuntimeStatus() OrchestrationStatus { + if x != nil { + return x.RuntimeStatus + } + return OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING +} + +func (x *CompleteOrchestrationWorkItemRequest) GetCustomStatus() *wrapperspb.StringValue { + if x != nil { + return x.CustomStatus + } + return nil +} + +func (x *CompleteOrchestrationWorkItemRequest) GetNewHistory() []*HistoryEvent { + if x != nil { + return x.NewHistory + } + return nil +} + +func (x *CompleteOrchestrationWorkItemRequest) GetNewTasks() []*HistoryEvent { + if x != nil { + return x.NewTasks + } + return nil +} + +func (x *CompleteOrchestrationWorkItemRequest) GetNewTimers() []*HistoryEvent { + if x != nil { + return x.NewTimers + } + return nil +} + +func (x *CompleteOrchestrationWorkItemRequest) GetNewMessages() []*OrchestratorMessage { + if x != nil { + return x.NewMessages + } + return nil +} + +// Response payload for completing an orchestration work item. +type CompleteOrchestrationWorkItemResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CompleteOrchestrationWorkItemResponse) Reset() { + *x = CompleteOrchestrationWorkItemResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompleteOrchestrationWorkItemResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompleteOrchestrationWorkItemResponse) ProtoMessage() {} + +func (x *CompleteOrchestrationWorkItemResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompleteOrchestrationWorkItemResponse.ProtoReflect.Descriptor instead. +func (*CompleteOrchestrationWorkItemResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{11} +} + +// A message to be delivered to an orchestration by the backend. +type OrchestratorMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the orchestration instance to receive the message. + Instance *OrchestrationInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + // The event payload to be received by the target orchestration. + Event *HistoryEvent `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` +} + +func (x *OrchestratorMessage) Reset() { + *x = OrchestratorMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OrchestratorMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrchestratorMessage) ProtoMessage() {} + +func (x *OrchestratorMessage) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OrchestratorMessage.ProtoReflect.Descriptor instead. +func (*OrchestratorMessage) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{12} +} + +func (x *OrchestratorMessage) GetInstance() *OrchestrationInstance { + if x != nil { + return x.Instance + } + return nil +} + +func (x *OrchestratorMessage) GetEvent() *HistoryEvent { + if x != nil { + return x.Event + } + return nil +} + +// Request payload for abandoning an orchestration work item. +type AbandonOrchestrationWorkItemRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The completion token that was provided when the work item was fetched. + CompletionToken string `protobuf:"bytes,1,opt,name=completionToken,proto3" json:"completionToken,omitempty"` +} + +func (x *AbandonOrchestrationWorkItemRequest) Reset() { + *x = AbandonOrchestrationWorkItemRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AbandonOrchestrationWorkItemRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbandonOrchestrationWorkItemRequest) ProtoMessage() {} + +func (x *AbandonOrchestrationWorkItemRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbandonOrchestrationWorkItemRequest.ProtoReflect.Descriptor instead. +func (*AbandonOrchestrationWorkItemRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{13} +} + +func (x *AbandonOrchestrationWorkItemRequest) GetCompletionToken() string { + if x != nil { + return x.CompletionToken + } + return "" +} + +// Response payload for abandoning an orchestration work item. +type AbandonOrchestrationWorkItemResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AbandonOrchestrationWorkItemResponse) Reset() { + *x = AbandonOrchestrationWorkItemResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AbandonOrchestrationWorkItemResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbandonOrchestrationWorkItemResponse) ProtoMessage() {} + +func (x *AbandonOrchestrationWorkItemResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbandonOrchestrationWorkItemResponse.ProtoReflect.Descriptor instead. +func (*AbandonOrchestrationWorkItemResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{14} +} + +// Request payload for ping operations. +type PingRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PingRequest) Reset() { + *x = PingRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PingRequest) ProtoMessage() {} + +func (x *PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. +func (*PingRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{15} +} + +// Response payload for ping operations. +type PingResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PingResponse) Reset() { + *x = PingResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PingResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PingResponse) ProtoMessage() {} + +func (x *PingResponse) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PingResponse.ProtoReflect.Descriptor instead. +func (*PingResponse) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{16} +} + +type WorkflowState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Inbox []*HistoryEvent `protobuf:"bytes,1,rep,name=inbox,proto3" json:"inbox,omitempty"` + History []*HistoryEvent `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"` + CustomStatus *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=customStatus,proto3" json:"customStatus,omitempty"` + Generation uint64 `protobuf:"varint,4,opt,name=generation,proto3" json:"generation,omitempty"` +} + +func (x *WorkflowState) Reset() { + *x = WorkflowState{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WorkflowState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkflowState) ProtoMessage() {} + +func (x *WorkflowState) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkflowState.ProtoReflect.Descriptor instead. +func (*WorkflowState) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{17} +} + +func (x *WorkflowState) GetInbox() []*HistoryEvent { + if x != nil { + return x.Inbox + } + return nil +} + +func (x *WorkflowState) GetHistory() []*HistoryEvent { + if x != nil { + return x.History + } + return nil +} + +func (x *WorkflowState) GetCustomStatus() *wrapperspb.StringValue { + if x != nil { + return x.CustomStatus + } + return nil +} + +func (x *WorkflowState) GetGeneration() uint64 { + if x != nil { + return x.Generation + } + return 0 +} + +type CreateWorkflowInstanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartEvent *HistoryEvent `protobuf:"bytes,1,opt,name=startEvent,proto3" json:"startEvent,omitempty"` + Policy *OrchestrationIdReusePolicy `protobuf:"bytes,2,opt,name=policy,proto3,oneof" json:"policy,omitempty"` +} + +func (x *CreateWorkflowInstanceRequest) Reset() { + *x = CreateWorkflowInstanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateWorkflowInstanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateWorkflowInstanceRequest) ProtoMessage() {} + +func (x *CreateWorkflowInstanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateWorkflowInstanceRequest.ProtoReflect.Descriptor instead. +func (*CreateWorkflowInstanceRequest) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{18} +} + +func (x *CreateWorkflowInstanceRequest) GetStartEvent() *HistoryEvent { + if x != nil { + return x.StartEvent + } + return nil +} + +func (x *CreateWorkflowInstanceRequest) GetPolicy() *OrchestrationIdReusePolicy { + if x != nil { + return x.Policy + } + return nil +} + +type OrchestrationMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + RuntimeStatus OrchestrationStatus `protobuf:"varint,3,opt,name=runtimeStatus,proto3,enum=OrchestrationStatus" json:"runtimeStatus,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + LastUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=lastUpdatedAt,proto3" json:"lastUpdatedAt,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=input,proto3" json:"input,omitempty"` + Output *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=output,proto3" json:"output,omitempty"` + CustomStatus *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=customStatus,proto3" json:"customStatus,omitempty"` + FailureDetails *TaskFailureDetails `protobuf:"bytes,9,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` +} + +func (x *OrchestrationMetadata) Reset() { + *x = OrchestrationMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_backend_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OrchestrationMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrchestrationMetadata) ProtoMessage() {} + +func (x *OrchestrationMetadata) ProtoReflect() protoreflect.Message { + mi := &file_backend_service_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OrchestrationMetadata.ProtoReflect.Descriptor instead. +func (*OrchestrationMetadata) Descriptor() ([]byte, []int) { + return file_backend_service_proto_rawDescGZIP(), []int{19} +} + +func (x *OrchestrationMetadata) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *OrchestrationMetadata) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *OrchestrationMetadata) GetRuntimeStatus() OrchestrationStatus { + if x != nil { + return x.RuntimeStatus + } + return OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING +} + +func (x *OrchestrationMetadata) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *OrchestrationMetadata) GetLastUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastUpdatedAt + } + return nil +} + +func (x *OrchestrationMetadata) GetInput() *wrapperspb.StringValue { + if x != nil { + return x.Input + } + return nil +} + +func (x *OrchestrationMetadata) GetOutput() *wrapperspb.StringValue { + if x != nil { + return x.Output + } + return nil +} + +func (x *OrchestrationMetadata) GetCustomStatus() *wrapperspb.StringValue { + if x != nil { + return x.CustomStatus + } + return nil +} + +func (x *OrchestrationMetadata) GetFailureDetails() *TaskFailureDetails { + if x != nil { + return x.FailureDetails + } + return nil +} + +var File_backend_service_proto protoreflect.FileDescriptor + +var file_backend_service_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, + 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1a, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x6a, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, + 0x12, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x0a, 0x16, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x13, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x67, 0x65, 0x74, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, + 0x76, 0x0a, 0x17, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x12, 0x43, 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x59, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, + 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x22, 0x80, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x33, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x1e, 0x41, 0x62, + 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, + 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x21, 0x0a, 0x1f, 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, + 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf1, 0x03, 0x0a, 0x24, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x44, 0x0a, 0x0e, + 0x6e, 0x65, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, + 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x2d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x29, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x08, 0x6e, 0x65, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x6e, 0x65, + 0x77, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x6e, 0x65, + 0x77, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x64, + 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x27, 0x0a, + 0x25, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x13, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x4f, 0x0a, 0x23, 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, + 0x6e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, + 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, + 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x26, 0x0a, 0x24, 0x41, 0x62, 0x61, 0x6e, 0x64, + 0x6f, 0x6e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x0e, + 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbf, + 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x23, 0x0a, 0x05, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, + 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x12, 0x27, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x40, + 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x93, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, + 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xec, 0x03, 0x0a, 0x15, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, + 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x38, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x32, 0x0a, 0x05, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x34, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x32, 0xd1, 0x0b, 0x0a, 0x0e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x08, 0x41, + 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, + 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, + 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x35, 0x2e, 0x64, 0x75, 0x72, 0x61, + 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, + 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x36, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x50, 0x75, 0x72, 0x67, + 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x50, 0x75, 0x72, + 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x2e, 0x47, 0x65, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x09, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x30, 0x01, 0x12, 0xa7, + 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x42, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, + 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x3e, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, + 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, + 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, + 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x17, 0x41, 0x62, 0x61, 0x6e, 0x64, + 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x3d, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3e, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0xaa, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, + 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x43, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, + 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, + 0x01, 0x0a, 0x1c, 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x42, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, + 0x12, 0x2a, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, + 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x61, 0x0a, 0x31, 0x63, 0x6f, 0x6d, + 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5a, 0x0b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0xaa, 0x02, 0x1e, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_backend_service_proto_rawDescOnce sync.Once + file_backend_service_proto_rawDescData = file_backend_service_proto_rawDesc +) + +func file_backend_service_proto_rawDescGZIP() []byte { + file_backend_service_proto_rawDescOnce.Do(func() { + file_backend_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_backend_service_proto_rawDescData) + }) + return file_backend_service_proto_rawDescData +} + +var file_backend_service_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_backend_service_proto_goTypes = []interface{}{ + (*AddEventRequest)(nil), // 0: durabletask.protos.backend.v1.AddEventRequest + (*AddEventResponse)(nil), // 1: durabletask.protos.backend.v1.AddEventResponse + (*WaitForInstanceRequest)(nil), // 2: durabletask.protos.backend.v1.WaitForInstanceRequest + (*WaitForInstanceResponse)(nil), // 3: durabletask.protos.backend.v1.WaitForInstanceResponse + (*GetOrchestrationRuntimeStateRequest)(nil), // 4: durabletask.protos.backend.v1.GetOrchestrationRuntimeStateRequest + (*GetOrchestrationRuntimeStateResponse)(nil), // 5: durabletask.protos.backend.v1.GetOrchestrationRuntimeStateResponse + (*CompleteActivityWorkItemRequest)(nil), // 6: durabletask.protos.backend.v1.CompleteActivityWorkItemRequest + (*CompleteActivityWorkItemResponse)(nil), // 7: durabletask.protos.backend.v1.CompleteActivityWorkItemResponse + (*AbandonActivityWorkItemRequest)(nil), // 8: durabletask.protos.backend.v1.AbandonActivityWorkItemRequest + (*AbandonActivityWorkItemResponse)(nil), // 9: durabletask.protos.backend.v1.AbandonActivityWorkItemResponse + (*CompleteOrchestrationWorkItemRequest)(nil), // 10: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest + (*CompleteOrchestrationWorkItemResponse)(nil), // 11: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemResponse + (*OrchestratorMessage)(nil), // 12: durabletask.protos.backend.v1.OrchestratorMessage + (*AbandonOrchestrationWorkItemRequest)(nil), // 13: durabletask.protos.backend.v1.AbandonOrchestrationWorkItemRequest + (*AbandonOrchestrationWorkItemResponse)(nil), // 14: durabletask.protos.backend.v1.AbandonOrchestrationWorkItemResponse + (*PingRequest)(nil), // 15: durabletask.protos.backend.v1.PingRequest + (*PingResponse)(nil), // 16: durabletask.protos.backend.v1.PingResponse + (*WorkflowState)(nil), // 17: durabletask.protos.backend.v1.WorkflowState + (*CreateWorkflowInstanceRequest)(nil), // 18: durabletask.protos.backend.v1.CreateWorkflowInstanceRequest + (*OrchestrationMetadata)(nil), // 19: durabletask.protos.backend.v1.OrchestrationMetadata + (*OrchestrationInstance)(nil), // 20: OrchestrationInstance + (*HistoryEvent)(nil), // 21: HistoryEvent + (*OrchestrationState)(nil), // 22: OrchestrationState + (*wrapperspb.StringValue)(nil), // 23: google.protobuf.StringValue + (OrchestrationStatus)(0), // 24: OrchestrationStatus + (*OrchestrationIdReusePolicy)(nil), // 25: OrchestrationIdReusePolicy + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp + (*TaskFailureDetails)(nil), // 27: TaskFailureDetails + (*CreateInstanceRequest)(nil), // 28: CreateInstanceRequest + (*GetInstanceRequest)(nil), // 29: GetInstanceRequest + (*QueryInstancesRequest)(nil), // 30: QueryInstancesRequest + (*PurgeInstancesRequest)(nil), // 31: PurgeInstancesRequest + (*GetWorkItemsRequest)(nil), // 32: GetWorkItemsRequest + (*CreateInstanceResponse)(nil), // 33: CreateInstanceResponse + (*GetInstanceResponse)(nil), // 34: GetInstanceResponse + (*QueryInstancesResponse)(nil), // 35: QueryInstancesResponse + (*PurgeInstancesResponse)(nil), // 36: PurgeInstancesResponse + (*WorkItem)(nil), // 37: WorkItem +} +var file_backend_service_proto_depIdxs = []int32{ + 20, // 0: durabletask.protos.backend.v1.AddEventRequest.instance:type_name -> OrchestrationInstance + 21, // 1: durabletask.protos.backend.v1.AddEventRequest.event:type_name -> HistoryEvent + 22, // 2: durabletask.protos.backend.v1.WaitForInstanceResponse.orchestrationState:type_name -> OrchestrationState + 20, // 3: durabletask.protos.backend.v1.GetOrchestrationRuntimeStateRequest.instance:type_name -> OrchestrationInstance + 21, // 4: durabletask.protos.backend.v1.GetOrchestrationRuntimeStateResponse.history:type_name -> HistoryEvent + 21, // 5: durabletask.protos.backend.v1.CompleteActivityWorkItemRequest.responseEvent:type_name -> HistoryEvent + 23, // 6: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.newExecutionId:type_name -> google.protobuf.StringValue + 24, // 7: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.runtimeStatus:type_name -> OrchestrationStatus + 23, // 8: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.customStatus:type_name -> google.protobuf.StringValue + 21, // 9: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.newHistory:type_name -> HistoryEvent + 21, // 10: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.newTasks:type_name -> HistoryEvent + 21, // 11: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.newTimers:type_name -> HistoryEvent + 12, // 12: durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest.newMessages:type_name -> durabletask.protos.backend.v1.OrchestratorMessage + 20, // 13: durabletask.protos.backend.v1.OrchestratorMessage.instance:type_name -> OrchestrationInstance + 21, // 14: durabletask.protos.backend.v1.OrchestratorMessage.event:type_name -> HistoryEvent + 21, // 15: durabletask.protos.backend.v1.WorkflowState.inbox:type_name -> HistoryEvent + 21, // 16: durabletask.protos.backend.v1.WorkflowState.history:type_name -> HistoryEvent + 23, // 17: durabletask.protos.backend.v1.WorkflowState.customStatus:type_name -> google.protobuf.StringValue + 21, // 18: durabletask.protos.backend.v1.CreateWorkflowInstanceRequest.startEvent:type_name -> HistoryEvent + 25, // 19: durabletask.protos.backend.v1.CreateWorkflowInstanceRequest.policy:type_name -> OrchestrationIdReusePolicy + 24, // 20: durabletask.protos.backend.v1.OrchestrationMetadata.runtimeStatus:type_name -> OrchestrationStatus + 26, // 21: durabletask.protos.backend.v1.OrchestrationMetadata.createdAt:type_name -> google.protobuf.Timestamp + 26, // 22: durabletask.protos.backend.v1.OrchestrationMetadata.lastUpdatedAt:type_name -> google.protobuf.Timestamp + 23, // 23: durabletask.protos.backend.v1.OrchestrationMetadata.input:type_name -> google.protobuf.StringValue + 23, // 24: durabletask.protos.backend.v1.OrchestrationMetadata.output:type_name -> google.protobuf.StringValue + 23, // 25: durabletask.protos.backend.v1.OrchestrationMetadata.customStatus:type_name -> google.protobuf.StringValue + 27, // 26: durabletask.protos.backend.v1.OrchestrationMetadata.failureDetails:type_name -> TaskFailureDetails + 28, // 27: durabletask.protos.backend.v1.BackendService.CreateInstance:input_type -> CreateInstanceRequest + 0, // 28: durabletask.protos.backend.v1.BackendService.AddEvent:input_type -> durabletask.protos.backend.v1.AddEventRequest + 29, // 29: durabletask.protos.backend.v1.BackendService.GetInstance:input_type -> GetInstanceRequest + 30, // 30: durabletask.protos.backend.v1.BackendService.QueryInstances:input_type -> QueryInstancesRequest + 2, // 31: durabletask.protos.backend.v1.BackendService.WaitForInstance:input_type -> durabletask.protos.backend.v1.WaitForInstanceRequest + 31, // 32: durabletask.protos.backend.v1.BackendService.PurgeInstances:input_type -> PurgeInstancesRequest + 32, // 33: durabletask.protos.backend.v1.BackendService.GetWorkItems:input_type -> GetWorkItemsRequest + 4, // 34: durabletask.protos.backend.v1.BackendService.GetOrchestrationRuntimeState:input_type -> durabletask.protos.backend.v1.GetOrchestrationRuntimeStateRequest + 6, // 35: durabletask.protos.backend.v1.BackendService.CompleteActivityWorkItem:input_type -> durabletask.protos.backend.v1.CompleteActivityWorkItemRequest + 8, // 36: durabletask.protos.backend.v1.BackendService.AbandonActivityWorkItem:input_type -> durabletask.protos.backend.v1.AbandonActivityWorkItemRequest + 10, // 37: durabletask.protos.backend.v1.BackendService.CompleteOrchestrationWorkItem:input_type -> durabletask.protos.backend.v1.CompleteOrchestrationWorkItemRequest + 13, // 38: durabletask.protos.backend.v1.BackendService.AbandonOrchestrationWorkItem:input_type -> durabletask.protos.backend.v1.AbandonOrchestrationWorkItemRequest + 15, // 39: durabletask.protos.backend.v1.BackendService.Ping:input_type -> durabletask.protos.backend.v1.PingRequest + 33, // 40: durabletask.protos.backend.v1.BackendService.CreateInstance:output_type -> CreateInstanceResponse + 1, // 41: durabletask.protos.backend.v1.BackendService.AddEvent:output_type -> durabletask.protos.backend.v1.AddEventResponse + 34, // 42: durabletask.protos.backend.v1.BackendService.GetInstance:output_type -> GetInstanceResponse + 35, // 43: durabletask.protos.backend.v1.BackendService.QueryInstances:output_type -> QueryInstancesResponse + 3, // 44: durabletask.protos.backend.v1.BackendService.WaitForInstance:output_type -> durabletask.protos.backend.v1.WaitForInstanceResponse + 36, // 45: durabletask.protos.backend.v1.BackendService.PurgeInstances:output_type -> PurgeInstancesResponse + 37, // 46: durabletask.protos.backend.v1.BackendService.GetWorkItems:output_type -> WorkItem + 5, // 47: durabletask.protos.backend.v1.BackendService.GetOrchestrationRuntimeState:output_type -> durabletask.protos.backend.v1.GetOrchestrationRuntimeStateResponse + 7, // 48: durabletask.protos.backend.v1.BackendService.CompleteActivityWorkItem:output_type -> durabletask.protos.backend.v1.CompleteActivityWorkItemResponse + 9, // 49: durabletask.protos.backend.v1.BackendService.AbandonActivityWorkItem:output_type -> durabletask.protos.backend.v1.AbandonActivityWorkItemResponse + 11, // 50: durabletask.protos.backend.v1.BackendService.CompleteOrchestrationWorkItem:output_type -> durabletask.protos.backend.v1.CompleteOrchestrationWorkItemResponse + 14, // 51: durabletask.protos.backend.v1.BackendService.AbandonOrchestrationWorkItem:output_type -> durabletask.protos.backend.v1.AbandonOrchestrationWorkItemResponse + 16, // 52: durabletask.protos.backend.v1.BackendService.Ping:output_type -> durabletask.protos.backend.v1.PingResponse + 40, // [40:53] is the sub-list for method output_type + 27, // [27:40] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name +} + +func init() { file_backend_service_proto_init() } +func file_backend_service_proto_init() { + if File_backend_service_proto != nil { + return + } + file_orchestrator_service_proto_init() + if !protoimpl.UnsafeEnabled { + file_backend_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddEventRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddEventResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WaitForInstanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WaitForInstanceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrchestrationRuntimeStateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrchestrationRuntimeStateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompleteActivityWorkItemRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompleteActivityWorkItemResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AbandonActivityWorkItemRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AbandonActivityWorkItemResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompleteOrchestrationWorkItemRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompleteOrchestrationWorkItemResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrchestratorMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AbandonOrchestrationWorkItemRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AbandonOrchestrationWorkItemResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WorkflowState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateWorkflowInstanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_backend_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrchestrationMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_backend_service_proto_msgTypes[18].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_backend_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 20, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_backend_service_proto_goTypes, + DependencyIndexes: file_backend_service_proto_depIdxs, + MessageInfos: file_backend_service_proto_msgTypes, + }.Build() + File_backend_service_proto = out.File + file_backend_service_proto_rawDesc = nil + file_backend_service_proto_goTypes = nil + file_backend_service_proto_depIdxs = nil +} diff --git a/api/protos/backend_service_grpc.pb.go b/api/protos/backend_service_grpc.pb.go new file mode 100644 index 0000000..6d7484c --- /dev/null +++ b/api/protos/backend_service_grpc.pb.go @@ -0,0 +1,612 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.4 +// source: backend_service.proto + +package protos + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + BackendService_CreateInstance_FullMethodName = "/durabletask.protos.backend.v1.BackendService/CreateInstance" + BackendService_AddEvent_FullMethodName = "/durabletask.protos.backend.v1.BackendService/AddEvent" + BackendService_GetInstance_FullMethodName = "/durabletask.protos.backend.v1.BackendService/GetInstance" + BackendService_QueryInstances_FullMethodName = "/durabletask.protos.backend.v1.BackendService/QueryInstances" + BackendService_WaitForInstance_FullMethodName = "/durabletask.protos.backend.v1.BackendService/WaitForInstance" + BackendService_PurgeInstances_FullMethodName = "/durabletask.protos.backend.v1.BackendService/PurgeInstances" + BackendService_GetWorkItems_FullMethodName = "/durabletask.protos.backend.v1.BackendService/GetWorkItems" + BackendService_GetOrchestrationRuntimeState_FullMethodName = "/durabletask.protos.backend.v1.BackendService/GetOrchestrationRuntimeState" + BackendService_CompleteActivityWorkItem_FullMethodName = "/durabletask.protos.backend.v1.BackendService/CompleteActivityWorkItem" + BackendService_AbandonActivityWorkItem_FullMethodName = "/durabletask.protos.backend.v1.BackendService/AbandonActivityWorkItem" + BackendService_CompleteOrchestrationWorkItem_FullMethodName = "/durabletask.protos.backend.v1.BackendService/CompleteOrchestrationWorkItem" + BackendService_AbandonOrchestrationWorkItem_FullMethodName = "/durabletask.protos.backend.v1.BackendService/AbandonOrchestrationWorkItem" + BackendService_Ping_FullMethodName = "/durabletask.protos.backend.v1.BackendService/Ping" +) + +// BackendServiceClient is the client API for BackendService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type BackendServiceClient interface { + // Creates a new orchestration instance. + CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*CreateInstanceResponse, error) + // Sends an event to an orchestration instance. This RPC is used for raising external events to orchestrations + // and for sending orchestration lifecycle events, such as terminate, suspend, resume, etc. + AddEvent(ctx context.Context, in *AddEventRequest, opts ...grpc.CallOption) (*AddEventResponse, error) + // Returns metadata about an orchestration instance. + GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*GetInstanceResponse, error) + // Returns metadata about multiple orchestration instances using a query. + QueryInstances(ctx context.Context, in *QueryInstancesRequest, opts ...grpc.CallOption) (*QueryInstancesResponse, error) + // Waits for an orchestration to reach a terminal state and then returns metadata for that orchestration. + WaitForInstance(ctx context.Context, in *WaitForInstanceRequest, opts ...grpc.CallOption) (*WaitForInstanceResponse, error) + // Purges the state of one or more orchestration instances. + PurgeInstances(ctx context.Context, in *PurgeInstancesRequest, opts ...grpc.CallOption) (*PurgeInstancesResponse, error) + // Starts a server stream for receiving work items + GetWorkItems(ctx context.Context, in *GetWorkItemsRequest, opts ...grpc.CallOption) (BackendService_GetWorkItemsClient, error) + // Gets orchestration runtime state (history, etc.) for a given orchestration instance. + GetOrchestrationRuntimeState(ctx context.Context, in *GetOrchestrationRuntimeStateRequest, opts ...grpc.CallOption) (*GetOrchestrationRuntimeStateResponse, error) + // Completes an outstanding activity work item and adds a new event to the target orchestration's inbox. + CompleteActivityWorkItem(ctx context.Context, in *CompleteActivityWorkItemRequest, opts ...grpc.CallOption) (*CompleteActivityWorkItemResponse, error) + // Abandons an outstanding activity work item. Abandoned work items will be delivered again after some delay. + AbandonActivityWorkItem(ctx context.Context, in *AbandonActivityWorkItemRequest, opts ...grpc.CallOption) (*AbandonActivityWorkItemResponse, error) + // Completes an outstanding orchestrator work item, and adds a new event to the target orchestration's inbox. + CompleteOrchestrationWorkItem(ctx context.Context, in *CompleteOrchestrationWorkItemRequest, opts ...grpc.CallOption) (*CompleteOrchestrationWorkItemResponse, error) + // Abandons an outstanding orchestrator work item. Abandoned work items will be delivered again after some delay. + AbandonOrchestrationWorkItem(ctx context.Context, in *AbandonOrchestrationWorkItemRequest, opts ...grpc.CallOption) (*AbandonOrchestrationWorkItemResponse, error) + // Sends a health check ping to the backend service. + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) +} + +type backendServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewBackendServiceClient(cc grpc.ClientConnInterface) BackendServiceClient { + return &backendServiceClient{cc} +} + +func (c *backendServiceClient) CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*CreateInstanceResponse, error) { + out := new(CreateInstanceResponse) + err := c.cc.Invoke(ctx, BackendService_CreateInstance_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) AddEvent(ctx context.Context, in *AddEventRequest, opts ...grpc.CallOption) (*AddEventResponse, error) { + out := new(AddEventResponse) + err := c.cc.Invoke(ctx, BackendService_AddEvent_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*GetInstanceResponse, error) { + out := new(GetInstanceResponse) + err := c.cc.Invoke(ctx, BackendService_GetInstance_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) QueryInstances(ctx context.Context, in *QueryInstancesRequest, opts ...grpc.CallOption) (*QueryInstancesResponse, error) { + out := new(QueryInstancesResponse) + err := c.cc.Invoke(ctx, BackendService_QueryInstances_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) WaitForInstance(ctx context.Context, in *WaitForInstanceRequest, opts ...grpc.CallOption) (*WaitForInstanceResponse, error) { + out := new(WaitForInstanceResponse) + err := c.cc.Invoke(ctx, BackendService_WaitForInstance_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) PurgeInstances(ctx context.Context, in *PurgeInstancesRequest, opts ...grpc.CallOption) (*PurgeInstancesResponse, error) { + out := new(PurgeInstancesResponse) + err := c.cc.Invoke(ctx, BackendService_PurgeInstances_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) GetWorkItems(ctx context.Context, in *GetWorkItemsRequest, opts ...grpc.CallOption) (BackendService_GetWorkItemsClient, error) { + stream, err := c.cc.NewStream(ctx, &BackendService_ServiceDesc.Streams[0], BackendService_GetWorkItems_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &backendServiceGetWorkItemsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type BackendService_GetWorkItemsClient interface { + Recv() (*WorkItem, error) + grpc.ClientStream +} + +type backendServiceGetWorkItemsClient struct { + grpc.ClientStream +} + +func (x *backendServiceGetWorkItemsClient) Recv() (*WorkItem, error) { + m := new(WorkItem) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *backendServiceClient) GetOrchestrationRuntimeState(ctx context.Context, in *GetOrchestrationRuntimeStateRequest, opts ...grpc.CallOption) (*GetOrchestrationRuntimeStateResponse, error) { + out := new(GetOrchestrationRuntimeStateResponse) + err := c.cc.Invoke(ctx, BackendService_GetOrchestrationRuntimeState_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) CompleteActivityWorkItem(ctx context.Context, in *CompleteActivityWorkItemRequest, opts ...grpc.CallOption) (*CompleteActivityWorkItemResponse, error) { + out := new(CompleteActivityWorkItemResponse) + err := c.cc.Invoke(ctx, BackendService_CompleteActivityWorkItem_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) AbandonActivityWorkItem(ctx context.Context, in *AbandonActivityWorkItemRequest, opts ...grpc.CallOption) (*AbandonActivityWorkItemResponse, error) { + out := new(AbandonActivityWorkItemResponse) + err := c.cc.Invoke(ctx, BackendService_AbandonActivityWorkItem_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) CompleteOrchestrationWorkItem(ctx context.Context, in *CompleteOrchestrationWorkItemRequest, opts ...grpc.CallOption) (*CompleteOrchestrationWorkItemResponse, error) { + out := new(CompleteOrchestrationWorkItemResponse) + err := c.cc.Invoke(ctx, BackendService_CompleteOrchestrationWorkItem_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) AbandonOrchestrationWorkItem(ctx context.Context, in *AbandonOrchestrationWorkItemRequest, opts ...grpc.CallOption) (*AbandonOrchestrationWorkItemResponse, error) { + out := new(AbandonOrchestrationWorkItemResponse) + err := c.cc.Invoke(ctx, BackendService_AbandonOrchestrationWorkItem_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *backendServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { + out := new(PingResponse) + err := c.cc.Invoke(ctx, BackendService_Ping_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// BackendServiceServer is the server API for BackendService service. +// All implementations must embed UnimplementedBackendServiceServer +// for forward compatibility +type BackendServiceServer interface { + // Creates a new orchestration instance. + CreateInstance(context.Context, *CreateInstanceRequest) (*CreateInstanceResponse, error) + // Sends an event to an orchestration instance. This RPC is used for raising external events to orchestrations + // and for sending orchestration lifecycle events, such as terminate, suspend, resume, etc. + AddEvent(context.Context, *AddEventRequest) (*AddEventResponse, error) + // Returns metadata about an orchestration instance. + GetInstance(context.Context, *GetInstanceRequest) (*GetInstanceResponse, error) + // Returns metadata about multiple orchestration instances using a query. + QueryInstances(context.Context, *QueryInstancesRequest) (*QueryInstancesResponse, error) + // Waits for an orchestration to reach a terminal state and then returns metadata for that orchestration. + WaitForInstance(context.Context, *WaitForInstanceRequest) (*WaitForInstanceResponse, error) + // Purges the state of one or more orchestration instances. + PurgeInstances(context.Context, *PurgeInstancesRequest) (*PurgeInstancesResponse, error) + // Starts a server stream for receiving work items + GetWorkItems(*GetWorkItemsRequest, BackendService_GetWorkItemsServer) error + // Gets orchestration runtime state (history, etc.) for a given orchestration instance. + GetOrchestrationRuntimeState(context.Context, *GetOrchestrationRuntimeStateRequest) (*GetOrchestrationRuntimeStateResponse, error) + // Completes an outstanding activity work item and adds a new event to the target orchestration's inbox. + CompleteActivityWorkItem(context.Context, *CompleteActivityWorkItemRequest) (*CompleteActivityWorkItemResponse, error) + // Abandons an outstanding activity work item. Abandoned work items will be delivered again after some delay. + AbandonActivityWorkItem(context.Context, *AbandonActivityWorkItemRequest) (*AbandonActivityWorkItemResponse, error) + // Completes an outstanding orchestrator work item, and adds a new event to the target orchestration's inbox. + CompleteOrchestrationWorkItem(context.Context, *CompleteOrchestrationWorkItemRequest) (*CompleteOrchestrationWorkItemResponse, error) + // Abandons an outstanding orchestrator work item. Abandoned work items will be delivered again after some delay. + AbandonOrchestrationWorkItem(context.Context, *AbandonOrchestrationWorkItemRequest) (*AbandonOrchestrationWorkItemResponse, error) + // Sends a health check ping to the backend service. + Ping(context.Context, *PingRequest) (*PingResponse, error) + mustEmbedUnimplementedBackendServiceServer() +} + +// UnimplementedBackendServiceServer must be embedded to have forward compatible implementations. +type UnimplementedBackendServiceServer struct { +} + +func (UnimplementedBackendServiceServer) CreateInstance(context.Context, *CreateInstanceRequest) (*CreateInstanceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateInstance not implemented") +} +func (UnimplementedBackendServiceServer) AddEvent(context.Context, *AddEventRequest) (*AddEventResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddEvent not implemented") +} +func (UnimplementedBackendServiceServer) GetInstance(context.Context, *GetInstanceRequest) (*GetInstanceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInstance not implemented") +} +func (UnimplementedBackendServiceServer) QueryInstances(context.Context, *QueryInstancesRequest) (*QueryInstancesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryInstances not implemented") +} +func (UnimplementedBackendServiceServer) WaitForInstance(context.Context, *WaitForInstanceRequest) (*WaitForInstanceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method WaitForInstance not implemented") +} +func (UnimplementedBackendServiceServer) PurgeInstances(context.Context, *PurgeInstancesRequest) (*PurgeInstancesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PurgeInstances not implemented") +} +func (UnimplementedBackendServiceServer) GetWorkItems(*GetWorkItemsRequest, BackendService_GetWorkItemsServer) error { + return status.Errorf(codes.Unimplemented, "method GetWorkItems not implemented") +} +func (UnimplementedBackendServiceServer) GetOrchestrationRuntimeState(context.Context, *GetOrchestrationRuntimeStateRequest) (*GetOrchestrationRuntimeStateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetOrchestrationRuntimeState not implemented") +} +func (UnimplementedBackendServiceServer) CompleteActivityWorkItem(context.Context, *CompleteActivityWorkItemRequest) (*CompleteActivityWorkItemResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CompleteActivityWorkItem not implemented") +} +func (UnimplementedBackendServiceServer) AbandonActivityWorkItem(context.Context, *AbandonActivityWorkItemRequest) (*AbandonActivityWorkItemResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AbandonActivityWorkItem not implemented") +} +func (UnimplementedBackendServiceServer) CompleteOrchestrationWorkItem(context.Context, *CompleteOrchestrationWorkItemRequest) (*CompleteOrchestrationWorkItemResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CompleteOrchestrationWorkItem not implemented") +} +func (UnimplementedBackendServiceServer) AbandonOrchestrationWorkItem(context.Context, *AbandonOrchestrationWorkItemRequest) (*AbandonOrchestrationWorkItemResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AbandonOrchestrationWorkItem not implemented") +} +func (UnimplementedBackendServiceServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") +} +func (UnimplementedBackendServiceServer) mustEmbedUnimplementedBackendServiceServer() {} + +// UnsafeBackendServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to BackendServiceServer will +// result in compilation errors. +type UnsafeBackendServiceServer interface { + mustEmbedUnimplementedBackendServiceServer() +} + +func RegisterBackendServiceServer(s grpc.ServiceRegistrar, srv BackendServiceServer) { + s.RegisterService(&BackendService_ServiceDesc, srv) +} + +func _BackendService_CreateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateInstanceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).CreateInstance(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_CreateInstance_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).CreateInstance(ctx, req.(*CreateInstanceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_AddEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddEventRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).AddEvent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_AddEvent_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).AddEvent(ctx, req.(*AddEventRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_GetInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetInstanceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).GetInstance(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_GetInstance_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).GetInstance(ctx, req.(*GetInstanceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_QueryInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryInstancesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).QueryInstances(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_QueryInstances_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).QueryInstances(ctx, req.(*QueryInstancesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_WaitForInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WaitForInstanceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).WaitForInstance(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_WaitForInstance_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).WaitForInstance(ctx, req.(*WaitForInstanceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_PurgeInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PurgeInstancesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).PurgeInstances(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_PurgeInstances_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).PurgeInstances(ctx, req.(*PurgeInstancesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_GetWorkItems_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(GetWorkItemsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(BackendServiceServer).GetWorkItems(m, &backendServiceGetWorkItemsServer{stream}) +} + +type BackendService_GetWorkItemsServer interface { + Send(*WorkItem) error + grpc.ServerStream +} + +type backendServiceGetWorkItemsServer struct { + grpc.ServerStream +} + +func (x *backendServiceGetWorkItemsServer) Send(m *WorkItem) error { + return x.ServerStream.SendMsg(m) +} + +func _BackendService_GetOrchestrationRuntimeState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOrchestrationRuntimeStateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).GetOrchestrationRuntimeState(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_GetOrchestrationRuntimeState_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).GetOrchestrationRuntimeState(ctx, req.(*GetOrchestrationRuntimeStateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_CompleteActivityWorkItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CompleteActivityWorkItemRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).CompleteActivityWorkItem(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_CompleteActivityWorkItem_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).CompleteActivityWorkItem(ctx, req.(*CompleteActivityWorkItemRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_AbandonActivityWorkItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AbandonActivityWorkItemRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).AbandonActivityWorkItem(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_AbandonActivityWorkItem_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).AbandonActivityWorkItem(ctx, req.(*AbandonActivityWorkItemRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_CompleteOrchestrationWorkItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CompleteOrchestrationWorkItemRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).CompleteOrchestrationWorkItem(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_CompleteOrchestrationWorkItem_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).CompleteOrchestrationWorkItem(ctx, req.(*CompleteOrchestrationWorkItemRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_AbandonOrchestrationWorkItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AbandonOrchestrationWorkItemRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).AbandonOrchestrationWorkItem(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_AbandonOrchestrationWorkItem_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).AbandonOrchestrationWorkItem(ctx, req.(*AbandonOrchestrationWorkItemRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BackendService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BackendServiceServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BackendService_Ping_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BackendServiceServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// BackendService_ServiceDesc is the grpc.ServiceDesc for BackendService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var BackendService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "durabletask.protos.backend.v1.BackendService", + HandlerType: (*BackendServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateInstance", + Handler: _BackendService_CreateInstance_Handler, + }, + { + MethodName: "AddEvent", + Handler: _BackendService_AddEvent_Handler, + }, + { + MethodName: "GetInstance", + Handler: _BackendService_GetInstance_Handler, + }, + { + MethodName: "QueryInstances", + Handler: _BackendService_QueryInstances_Handler, + }, + { + MethodName: "WaitForInstance", + Handler: _BackendService_WaitForInstance_Handler, + }, + { + MethodName: "PurgeInstances", + Handler: _BackendService_PurgeInstances_Handler, + }, + { + MethodName: "GetOrchestrationRuntimeState", + Handler: _BackendService_GetOrchestrationRuntimeState_Handler, + }, + { + MethodName: "CompleteActivityWorkItem", + Handler: _BackendService_CompleteActivityWorkItem_Handler, + }, + { + MethodName: "AbandonActivityWorkItem", + Handler: _BackendService_AbandonActivityWorkItem_Handler, + }, + { + MethodName: "CompleteOrchestrationWorkItem", + Handler: _BackendService_CompleteOrchestrationWorkItem_Handler, + }, + { + MethodName: "AbandonOrchestrationWorkItem", + Handler: _BackendService_AbandonOrchestrationWorkItem_Handler, + }, + { + MethodName: "Ping", + Handler: _BackendService_Ping_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "GetWorkItems", + Handler: _BackendService_GetWorkItems_Handler, + ServerStreams: true, + }, + }, + Metadata: "backend_service.proto", +} diff --git a/api/protos/orchestrator_service.pb.go b/api/protos/orchestrator_service.pb.go index fe60f21..34053e4 100644 --- a/api/protos/orchestrator_service.pb.go +++ b/api/protos/orchestrator_service.pb.go @@ -3,19 +3,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v3.12.4 +// protoc-gen-go v1.32.0 +// protoc v4.25.4 // source: orchestrator_service.proto package protos import ( - duration "github.com/golang/protobuf/ptypes/duration" - empty "github.com/golang/protobuf/ptypes/empty" - timestamp "github.com/golang/protobuf/ptypes/timestamp" - wrappers "github.com/golang/protobuf/ptypes/wrappers" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -145,8 +145,8 @@ type OrchestrationInstance struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - ExecutionId *wrappers.StringValue `protobuf:"bytes,2,opt,name=executionId,proto3" json:"executionId,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + ExecutionId *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=executionId,proto3" json:"executionId,omitempty"` } func (x *OrchestrationInstance) Reset() { @@ -188,7 +188,7 @@ func (x *OrchestrationInstance) GetInstanceId() string { return "" } -func (x *OrchestrationInstance) GetExecutionId() *wrappers.StringValue { +func (x *OrchestrationInstance) GetExecutionId() *wrapperspb.StringValue { if x != nil { return x.ExecutionId } @@ -200,11 +200,12 @@ type ActivityRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` - OrchestrationInstance *OrchestrationInstance `protobuf:"bytes,4,opt,name=orchestrationInstance,proto3" json:"orchestrationInstance,omitempty"` - TaskId int32 `protobuf:"varint,5,opt,name=taskId,proto3" json:"taskId,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + OrchestrationInstance *OrchestrationInstance `protobuf:"bytes,4,opt,name=orchestrationInstance,proto3" json:"orchestrationInstance,omitempty"` + TaskId int32 `protobuf:"varint,5,opt,name=taskId,proto3" json:"taskId,omitempty"` + ParentTraceContext *TraceContext `protobuf:"bytes,6,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` } func (x *ActivityRequest) Reset() { @@ -246,14 +247,14 @@ func (x *ActivityRequest) GetName() string { return "" } -func (x *ActivityRequest) GetVersion() *wrappers.StringValue { +func (x *ActivityRequest) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *ActivityRequest) GetInput() *wrappers.StringValue { +func (x *ActivityRequest) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -274,15 +275,22 @@ func (x *ActivityRequest) GetTaskId() int32 { return 0 } +func (x *ActivityRequest) GetParentTraceContext() *TraceContext { + if x != nil { + return x.ParentTraceContext + } + return nil +} + type ActivityResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - TaskId int32 `protobuf:"varint,2,opt,name=taskId,proto3" json:"taskId,omitempty"` - Result *wrappers.StringValue `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` - FailureDetails *TaskFailureDetails `protobuf:"bytes,4,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + TaskId int32 `protobuf:"varint,2,opt,name=taskId,proto3" json:"taskId,omitempty"` + Result *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` + FailureDetails *TaskFailureDetails `protobuf:"bytes,4,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` } func (x *ActivityResponse) Reset() { @@ -331,7 +339,7 @@ func (x *ActivityResponse) GetTaskId() int32 { return 0 } -func (x *ActivityResponse) GetResult() *wrappers.StringValue { +func (x *ActivityResponse) GetResult() *wrapperspb.StringValue { if x != nil { return x.Result } @@ -350,11 +358,11 @@ type TaskFailureDetails struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ErrorType string `protobuf:"bytes,1,opt,name=errorType,proto3" json:"errorType,omitempty"` - ErrorMessage string `protobuf:"bytes,2,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` - StackTrace *wrappers.StringValue `protobuf:"bytes,3,opt,name=stackTrace,proto3" json:"stackTrace,omitempty"` - InnerFailure *TaskFailureDetails `protobuf:"bytes,4,opt,name=innerFailure,proto3" json:"innerFailure,omitempty"` - IsNonRetriable bool `protobuf:"varint,5,opt,name=isNonRetriable,proto3" json:"isNonRetriable,omitempty"` + ErrorType string `protobuf:"bytes,1,opt,name=errorType,proto3" json:"errorType,omitempty"` + ErrorMessage string `protobuf:"bytes,2,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` + StackTrace *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=stackTrace,proto3" json:"stackTrace,omitempty"` + InnerFailure *TaskFailureDetails `protobuf:"bytes,4,opt,name=innerFailure,proto3" json:"innerFailure,omitempty"` + IsNonRetriable bool `protobuf:"varint,5,opt,name=isNonRetriable,proto3" json:"isNonRetriable,omitempty"` } func (x *TaskFailureDetails) Reset() { @@ -403,7 +411,7 @@ func (x *TaskFailureDetails) GetErrorMessage() string { return "" } -func (x *TaskFailureDetails) GetStackTrace() *wrappers.StringValue { +func (x *TaskFailureDetails) GetStackTrace() *wrapperspb.StringValue { if x != nil { return x.StackTrace } @@ -429,10 +437,10 @@ type ParentInstanceInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskScheduledId int32 `protobuf:"varint,1,opt,name=taskScheduledId,proto3" json:"taskScheduledId,omitempty"` - Name *wrappers.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - OrchestrationInstance *OrchestrationInstance `protobuf:"bytes,4,opt,name=orchestrationInstance,proto3" json:"orchestrationInstance,omitempty"` + TaskScheduledId int32 `protobuf:"varint,1,opt,name=taskScheduledId,proto3" json:"taskScheduledId,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + OrchestrationInstance *OrchestrationInstance `protobuf:"bytes,4,opt,name=orchestrationInstance,proto3" json:"orchestrationInstance,omitempty"` } func (x *ParentInstanceInfo) Reset() { @@ -474,14 +482,14 @@ func (x *ParentInstanceInfo) GetTaskScheduledId() int32 { return 0 } -func (x *ParentInstanceInfo) GetName() *wrappers.StringValue { +func (x *ParentInstanceInfo) GetName() *wrapperspb.StringValue { if x != nil { return x.Name } return nil } -func (x *ParentInstanceInfo) GetVersion() *wrappers.StringValue { +func (x *ParentInstanceInfo) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } @@ -502,8 +510,8 @@ type TraceContext struct { TraceParent string `protobuf:"bytes,1,opt,name=traceParent,proto3" json:"traceParent,omitempty"` // Deprecated: Marked as deprecated in orchestrator_service.proto. - SpanID string `protobuf:"bytes,2,opt,name=spanID,proto3" json:"spanID,omitempty"` - TraceState *wrappers.StringValue `protobuf:"bytes,3,opt,name=traceState,proto3" json:"traceState,omitempty"` + SpanID string `protobuf:"bytes,2,opt,name=spanID,proto3" json:"spanID,omitempty"` + TraceState *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=traceState,proto3" json:"traceState,omitempty"` } func (x *TraceContext) Reset() { @@ -553,7 +561,7 @@ func (x *TraceContext) GetSpanID() string { return "" } -func (x *TraceContext) GetTraceState() *wrappers.StringValue { +func (x *TraceContext) GetTraceState() *wrapperspb.StringValue { if x != nil { return x.TraceState } @@ -565,14 +573,14 @@ type ExecutionStartedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` - OrchestrationInstance *OrchestrationInstance `protobuf:"bytes,4,opt,name=orchestrationInstance,proto3" json:"orchestrationInstance,omitempty"` - ParentInstance *ParentInstanceInfo `protobuf:"bytes,5,opt,name=parentInstance,proto3" json:"parentInstance,omitempty"` - ScheduledStartTimestamp *timestamp.Timestamp `protobuf:"bytes,6,opt,name=scheduledStartTimestamp,proto3" json:"scheduledStartTimestamp,omitempty"` - ParentTraceContext *TraceContext `protobuf:"bytes,7,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` - OrchestrationSpanID *wrappers.StringValue `protobuf:"bytes,8,opt,name=orchestrationSpanID,proto3" json:"orchestrationSpanID,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + OrchestrationInstance *OrchestrationInstance `protobuf:"bytes,4,opt,name=orchestrationInstance,proto3" json:"orchestrationInstance,omitempty"` + ParentInstance *ParentInstanceInfo `protobuf:"bytes,5,opt,name=parentInstance,proto3" json:"parentInstance,omitempty"` + ScheduledStartTimestamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=scheduledStartTimestamp,proto3" json:"scheduledStartTimestamp,omitempty"` + ParentTraceContext *TraceContext `protobuf:"bytes,7,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` + OrchestrationSpanID *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=orchestrationSpanID,proto3" json:"orchestrationSpanID,omitempty"` } func (x *ExecutionStartedEvent) Reset() { @@ -614,14 +622,14 @@ func (x *ExecutionStartedEvent) GetName() string { return "" } -func (x *ExecutionStartedEvent) GetVersion() *wrappers.StringValue { +func (x *ExecutionStartedEvent) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *ExecutionStartedEvent) GetInput() *wrappers.StringValue { +func (x *ExecutionStartedEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -642,7 +650,7 @@ func (x *ExecutionStartedEvent) GetParentInstance() *ParentInstanceInfo { return nil } -func (x *ExecutionStartedEvent) GetScheduledStartTimestamp() *timestamp.Timestamp { +func (x *ExecutionStartedEvent) GetScheduledStartTimestamp() *timestamppb.Timestamp { if x != nil { return x.ScheduledStartTimestamp } @@ -656,7 +664,7 @@ func (x *ExecutionStartedEvent) GetParentTraceContext() *TraceContext { return nil } -func (x *ExecutionStartedEvent) GetOrchestrationSpanID() *wrappers.StringValue { +func (x *ExecutionStartedEvent) GetOrchestrationSpanID() *wrapperspb.StringValue { if x != nil { return x.OrchestrationSpanID } @@ -668,9 +676,9 @@ type ExecutionCompletedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrchestrationStatus OrchestrationStatus `protobuf:"varint,1,opt,name=orchestrationStatus,proto3,enum=OrchestrationStatus" json:"orchestrationStatus,omitempty"` - Result *wrappers.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` - FailureDetails *TaskFailureDetails `protobuf:"bytes,3,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` + OrchestrationStatus OrchestrationStatus `protobuf:"varint,1,opt,name=orchestrationStatus,proto3,enum=OrchestrationStatus" json:"orchestrationStatus,omitempty"` + Result *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + FailureDetails *TaskFailureDetails `protobuf:"bytes,3,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` } func (x *ExecutionCompletedEvent) Reset() { @@ -712,7 +720,7 @@ func (x *ExecutionCompletedEvent) GetOrchestrationStatus() OrchestrationStatus { return OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING } -func (x *ExecutionCompletedEvent) GetResult() *wrappers.StringValue { +func (x *ExecutionCompletedEvent) GetResult() *wrapperspb.StringValue { if x != nil { return x.Result } @@ -731,8 +739,8 @@ type ExecutionTerminatedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Input *wrappers.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` - Recurse bool `protobuf:"varint,2,opt,name=recurse,proto3" json:"recurse,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` + Recurse bool `protobuf:"varint,2,opt,name=recurse,proto3" json:"recurse,omitempty"` } func (x *ExecutionTerminatedEvent) Reset() { @@ -767,7 +775,7 @@ func (*ExecutionTerminatedEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{8} } -func (x *ExecutionTerminatedEvent) GetInput() *wrappers.StringValue { +func (x *ExecutionTerminatedEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -786,10 +794,10 @@ type TaskScheduledEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` - ParentTraceContext *TraceContext `protobuf:"bytes,4,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + ParentTraceContext *TraceContext `protobuf:"bytes,4,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` } func (x *TaskScheduledEvent) Reset() { @@ -831,14 +839,14 @@ func (x *TaskScheduledEvent) GetName() string { return "" } -func (x *TaskScheduledEvent) GetVersion() *wrappers.StringValue { +func (x *TaskScheduledEvent) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *TaskScheduledEvent) GetInput() *wrappers.StringValue { +func (x *TaskScheduledEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -857,8 +865,8 @@ type TaskCompletedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskScheduledId int32 `protobuf:"varint,1,opt,name=taskScheduledId,proto3" json:"taskScheduledId,omitempty"` - Result *wrappers.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + TaskScheduledId int32 `protobuf:"varint,1,opt,name=taskScheduledId,proto3" json:"taskScheduledId,omitempty"` + Result *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` } func (x *TaskCompletedEvent) Reset() { @@ -900,7 +908,7 @@ func (x *TaskCompletedEvent) GetTaskScheduledId() int32 { return 0 } -func (x *TaskCompletedEvent) GetResult() *wrappers.StringValue { +func (x *TaskCompletedEvent) GetResult() *wrapperspb.StringValue { if x != nil { return x.Result } @@ -967,11 +975,11 @@ type SubOrchestrationInstanceCreatedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` - ParentTraceContext *TraceContext `protobuf:"bytes,5,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` + ParentTraceContext *TraceContext `protobuf:"bytes,5,opt,name=parentTraceContext,proto3" json:"parentTraceContext,omitempty"` } func (x *SubOrchestrationInstanceCreatedEvent) Reset() { @@ -1020,14 +1028,14 @@ func (x *SubOrchestrationInstanceCreatedEvent) GetName() string { return "" } -func (x *SubOrchestrationInstanceCreatedEvent) GetVersion() *wrappers.StringValue { +func (x *SubOrchestrationInstanceCreatedEvent) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *SubOrchestrationInstanceCreatedEvent) GetInput() *wrappers.StringValue { +func (x *SubOrchestrationInstanceCreatedEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -1046,8 +1054,8 @@ type SubOrchestrationInstanceCompletedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskScheduledId int32 `protobuf:"varint,1,opt,name=taskScheduledId,proto3" json:"taskScheduledId,omitempty"` - Result *wrappers.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + TaskScheduledId int32 `protobuf:"varint,1,opt,name=taskScheduledId,proto3" json:"taskScheduledId,omitempty"` + Result *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` } func (x *SubOrchestrationInstanceCompletedEvent) Reset() { @@ -1089,7 +1097,7 @@ func (x *SubOrchestrationInstanceCompletedEvent) GetTaskScheduledId() int32 { return 0 } -func (x *SubOrchestrationInstanceCompletedEvent) GetResult() *wrappers.StringValue { +func (x *SubOrchestrationInstanceCompletedEvent) GetResult() *wrapperspb.StringValue { if x != nil { return x.Result } @@ -1156,7 +1164,7 @@ type TimerCreatedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FireAt *timestamp.Timestamp `protobuf:"bytes,1,opt,name=fireAt,proto3" json:"fireAt,omitempty"` + FireAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=fireAt,proto3" json:"fireAt,omitempty"` } func (x *TimerCreatedEvent) Reset() { @@ -1191,7 +1199,7 @@ func (*TimerCreatedEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{15} } -func (x *TimerCreatedEvent) GetFireAt() *timestamp.Timestamp { +func (x *TimerCreatedEvent) GetFireAt() *timestamppb.Timestamp { if x != nil { return x.FireAt } @@ -1203,8 +1211,8 @@ type TimerFiredEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FireAt *timestamp.Timestamp `protobuf:"bytes,1,opt,name=fireAt,proto3" json:"fireAt,omitempty"` - TimerId int32 `protobuf:"varint,2,opt,name=timerId,proto3" json:"timerId,omitempty"` + FireAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=fireAt,proto3" json:"fireAt,omitempty"` + TimerId int32 `protobuf:"varint,2,opt,name=timerId,proto3" json:"timerId,omitempty"` } func (x *TimerFiredEvent) Reset() { @@ -1239,7 +1247,7 @@ func (*TimerFiredEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{16} } -func (x *TimerFiredEvent) GetFireAt() *timestamp.Timestamp { +func (x *TimerFiredEvent) GetFireAt() *timestamppb.Timestamp { if x != nil { return x.FireAt } @@ -1334,9 +1342,9 @@ type EventSentEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` } func (x *EventSentEvent) Reset() { @@ -1385,7 +1393,7 @@ func (x *EventSentEvent) GetName() string { return "" } -func (x *EventSentEvent) GetInput() *wrappers.StringValue { +func (x *EventSentEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -1397,8 +1405,8 @@ type EventRaisedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` } func (x *EventRaisedEvent) Reset() { @@ -1440,7 +1448,7 @@ func (x *EventRaisedEvent) GetName() string { return "" } -func (x *EventRaisedEvent) GetInput() *wrappers.StringValue { +func (x *EventRaisedEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -1452,7 +1460,7 @@ type GenericEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data *wrappers.StringValue `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Data *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } func (x *GenericEvent) Reset() { @@ -1487,7 +1495,7 @@ func (*GenericEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{21} } -func (x *GenericEvent) GetData() *wrappers.StringValue { +func (x *GenericEvent) GetData() *wrapperspb.StringValue { if x != nil { return x.Data } @@ -1546,7 +1554,7 @@ type ContinueAsNewEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Input *wrappers.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` } func (x *ContinueAsNewEvent) Reset() { @@ -1581,7 +1589,7 @@ func (*ContinueAsNewEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{23} } -func (x *ContinueAsNewEvent) GetInput() *wrappers.StringValue { +func (x *ContinueAsNewEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -1593,7 +1601,7 @@ type ExecutionSuspendedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Input *wrappers.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` } func (x *ExecutionSuspendedEvent) Reset() { @@ -1628,7 +1636,7 @@ func (*ExecutionSuspendedEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{24} } -func (x *ExecutionSuspendedEvent) GetInput() *wrappers.StringValue { +func (x *ExecutionSuspendedEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -1640,7 +1648,7 @@ type ExecutionResumedEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Input *wrappers.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` } func (x *ExecutionResumedEvent) Reset() { @@ -1675,7 +1683,7 @@ func (*ExecutionResumedEvent) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{25} } -func (x *ExecutionResumedEvent) GetInput() *wrappers.StringValue { +func (x *ExecutionResumedEvent) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -1687,8 +1695,8 @@ type HistoryEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EventId int32 `protobuf:"varint,1,opt,name=eventId,proto3" json:"eventId,omitempty"` - Timestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + EventId int32 `protobuf:"varint,1,opt,name=eventId,proto3" json:"eventId,omitempty"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Types that are assignable to EventType: // // *HistoryEvent_ExecutionStarted @@ -1753,7 +1761,7 @@ func (x *HistoryEvent) GetEventId() int32 { return 0 } -func (x *HistoryEvent) GetTimestamp() *timestamp.Timestamp { +func (x *HistoryEvent) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } @@ -2036,9 +2044,9 @@ type ScheduleTaskAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` } func (x *ScheduleTaskAction) Reset() { @@ -2080,14 +2088,14 @@ func (x *ScheduleTaskAction) GetName() string { return "" } -func (x *ScheduleTaskAction) GetVersion() *wrappers.StringValue { +func (x *ScheduleTaskAction) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *ScheduleTaskAction) GetInput() *wrappers.StringValue { +func (x *ScheduleTaskAction) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -2099,10 +2107,10 @@ type CreateSubOrchestrationAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` } func (x *CreateSubOrchestrationAction) Reset() { @@ -2151,14 +2159,14 @@ func (x *CreateSubOrchestrationAction) GetName() string { return "" } -func (x *CreateSubOrchestrationAction) GetVersion() *wrappers.StringValue { +func (x *CreateSubOrchestrationAction) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *CreateSubOrchestrationAction) GetInput() *wrappers.StringValue { +func (x *CreateSubOrchestrationAction) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -2170,7 +2178,7 @@ type CreateTimerAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FireAt *timestamp.Timestamp `protobuf:"bytes,1,opt,name=fireAt,proto3" json:"fireAt,omitempty"` + FireAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=fireAt,proto3" json:"fireAt,omitempty"` } func (x *CreateTimerAction) Reset() { @@ -2205,7 +2213,7 @@ func (*CreateTimerAction) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{29} } -func (x *CreateTimerAction) GetFireAt() *timestamp.Timestamp { +func (x *CreateTimerAction) GetFireAt() *timestamppb.Timestamp { if x != nil { return x.FireAt } @@ -2217,9 +2225,9 @@ type SendEventAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Instance *OrchestrationInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Data *wrappers.StringValue `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Instance *OrchestrationInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Data *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } func (x *SendEventAction) Reset() { @@ -2268,7 +2276,7 @@ func (x *SendEventAction) GetName() string { return "" } -func (x *SendEventAction) GetData() *wrappers.StringValue { +func (x *SendEventAction) GetData() *wrapperspb.StringValue { if x != nil { return x.Data } @@ -2280,12 +2288,12 @@ type CompleteOrchestrationAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrchestrationStatus OrchestrationStatus `protobuf:"varint,1,opt,name=orchestrationStatus,proto3,enum=OrchestrationStatus" json:"orchestrationStatus,omitempty"` - Result *wrappers.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` - Details *wrappers.StringValue `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` - NewVersion *wrappers.StringValue `protobuf:"bytes,4,opt,name=newVersion,proto3" json:"newVersion,omitempty"` - CarryoverEvents []*HistoryEvent `protobuf:"bytes,5,rep,name=carryoverEvents,proto3" json:"carryoverEvents,omitempty"` - FailureDetails *TaskFailureDetails `protobuf:"bytes,6,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` + OrchestrationStatus OrchestrationStatus `protobuf:"varint,1,opt,name=orchestrationStatus,proto3,enum=OrchestrationStatus" json:"orchestrationStatus,omitempty"` + Result *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + Details *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` + NewVersion *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=newVersion,proto3" json:"newVersion,omitempty"` + CarryoverEvents []*HistoryEvent `protobuf:"bytes,5,rep,name=carryoverEvents,proto3" json:"carryoverEvents,omitempty"` + FailureDetails *TaskFailureDetails `protobuf:"bytes,6,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` } func (x *CompleteOrchestrationAction) Reset() { @@ -2327,21 +2335,21 @@ func (x *CompleteOrchestrationAction) GetOrchestrationStatus() OrchestrationStat return OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING } -func (x *CompleteOrchestrationAction) GetResult() *wrappers.StringValue { +func (x *CompleteOrchestrationAction) GetResult() *wrapperspb.StringValue { if x != nil { return x.Result } return nil } -func (x *CompleteOrchestrationAction) GetDetails() *wrappers.StringValue { +func (x *CompleteOrchestrationAction) GetDetails() *wrapperspb.StringValue { if x != nil { return x.Details } return nil } -func (x *CompleteOrchestrationAction) GetNewVersion() *wrappers.StringValue { +func (x *CompleteOrchestrationAction) GetNewVersion() *wrapperspb.StringValue { if x != nil { return x.NewVersion } @@ -2367,9 +2375,9 @@ type TerminateOrchestrationAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Reason *wrappers.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` - Recurse bool `protobuf:"varint,3,opt,name=recurse,proto3" json:"recurse,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Reason *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + Recurse bool `protobuf:"varint,3,opt,name=recurse,proto3" json:"recurse,omitempty"` } func (x *TerminateOrchestrationAction) Reset() { @@ -2411,7 +2419,7 @@ func (x *TerminateOrchestrationAction) GetInstanceId() string { return "" } -func (x *TerminateOrchestrationAction) GetReason() *wrappers.StringValue { +func (x *TerminateOrchestrationAction) GetReason() *wrapperspb.StringValue { if x != nil { return x.Reason } @@ -2576,7 +2584,7 @@ type OrchestratorRequest struct { unknownFields protoimpl.UnknownFields InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - ExecutionId *wrappers.StringValue `protobuf:"bytes,2,opt,name=executionId,proto3" json:"executionId,omitempty"` + ExecutionId *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=executionId,proto3" json:"executionId,omitempty"` PastEvents []*HistoryEvent `protobuf:"bytes,3,rep,name=pastEvents,proto3" json:"pastEvents,omitempty"` NewEvents []*HistoryEvent `protobuf:"bytes,4,rep,name=newEvents,proto3" json:"newEvents,omitempty"` EntityParameters *OrchestratorEntityParameters `protobuf:"bytes,5,opt,name=entityParameters,proto3" json:"entityParameters,omitempty"` @@ -2621,7 +2629,7 @@ func (x *OrchestratorRequest) GetInstanceId() string { return "" } -func (x *OrchestratorRequest) GetExecutionId() *wrappers.StringValue { +func (x *OrchestratorRequest) GetExecutionId() *wrapperspb.StringValue { if x != nil { return x.ExecutionId } @@ -2654,9 +2662,9 @@ type OrchestratorResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Actions []*OrchestratorAction `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` - CustomStatus *wrappers.StringValue `protobuf:"bytes,3,opt,name=customStatus,proto3" json:"customStatus,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Actions []*OrchestratorAction `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` + CustomStatus *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=customStatus,proto3" json:"customStatus,omitempty"` } func (x *OrchestratorResponse) Reset() { @@ -2705,7 +2713,7 @@ func (x *OrchestratorResponse) GetActions() []*OrchestratorAction { return nil } -func (x *OrchestratorResponse) GetCustomStatus() *wrappers.StringValue { +func (x *OrchestratorResponse) GetCustomStatus() *wrapperspb.StringValue { if x != nil { return x.CustomStatus } @@ -2719,10 +2727,12 @@ type CreateInstanceRequest struct { InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` - ScheduledStartTimestamp *timestamp.Timestamp `protobuf:"bytes,5,opt,name=scheduledStartTimestamp,proto3" json:"scheduledStartTimestamp,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` + ScheduledStartTimestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=scheduledStartTimestamp,proto3" json:"scheduledStartTimestamp,omitempty"` OrchestrationIdReusePolicy *OrchestrationIdReusePolicy `protobuf:"bytes,6,opt,name=orchestrationIdReusePolicy,proto3" json:"orchestrationIdReusePolicy,omitempty"` + ExecutionId *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=executionId,proto3" json:"executionId,omitempty"` + Tags map[string]string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *CreateInstanceRequest) Reset() { @@ -2771,21 +2781,21 @@ func (x *CreateInstanceRequest) GetName() string { return "" } -func (x *CreateInstanceRequest) GetVersion() *wrappers.StringValue { +func (x *CreateInstanceRequest) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *CreateInstanceRequest) GetInput() *wrappers.StringValue { +func (x *CreateInstanceRequest) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } return nil } -func (x *CreateInstanceRequest) GetScheduledStartTimestamp() *timestamp.Timestamp { +func (x *CreateInstanceRequest) GetScheduledStartTimestamp() *timestamppb.Timestamp { if x != nil { return x.ScheduledStartTimestamp } @@ -2799,6 +2809,20 @@ func (x *CreateInstanceRequest) GetOrchestrationIdReusePolicy() *OrchestrationId return nil } +func (x *CreateInstanceRequest) GetExecutionId() *wrapperspb.StringValue { + if x != nil { + return x.ExecutionId + } + return nil +} + +func (x *CreateInstanceRequest) GetTags() map[string]string { + if x != nil { + return x.Tags + } + return nil +} + type OrchestrationIdReusePolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3016,8 +3040,8 @@ type RewindInstanceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Reason *wrappers.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Reason *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *RewindInstanceRequest) Reset() { @@ -3059,7 +3083,7 @@ func (x *RewindInstanceRequest) GetInstanceId() string { return "" } -func (x *RewindInstanceRequest) GetReason() *wrappers.StringValue { +func (x *RewindInstanceRequest) GetReason() *wrapperspb.StringValue { if x != nil { return x.Reason } @@ -3109,17 +3133,20 @@ type OrchestrationState struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - OrchestrationStatus OrchestrationStatus `protobuf:"varint,4,opt,name=orchestrationStatus,proto3,enum=OrchestrationStatus" json:"orchestrationStatus,omitempty"` - ScheduledStartTimestamp *timestamp.Timestamp `protobuf:"bytes,5,opt,name=scheduledStartTimestamp,proto3" json:"scheduledStartTimestamp,omitempty"` - CreatedTimestamp *timestamp.Timestamp `protobuf:"bytes,6,opt,name=createdTimestamp,proto3" json:"createdTimestamp,omitempty"` - LastUpdatedTimestamp *timestamp.Timestamp `protobuf:"bytes,7,opt,name=lastUpdatedTimestamp,proto3" json:"lastUpdatedTimestamp,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,8,opt,name=input,proto3" json:"input,omitempty"` - Output *wrappers.StringValue `protobuf:"bytes,9,opt,name=output,proto3" json:"output,omitempty"` - CustomStatus *wrappers.StringValue `protobuf:"bytes,10,opt,name=customStatus,proto3" json:"customStatus,omitempty"` - FailureDetails *TaskFailureDetails `protobuf:"bytes,11,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + OrchestrationStatus OrchestrationStatus `protobuf:"varint,4,opt,name=orchestrationStatus,proto3,enum=OrchestrationStatus" json:"orchestrationStatus,omitempty"` + ScheduledStartTimestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=scheduledStartTimestamp,proto3" json:"scheduledStartTimestamp,omitempty"` + CreatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=createdTimestamp,proto3" json:"createdTimestamp,omitempty"` + LastUpdatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=lastUpdatedTimestamp,proto3" json:"lastUpdatedTimestamp,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=input,proto3" json:"input,omitempty"` + Output *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=output,proto3" json:"output,omitempty"` + CustomStatus *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=customStatus,proto3" json:"customStatus,omitempty"` + FailureDetails *TaskFailureDetails `protobuf:"bytes,11,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` + ExecutionId *wrapperspb.StringValue `protobuf:"bytes,12,opt,name=executionId,proto3" json:"executionId,omitempty"` + CompletedTimestamp *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=completedTimestamp,proto3" json:"completedTimestamp,omitempty"` + ParentInstanceId *wrapperspb.StringValue `protobuf:"bytes,14,opt,name=parentInstanceId,proto3" json:"parentInstanceId,omitempty"` } func (x *OrchestrationState) Reset() { @@ -3168,7 +3195,7 @@ func (x *OrchestrationState) GetName() string { return "" } -func (x *OrchestrationState) GetVersion() *wrappers.StringValue { +func (x *OrchestrationState) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } @@ -3182,42 +3209,42 @@ func (x *OrchestrationState) GetOrchestrationStatus() OrchestrationStatus { return OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING } -func (x *OrchestrationState) GetScheduledStartTimestamp() *timestamp.Timestamp { +func (x *OrchestrationState) GetScheduledStartTimestamp() *timestamppb.Timestamp { if x != nil { return x.ScheduledStartTimestamp } return nil } -func (x *OrchestrationState) GetCreatedTimestamp() *timestamp.Timestamp { +func (x *OrchestrationState) GetCreatedTimestamp() *timestamppb.Timestamp { if x != nil { return x.CreatedTimestamp } return nil } -func (x *OrchestrationState) GetLastUpdatedTimestamp() *timestamp.Timestamp { +func (x *OrchestrationState) GetLastUpdatedTimestamp() *timestamppb.Timestamp { if x != nil { return x.LastUpdatedTimestamp } return nil } -func (x *OrchestrationState) GetInput() *wrappers.StringValue { +func (x *OrchestrationState) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } return nil } -func (x *OrchestrationState) GetOutput() *wrappers.StringValue { +func (x *OrchestrationState) GetOutput() *wrapperspb.StringValue { if x != nil { return x.Output } return nil } -func (x *OrchestrationState) GetCustomStatus() *wrappers.StringValue { +func (x *OrchestrationState) GetCustomStatus() *wrapperspb.StringValue { if x != nil { return x.CustomStatus } @@ -3231,14 +3258,35 @@ func (x *OrchestrationState) GetFailureDetails() *TaskFailureDetails { return nil } +func (x *OrchestrationState) GetExecutionId() *wrapperspb.StringValue { + if x != nil { + return x.ExecutionId + } + return nil +} + +func (x *OrchestrationState) GetCompletedTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.CompletedTimestamp + } + return nil +} + +func (x *OrchestrationState) GetParentInstanceId() *wrapperspb.StringValue { + if x != nil { + return x.ParentInstanceId + } + return nil +} + type RaiseEventRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` } func (x *RaiseEventRequest) Reset() { @@ -3287,7 +3335,7 @@ func (x *RaiseEventRequest) GetName() string { return "" } -func (x *RaiseEventRequest) GetInput() *wrappers.StringValue { +func (x *RaiseEventRequest) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -3337,9 +3385,9 @@ type TerminateRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Output *wrappers.StringValue `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` - Recursive bool `protobuf:"varint,3,opt,name=recursive,proto3" json:"recursive,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Output *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + Recursive bool `protobuf:"varint,3,opt,name=recursive,proto3" json:"recursive,omitempty"` } func (x *TerminateRequest) Reset() { @@ -3381,7 +3429,7 @@ func (x *TerminateRequest) GetInstanceId() string { return "" } -func (x *TerminateRequest) GetOutput() *wrappers.StringValue { +func (x *TerminateRequest) GetOutput() *wrapperspb.StringValue { if x != nil { return x.Output } @@ -3438,8 +3486,8 @@ type SuspendRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Reason *wrappers.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Reason *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *SuspendRequest) Reset() { @@ -3481,7 +3529,7 @@ func (x *SuspendRequest) GetInstanceId() string { return "" } -func (x *SuspendRequest) GetReason() *wrappers.StringValue { +func (x *SuspendRequest) GetReason() *wrapperspb.StringValue { if x != nil { return x.Reason } @@ -3531,8 +3579,8 @@ type ResumeRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Reason *wrappers.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Reason *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *ResumeRequest) Reset() { @@ -3574,7 +3622,7 @@ func (x *ResumeRequest) GetInstanceId() string { return "" } -func (x *ResumeRequest) GetReason() *wrappers.StringValue { +func (x *ResumeRequest) GetReason() *wrapperspb.StringValue { if x != nil { return x.Reason } @@ -3671,14 +3719,14 @@ type InstanceQuery struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RuntimeStatus []OrchestrationStatus `protobuf:"varint,1,rep,packed,name=runtimeStatus,proto3,enum=OrchestrationStatus" json:"runtimeStatus,omitempty"` - CreatedTimeFrom *timestamp.Timestamp `protobuf:"bytes,2,opt,name=createdTimeFrom,proto3" json:"createdTimeFrom,omitempty"` - CreatedTimeTo *timestamp.Timestamp `protobuf:"bytes,3,opt,name=createdTimeTo,proto3" json:"createdTimeTo,omitempty"` - TaskHubNames []*wrappers.StringValue `protobuf:"bytes,4,rep,name=taskHubNames,proto3" json:"taskHubNames,omitempty"` - MaxInstanceCount int32 `protobuf:"varint,5,opt,name=maxInstanceCount,proto3" json:"maxInstanceCount,omitempty"` - ContinuationToken *wrappers.StringValue `protobuf:"bytes,6,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` - InstanceIdPrefix *wrappers.StringValue `protobuf:"bytes,7,opt,name=instanceIdPrefix,proto3" json:"instanceIdPrefix,omitempty"` - FetchInputsAndOutputs bool `protobuf:"varint,8,opt,name=fetchInputsAndOutputs,proto3" json:"fetchInputsAndOutputs,omitempty"` + RuntimeStatus []OrchestrationStatus `protobuf:"varint,1,rep,packed,name=runtimeStatus,proto3,enum=OrchestrationStatus" json:"runtimeStatus,omitempty"` + CreatedTimeFrom *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=createdTimeFrom,proto3" json:"createdTimeFrom,omitempty"` + CreatedTimeTo *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=createdTimeTo,proto3" json:"createdTimeTo,omitempty"` + TaskHubNames []*wrapperspb.StringValue `protobuf:"bytes,4,rep,name=taskHubNames,proto3" json:"taskHubNames,omitempty"` + MaxInstanceCount int32 `protobuf:"varint,5,opt,name=maxInstanceCount,proto3" json:"maxInstanceCount,omitempty"` + ContinuationToken *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` + InstanceIdPrefix *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=instanceIdPrefix,proto3" json:"instanceIdPrefix,omitempty"` + FetchInputsAndOutputs bool `protobuf:"varint,8,opt,name=fetchInputsAndOutputs,proto3" json:"fetchInputsAndOutputs,omitempty"` } func (x *InstanceQuery) Reset() { @@ -3720,21 +3768,21 @@ func (x *InstanceQuery) GetRuntimeStatus() []OrchestrationStatus { return nil } -func (x *InstanceQuery) GetCreatedTimeFrom() *timestamp.Timestamp { +func (x *InstanceQuery) GetCreatedTimeFrom() *timestamppb.Timestamp { if x != nil { return x.CreatedTimeFrom } return nil } -func (x *InstanceQuery) GetCreatedTimeTo() *timestamp.Timestamp { +func (x *InstanceQuery) GetCreatedTimeTo() *timestamppb.Timestamp { if x != nil { return x.CreatedTimeTo } return nil } -func (x *InstanceQuery) GetTaskHubNames() []*wrappers.StringValue { +func (x *InstanceQuery) GetTaskHubNames() []*wrapperspb.StringValue { if x != nil { return x.TaskHubNames } @@ -3748,14 +3796,14 @@ func (x *InstanceQuery) GetMaxInstanceCount() int32 { return 0 } -func (x *InstanceQuery) GetContinuationToken() *wrappers.StringValue { +func (x *InstanceQuery) GetContinuationToken() *wrapperspb.StringValue { if x != nil { return x.ContinuationToken } return nil } -func (x *InstanceQuery) GetInstanceIdPrefix() *wrappers.StringValue { +func (x *InstanceQuery) GetInstanceIdPrefix() *wrapperspb.StringValue { if x != nil { return x.InstanceIdPrefix } @@ -3774,8 +3822,8 @@ type QueryInstancesResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrchestrationState []*OrchestrationState `protobuf:"bytes,1,rep,name=orchestrationState,proto3" json:"orchestrationState,omitempty"` - ContinuationToken *wrappers.StringValue `protobuf:"bytes,2,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` + OrchestrationState []*OrchestrationState `protobuf:"bytes,1,rep,name=orchestrationState,proto3" json:"orchestrationState,omitempty"` + ContinuationToken *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` } func (x *QueryInstancesResponse) Reset() { @@ -3817,7 +3865,7 @@ func (x *QueryInstancesResponse) GetOrchestrationState() []*OrchestrationState { return nil } -func (x *QueryInstancesResponse) GetContinuationToken() *wrappers.StringValue { +func (x *QueryInstancesResponse) GetContinuationToken() *wrapperspb.StringValue { if x != nil { return x.ContinuationToken } @@ -3918,9 +3966,9 @@ type PurgeInstanceFilter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CreatedTimeFrom *timestamp.Timestamp `protobuf:"bytes,1,opt,name=createdTimeFrom,proto3" json:"createdTimeFrom,omitempty"` - CreatedTimeTo *timestamp.Timestamp `protobuf:"bytes,2,opt,name=createdTimeTo,proto3" json:"createdTimeTo,omitempty"` - RuntimeStatus []OrchestrationStatus `protobuf:"varint,3,rep,packed,name=runtimeStatus,proto3,enum=OrchestrationStatus" json:"runtimeStatus,omitempty"` + CreatedTimeFrom *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=createdTimeFrom,proto3" json:"createdTimeFrom,omitempty"` + CreatedTimeTo *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=createdTimeTo,proto3" json:"createdTimeTo,omitempty"` + RuntimeStatus []OrchestrationStatus `protobuf:"varint,3,rep,packed,name=runtimeStatus,proto3,enum=OrchestrationStatus" json:"runtimeStatus,omitempty"` } func (x *PurgeInstanceFilter) Reset() { @@ -3955,14 +4003,14 @@ func (*PurgeInstanceFilter) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{56} } -func (x *PurgeInstanceFilter) GetCreatedTimeFrom() *timestamp.Timestamp { +func (x *PurgeInstanceFilter) GetCreatedTimeFrom() *timestamppb.Timestamp { if x != nil { return x.CreatedTimeFrom } return nil } -func (x *PurgeInstanceFilter) GetCreatedTimeTo() *timestamp.Timestamp { +func (x *PurgeInstanceFilter) GetCreatedTimeTo() *timestamppb.Timestamp { if x != nil { return x.CreatedTimeTo } @@ -4189,11 +4237,11 @@ type SignalEntityRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` - RequestId string `protobuf:"bytes,4,opt,name=requestId,proto3" json:"requestId,omitempty"` - ScheduledTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=scheduledTime,proto3" json:"scheduledTime,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + RequestId string `protobuf:"bytes,4,opt,name=requestId,proto3" json:"requestId,omitempty"` + ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=scheduledTime,proto3" json:"scheduledTime,omitempty"` } func (x *SignalEntityRequest) Reset() { @@ -4242,7 +4290,7 @@ func (x *SignalEntityRequest) GetName() string { return "" } -func (x *SignalEntityRequest) GetInput() *wrappers.StringValue { +func (x *SignalEntityRequest) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -4256,7 +4304,7 @@ func (x *SignalEntityRequest) GetRequestId() string { return "" } -func (x *SignalEntityRequest) GetScheduledTime() *timestamp.Timestamp { +func (x *SignalEntityRequest) GetScheduledTime() *timestamppb.Timestamp { if x != nil { return x.ScheduledTime } @@ -4416,13 +4464,13 @@ type EntityQuery struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceIdStartsWith *wrappers.StringValue `protobuf:"bytes,1,opt,name=instanceIdStartsWith,proto3" json:"instanceIdStartsWith,omitempty"` - LastModifiedFrom *timestamp.Timestamp `protobuf:"bytes,2,opt,name=lastModifiedFrom,proto3" json:"lastModifiedFrom,omitempty"` - LastModifiedTo *timestamp.Timestamp `protobuf:"bytes,3,opt,name=lastModifiedTo,proto3" json:"lastModifiedTo,omitempty"` - IncludeState bool `protobuf:"varint,4,opt,name=includeState,proto3" json:"includeState,omitempty"` - IncludeTransient bool `protobuf:"varint,5,opt,name=includeTransient,proto3" json:"includeTransient,omitempty"` - PageSize *wrappers.Int32Value `protobuf:"bytes,6,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - ContinuationToken *wrappers.StringValue `protobuf:"bytes,7,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` + InstanceIdStartsWith *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=instanceIdStartsWith,proto3" json:"instanceIdStartsWith,omitempty"` + LastModifiedFrom *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=lastModifiedFrom,proto3" json:"lastModifiedFrom,omitempty"` + LastModifiedTo *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=lastModifiedTo,proto3" json:"lastModifiedTo,omitempty"` + IncludeState bool `protobuf:"varint,4,opt,name=includeState,proto3" json:"includeState,omitempty"` + IncludeTransient bool `protobuf:"varint,5,opt,name=includeTransient,proto3" json:"includeTransient,omitempty"` + PageSize *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + ContinuationToken *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` } func (x *EntityQuery) Reset() { @@ -4457,21 +4505,21 @@ func (*EntityQuery) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{66} } -func (x *EntityQuery) GetInstanceIdStartsWith() *wrappers.StringValue { +func (x *EntityQuery) GetInstanceIdStartsWith() *wrapperspb.StringValue { if x != nil { return x.InstanceIdStartsWith } return nil } -func (x *EntityQuery) GetLastModifiedFrom() *timestamp.Timestamp { +func (x *EntityQuery) GetLastModifiedFrom() *timestamppb.Timestamp { if x != nil { return x.LastModifiedFrom } return nil } -func (x *EntityQuery) GetLastModifiedTo() *timestamp.Timestamp { +func (x *EntityQuery) GetLastModifiedTo() *timestamppb.Timestamp { if x != nil { return x.LastModifiedTo } @@ -4492,14 +4540,14 @@ func (x *EntityQuery) GetIncludeTransient() bool { return false } -func (x *EntityQuery) GetPageSize() *wrappers.Int32Value { +func (x *EntityQuery) GetPageSize() *wrapperspb.Int32Value { if x != nil { return x.PageSize } return nil } -func (x *EntityQuery) GetContinuationToken() *wrappers.StringValue { +func (x *EntityQuery) GetContinuationToken() *wrapperspb.StringValue { if x != nil { return x.ContinuationToken } @@ -4558,8 +4606,8 @@ type QueryEntitiesResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Entities []*EntityMetadata `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"` - ContinuationToken *wrappers.StringValue `protobuf:"bytes,2,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` + Entities []*EntityMetadata `protobuf:"bytes,1,rep,name=entities,proto3" json:"entities,omitempty"` + ContinuationToken *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` } func (x *QueryEntitiesResponse) Reset() { @@ -4601,7 +4649,7 @@ func (x *QueryEntitiesResponse) GetEntities() []*EntityMetadata { return nil } -func (x *QueryEntitiesResponse) GetContinuationToken() *wrappers.StringValue { +func (x *QueryEntitiesResponse) GetContinuationToken() *wrapperspb.StringValue { if x != nil { return x.ContinuationToken } @@ -4613,11 +4661,11 @@ type EntityMetadata struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - LastModifiedTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=lastModifiedTime,proto3" json:"lastModifiedTime,omitempty"` - BacklogQueueSize int32 `protobuf:"varint,3,opt,name=backlogQueueSize,proto3" json:"backlogQueueSize,omitempty"` - LockedBy *wrappers.StringValue `protobuf:"bytes,4,opt,name=lockedBy,proto3" json:"lockedBy,omitempty"` - SerializedState *wrappers.StringValue `protobuf:"bytes,5,opt,name=serializedState,proto3" json:"serializedState,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + LastModifiedTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=lastModifiedTime,proto3" json:"lastModifiedTime,omitempty"` + BacklogQueueSize int32 `protobuf:"varint,3,opt,name=backlogQueueSize,proto3" json:"backlogQueueSize,omitempty"` + LockedBy *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=lockedBy,proto3" json:"lockedBy,omitempty"` + SerializedState *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=serializedState,proto3" json:"serializedState,omitempty"` } func (x *EntityMetadata) Reset() { @@ -4659,7 +4707,7 @@ func (x *EntityMetadata) GetInstanceId() string { return "" } -func (x *EntityMetadata) GetLastModifiedTime() *timestamp.Timestamp { +func (x *EntityMetadata) GetLastModifiedTime() *timestamppb.Timestamp { if x != nil { return x.LastModifiedTime } @@ -4673,14 +4721,14 @@ func (x *EntityMetadata) GetBacklogQueueSize() int32 { return 0 } -func (x *EntityMetadata) GetLockedBy() *wrappers.StringValue { +func (x *EntityMetadata) GetLockedBy() *wrapperspb.StringValue { if x != nil { return x.LockedBy } return nil } -func (x *EntityMetadata) GetSerializedState() *wrappers.StringValue { +func (x *EntityMetadata) GetSerializedState() *wrapperspb.StringValue { if x != nil { return x.SerializedState } @@ -4692,9 +4740,9 @@ type CleanEntityStorageRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ContinuationToken *wrappers.StringValue `protobuf:"bytes,1,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` - RemoveEmptyEntities bool `protobuf:"varint,2,opt,name=removeEmptyEntities,proto3" json:"removeEmptyEntities,omitempty"` - ReleaseOrphanedLocks bool `protobuf:"varint,3,opt,name=releaseOrphanedLocks,proto3" json:"releaseOrphanedLocks,omitempty"` + ContinuationToken *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` + RemoveEmptyEntities bool `protobuf:"varint,2,opt,name=removeEmptyEntities,proto3" json:"removeEmptyEntities,omitempty"` + ReleaseOrphanedLocks bool `protobuf:"varint,3,opt,name=releaseOrphanedLocks,proto3" json:"releaseOrphanedLocks,omitempty"` } func (x *CleanEntityStorageRequest) Reset() { @@ -4729,7 +4777,7 @@ func (*CleanEntityStorageRequest) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{70} } -func (x *CleanEntityStorageRequest) GetContinuationToken() *wrappers.StringValue { +func (x *CleanEntityStorageRequest) GetContinuationToken() *wrapperspb.StringValue { if x != nil { return x.ContinuationToken } @@ -4755,9 +4803,9 @@ type CleanEntityStorageResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ContinuationToken *wrappers.StringValue `protobuf:"bytes,1,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` - EmptyEntitiesRemoved int32 `protobuf:"varint,2,opt,name=emptyEntitiesRemoved,proto3" json:"emptyEntitiesRemoved,omitempty"` - OrphanedLocksReleased int32 `protobuf:"varint,3,opt,name=orphanedLocksReleased,proto3" json:"orphanedLocksReleased,omitempty"` + ContinuationToken *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=continuationToken,proto3" json:"continuationToken,omitempty"` + EmptyEntitiesRemoved int32 `protobuf:"varint,2,opt,name=emptyEntitiesRemoved,proto3" json:"emptyEntitiesRemoved,omitempty"` + OrphanedLocksReleased int32 `protobuf:"varint,3,opt,name=orphanedLocksReleased,proto3" json:"orphanedLocksReleased,omitempty"` } func (x *CleanEntityStorageResponse) Reset() { @@ -4792,7 +4840,7 @@ func (*CleanEntityStorageResponse) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{71} } -func (x *CleanEntityStorageResponse) GetContinuationToken() *wrappers.StringValue { +func (x *CleanEntityStorageResponse) GetContinuationToken() *wrapperspb.StringValue { if x != nil { return x.ContinuationToken } @@ -4818,7 +4866,7 @@ type OrchestratorEntityParameters struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EntityMessageReorderWindow *duration.Duration `protobuf:"bytes,1,opt,name=entityMessageReorderWindow,proto3" json:"entityMessageReorderWindow,omitempty"` + EntityMessageReorderWindow *durationpb.Duration `protobuf:"bytes,1,opt,name=entityMessageReorderWindow,proto3" json:"entityMessageReorderWindow,omitempty"` } func (x *OrchestratorEntityParameters) Reset() { @@ -4853,7 +4901,7 @@ func (*OrchestratorEntityParameters) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{72} } -func (x *OrchestratorEntityParameters) GetEntityMessageReorderWindow() *duration.Duration { +func (x *OrchestratorEntityParameters) GetEntityMessageReorderWindow() *durationpb.Duration { if x != nil { return x.EntityMessageReorderWindow } @@ -4865,9 +4913,9 @@ type EntityBatchRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - EntityState *wrappers.StringValue `protobuf:"bytes,2,opt,name=entityState,proto3" json:"entityState,omitempty"` - Operations []*OperationRequest `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + EntityState *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=entityState,proto3" json:"entityState,omitempty"` + Operations []*OperationRequest `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` } func (x *EntityBatchRequest) Reset() { @@ -4909,7 +4957,7 @@ func (x *EntityBatchRequest) GetInstanceId() string { return "" } -func (x *EntityBatchRequest) GetEntityState() *wrappers.StringValue { +func (x *EntityBatchRequest) GetEntityState() *wrapperspb.StringValue { if x != nil { return x.EntityState } @@ -4928,10 +4976,10 @@ type EntityBatchResult struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Results []*OperationResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - Actions []*OperationAction `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` - EntityState *wrappers.StringValue `protobuf:"bytes,3,opt,name=entityState,proto3" json:"entityState,omitempty"` - FailureDetails *TaskFailureDetails `protobuf:"bytes,4,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` + Results []*OperationResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + Actions []*OperationAction `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` + EntityState *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=entityState,proto3" json:"entityState,omitempty"` + FailureDetails *TaskFailureDetails `protobuf:"bytes,4,opt,name=failureDetails,proto3" json:"failureDetails,omitempty"` } func (x *EntityBatchResult) Reset() { @@ -4980,7 +5028,7 @@ func (x *EntityBatchResult) GetActions() []*OperationAction { return nil } -func (x *EntityBatchResult) GetEntityState() *wrappers.StringValue { +func (x *EntityBatchResult) GetEntityState() *wrapperspb.StringValue { if x != nil { return x.EntityState } @@ -4999,9 +5047,9 @@ type OperationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` - RequestId string `protobuf:"bytes,2,opt,name=requestId,proto3" json:"requestId,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` + RequestId string `protobuf:"bytes,2,opt,name=requestId,proto3" json:"requestId,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` } func (x *OperationRequest) Reset() { @@ -5050,7 +5098,7 @@ func (x *OperationRequest) GetRequestId() string { return "" } -func (x *OperationRequest) GetInput() *wrappers.StringValue { +func (x *OperationRequest) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } @@ -5143,7 +5191,7 @@ type OperationResultSuccess struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *wrappers.StringValue `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` } func (x *OperationResultSuccess) Reset() { @@ -5178,7 +5226,7 @@ func (*OperationResultSuccess) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{77} } -func (x *OperationResultSuccess) GetResult() *wrappers.StringValue { +func (x *OperationResultSuccess) GetResult() *wrapperspb.StringValue { if x != nil { return x.Result } @@ -5326,10 +5374,10 @@ type SendSignalAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` - ScheduledTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=scheduledTime,proto3" json:"scheduledTime,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` + ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=scheduledTime,proto3" json:"scheduledTime,omitempty"` } func (x *SendSignalAction) Reset() { @@ -5378,14 +5426,14 @@ func (x *SendSignalAction) GetName() string { return "" } -func (x *SendSignalAction) GetInput() *wrappers.StringValue { +func (x *SendSignalAction) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } return nil } -func (x *SendSignalAction) GetScheduledTime() *timestamp.Timestamp { +func (x *SendSignalAction) GetScheduledTime() *timestamppb.Timestamp { if x != nil { return x.ScheduledTime } @@ -5397,11 +5445,11 @@ type StartNewOrchestrationAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version *wrappers.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Input *wrappers.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` - ScheduledTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=scheduledTime,proto3" json:"scheduledTime,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instanceId,proto3" json:"instanceId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Input *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=input,proto3" json:"input,omitempty"` + ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=scheduledTime,proto3" json:"scheduledTime,omitempty"` } func (x *StartNewOrchestrationAction) Reset() { @@ -5450,21 +5498,21 @@ func (x *StartNewOrchestrationAction) GetName() string { return "" } -func (x *StartNewOrchestrationAction) GetVersion() *wrappers.StringValue { +func (x *StartNewOrchestrationAction) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } -func (x *StartNewOrchestrationAction) GetInput() *wrappers.StringValue { +func (x *StartNewOrchestrationAction) GetInput() *wrapperspb.StringValue { if x != nil { return x.Input } return nil } -func (x *StartNewOrchestrationAction) GetScheduledTime() *timestamp.Timestamp { +func (x *StartNewOrchestrationAction) GetScheduledTime() *timestamppb.Timestamp { if x != nil { return x.ScheduledTime } @@ -5519,7 +5567,9 @@ type WorkItem struct { // *WorkItem_OrchestratorRequest // *WorkItem_ActivityRequest // *WorkItem_EntityRequest - Request isWorkItem_Request `protobuf_oneof:"request"` + // *WorkItem_HealthPing + Request isWorkItem_Request `protobuf_oneof:"request"` + CompletionToken string `protobuf:"bytes,10,opt,name=completionToken,proto3" json:"completionToken,omitempty"` } func (x *WorkItem) Reset() { @@ -5582,6 +5632,20 @@ func (x *WorkItem) GetEntityRequest() *EntityBatchRequest { return nil } +func (x *WorkItem) GetHealthPing() *HealthPing { + if x, ok := x.GetRequest().(*WorkItem_HealthPing); ok { + return x.HealthPing + } + return nil +} + +func (x *WorkItem) GetCompletionToken() string { + if x != nil { + return x.CompletionToken + } + return "" +} + type isWorkItem_Request interface { isWorkItem_Request() } @@ -5598,12 +5662,18 @@ type WorkItem_EntityRequest struct { EntityRequest *EntityBatchRequest `protobuf:"bytes,3,opt,name=entityRequest,proto3,oneof"` } +type WorkItem_HealthPing struct { + HealthPing *HealthPing `protobuf:"bytes,4,opt,name=healthPing,proto3,oneof"` +} + func (*WorkItem_OrchestratorRequest) isWorkItem_Request() {} func (*WorkItem_ActivityRequest) isWorkItem_Request() {} func (*WorkItem_EntityRequest) isWorkItem_Request() {} +func (*WorkItem_HealthPing) isWorkItem_Request() {} + type CompleteTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5642,6 +5712,44 @@ func (*CompleteTaskResponse) Descriptor() ([]byte, []int) { return file_orchestrator_service_proto_rawDescGZIP(), []int{84} } +type HealthPing struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *HealthPing) Reset() { + *x = HealthPing{} + if protoimpl.UnsafeEnabled { + mi := &file_orchestrator_service_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HealthPing) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HealthPing) ProtoMessage() {} + +func (x *HealthPing) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_service_proto_msgTypes[85] + if 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 HealthPing.ProtoReflect.Descriptor instead. +func (*HealthPing) Descriptor() ([]byte, []int) { + return file_orchestrator_service_proto_rawDescGZIP(), []int{85} +} + var File_orchestrator_service_proto protoreflect.FileDescriptor var file_orchestrator_service_proto_rawDesc = []byte{ @@ -5662,7 +5770,7 @@ var file_orchestrator_service_proto_rawDesc = []byte{ 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0xf7, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x6e, 0x49, 0x64, 0x22, 0xb6, 0x02, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 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, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, @@ -5677,1021 +5785,1055 @@ var file_orchestrator_service_proto_rawDesc = []byte{ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0xbd, 0x01, - 0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xf5, 0x01, - 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x46, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, - 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x69, 0x73, 0x4e, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4e, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, - 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x4c, 0x0a, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8a, - 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, - 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x12, 0x3c, 0x0a, - 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x87, 0x04, 0x0a, 0x15, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x6f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x50, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x54, 0x0a, 0x17, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3d, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x4e, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x70, 0x61, 0x6e, 0x49, 0x44, 0x22, 0xd4, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x46, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x3d, 0x0a, + 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0xbd, 0x01, 0x0a, + 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x68, 0x0a, 0x18, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, - 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, - 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xf5, 0x01, 0x0a, + 0x12, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0e, + 0x69, 0x73, 0x4e, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4e, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x74, + 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, - 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x74, 0x0a, 0x12, - 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x73, - 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x78, 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, - 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x85, 0x02, 0x0a, - 0x24, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x4c, 0x0a, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8a, 0x01, + 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x20, + 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x12, 0x3c, 0x0a, 0x0a, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x87, 0x04, 0x0a, 0x15, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x6f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x54, 0x0a, 0x17, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3d, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x26, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, - 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x8c, 0x01, 0x0a, 0x23, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, - 0x64, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, - 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x47, - 0x0a, 0x11, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x72, - 0x46, 0x69, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, - 0x72, 0x65, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x4f, 0x72, 0x63, 0x68, - 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x45, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x4e, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x61, 0x6e, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, + 0x61, 0x6e, 0x49, 0x44, 0x22, 0xd4, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x46, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3b, + 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x68, 0x0a, 0x18, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x12, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x74, 0x0a, 0x12, 0x54, + 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x78, 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, + 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x3b, + 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x24, + 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x5a, 0x0a, 0x10, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x40, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x58, 0x0a, 0x11, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x43, 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x4f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, - 0x41, 0x73, 0x4e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x4d, - 0x0a, 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, + 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x26, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, + 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x4b, 0x0a, - 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8c, + 0x01, 0x0a, 0x23, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x49, 0x64, + 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x47, 0x0a, + 0x11, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, + 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x46, + 0x69, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x72, + 0x65, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x78, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x5a, 0x0a, 0x10, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x40, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x92, 0x0c, 0x0a, 0x0c, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x44, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x12, 0x4d, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, - 0x12, 0x3b, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, - 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, - 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x61, 0x73, - 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x74, 0x61, - 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x71, - 0x0a, 0x1f, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, - 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x1f, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x77, 0x0a, 0x21, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x53, - 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x21, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, + 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x58, 0x0a, 0x11, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x43, + 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x4f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, + 0x73, 0x4e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x4d, 0x0a, + 0x17, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x4b, 0x0a, 0x15, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x92, 0x0c, 0x0a, 0x0c, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x44, + 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x12, 0x4d, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x3b, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x74, + 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0d, + 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x74, 0x61, 0x73, + 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x71, 0x0a, + 0x1f, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x1e, 0x73, 0x75, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x1f, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x77, 0x0a, 0x21, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x73, 0x75, 0x62, 0x4f, - 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x46, 0x69, 0x72, - 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, - 0x46, 0x69, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, - 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, - 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x09, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, - 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, 0x73, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, 0x73, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, - 0x69, 0x73, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, - 0x73, 0x4e, 0x65, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, - 0x12, 0x4a, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, - 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x94, 0x01, 0x0a, 0x12, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x21, 0x73, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x1e, 0x73, 0x75, 0x62, + 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x73, 0x75, 0x62, 0x4f, 0x72, + 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x74, 0x69, 0x6d, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, + 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x46, + 0x69, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x69, 0x6d, + 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x0b, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, 0x73, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, 0x73, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x69, + 0x73, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, + 0x4e, 0x65, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, 0x12, + 0x4a, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x94, + 0x01, 0x0a, 0x12, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x47, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x66, + 0x69, 0x72, 0x65, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x22, + 0x8b, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x87, 0x03, + 0x0a, 0x1b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, + 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x47, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, - 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x66, 0x69, 0x72, 0x65, 0x41, 0x74, - 0x22, 0x8b, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x87, - 0x03, 0x0a, 0x1b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, - 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, - 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x37, 0x0a, 0x0f, 0x63, 0x61, 0x72, 0x72, 0x79, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x63, 0x61, 0x72, 0x72, 0x79, + 0x6f, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x1c, 0x54, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x0f, 0x63, 0x61, 0x72, 0x72, 0x79, 0x6f, 0x76, 0x65, 0x72, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x63, 0x61, 0x72, 0x72, - 0x79, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x1c, 0x54, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x22, 0xeb, 0x03, 0x0a, 0x12, 0x4f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x39, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x57, 0x0a, 0x16, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x63, 0x72, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x22, 0xeb, 0x03, 0x0a, 0x12, 0x4f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x39, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x57, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x09, - 0x73, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x54, - 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x09, 0x73, + 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, + 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, - 0x16, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x02, 0x0a, 0x13, 0x4f, 0x72, 0x63, 0x68, - 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x3e, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, + 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x02, 0x0a, 0x13, 0x4f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3e, + 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, + 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, + 0x09, 0x6e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x09, 0x6e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x14, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2d, + 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, + 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x99, 0x04, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x2d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, - 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x09, 0x6e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x14, 0x4f, 0x72, 0x63, 0x68, 0x65, - 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x2d, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, - 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, + 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x5b, 0x0a, 0x1a, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x1a, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3e, 0x0a, 0x0b, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x01, 0x0a, 0x1a, + 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, + 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3e, 0x0a, 0x0f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x38, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, + 0x0a, 0x13, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x67, 0x65, 0x74, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x22, 0x72, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, + 0x43, 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x4f, 0x72, + 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x22, 0x6d, 0x0a, 0x15, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf5, 0x06, + 0x0a, 0x12, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x46, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x46, + 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4e, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x40, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x3e, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0xea, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, + 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x4a, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x48, 0x0a, 0x10, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x11, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, + 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x10, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, + 0x65, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x11, + 0x0a, 0x0f, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x65, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x75, + 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x0a, 0x15, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x8d, 0x04, 0x0a, 0x0d, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x40, 0x0a, + 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x12, + 0x40, 0x0a, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x5b, 0x0a, 0x1a, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x1a, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x90, 0x01, - 0x0a, 0x1a, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3e, 0x0a, 0x0f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x38, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x30, 0x0a, 0x13, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x67, - 0x65, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x22, 0x72, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x12, 0x43, 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x6d, 0x0a, 0x15, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x34, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x9f, 0x05, 0x0a, 0x12, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x46, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4e, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x34, 0x0a, 0x06, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x61, 0x78, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, + 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x22, 0x7b, 0x0a, 0x11, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x14, - 0x0a, 0x12, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x10, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0x13, 0x0a, - 0x11, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x48, 0x0a, 0x10, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x34, 0x0a, 0x15, 0x66, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x15, 0x66, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, + 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x16, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x75, - 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x0a, - 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, + 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x15, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x8d, 0x04, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x40, 0x0a, 0x0d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x74, - 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, - 0x10, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, + 0x20, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x48, 0x0a, 0x13, 0x70, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x13, 0x70, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, + 0x6f, 0x6d, 0x12, 0x40, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x54, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x6f, 0x12, 0x3a, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, + 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x4c, 0x0a, 0x16, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x42, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x72, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x48, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, + 0x13, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0d, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x22, 0xc0, 0x03, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x50, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, + 0x57, 0x69, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, + 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x42, 0x0a, 0x0e, + 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, + 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, + 0x12, 0x37, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x48, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, - 0x34, 0x0a, 0x15, 0x66, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, - 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x4f, - 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, - 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x15, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x48, 0x0a, - 0x13, 0x70, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x13, 0x70, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, - 0x73, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, - 0x72, 0x73, 0x69, 0x76, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x40, - 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, - 0x12, 0x3a, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x16, - 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x14, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, - 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x17, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x13, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x22, 0x90, 0x01, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa6, 0x02, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, + 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x6c, + 0x6f, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xc0, - 0x03, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x50, - 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, - 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x42, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, - 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, - 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x12, 0x22, 0x0a, 0x0c, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x42, 0x79, 0x12, 0x46, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, - 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x3a, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x90, 0x01, - 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xcd, 0x01, + 0x0a, 0x19, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0xa6, 0x02, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4d, - 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x62, - 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x42, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xd2, 0x01, + 0x0a, 0x1a, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x15, + 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6f, 0x72, 0x70, + 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x22, 0x79, 0x0a, 0x1c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x59, 0x0a, 0x1a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x1a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xa7, 0x01, + 0x0a, 0x12, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x42, - 0x79, 0x12, 0x46, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x43, 0x6c, - 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, - 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4f, 0x72, 0x70, 0x68, - 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xd2, 0x01, 0x0a, 0x1a, 0x43, 0x6c, - 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x14, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x72, 0x70, 0x68, - 0x61, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x65, - 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x22, 0x79, - 0x0a, 0x1c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x59, - 0x0a, 0x1a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xa7, 0x01, 0x0a, 0x12, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x31, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, - 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x82, - 0x01, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x07, - 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x4e, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x55, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x66, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x73, 0x65, - 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, - 0x54, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, 0x68, 0x65, - 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, - 0x10, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x33, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x4e, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x55, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3b, 0x0a, + 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, + 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x12, 0x54, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x22, 0xbc, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x40, 0x0a, + 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, + 0xff, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x1b, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x15, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0xda, 0x01, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x48, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0f, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0d, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xb5, 0x02, 0x0a, 0x13, 0x4f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, - 0x47, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, - 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x4f, 0x52, 0x43, 0x48, 0x45, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x5f, 0x4e, 0x45, 0x57, - 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, - 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, - 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, - 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x4f, - 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x22, 0x0a, - 0x1e, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, - 0x07, 0x2a, 0x41, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, - 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, - 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x47, 0x4e, - 0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, - 0x54, 0x45, 0x10, 0x02, 0x32, 0xfc, 0x0a, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, - 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, - 0x0a, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, - 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x14, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, - 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, - 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x19, 0x57, 0x61, 0x69, - 0x74, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x12, 0x2e, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x11, 0x54, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x11, 0x2e, - 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x12, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0f, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0f, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x52, 0x65, - 0x73, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x2e, 0x52, - 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x52, - 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x16, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x41, 0x0a, 0x0e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x12, 0x16, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x12, 0x14, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x09, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x49, 0x74, 0x65, 0x6d, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x11, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x1a, 0x15, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x15, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x15, 0x2e, 0x43, + 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x40, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x02, 0x0a, 0x08, 0x57, 0x6f, 0x72, + 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x48, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3c, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, + 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x0a, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x16, + 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x50, 0x69, 0x6e, 0x67, 0x2a, 0xb5, 0x02, 0x0a, 0x13, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x1c, + 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x22, + 0x0a, 0x1e, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, + 0x4e, 0x55, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x5f, 0x4e, 0x45, 0x57, 0x10, 0x02, 0x12, 0x1f, 0x0a, + 0x1b, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21, + 0x0a, 0x1d, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, + 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, + 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, + 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x43, 0x48, + 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x07, 0x2a, 0x41, 0x0a, 0x19, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x10, 0x02, 0x32, + 0xfc, 0x0a, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x53, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x48, 0x65, 0x6c, + 0x6c, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, + 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x16, 0x2e, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x52, 0x65, 0x77, 0x69, 0x6e, + 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x41, 0x0a, 0x14, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x19, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, + 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x52, 0x61, 0x69, + 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, + 0x2e, 0x52, 0x61, 0x69, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x11, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x11, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x54, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x34, 0x0a, 0x0f, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x0f, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x50, + 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, 0x2e, + 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, + 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x09, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x30, + 0x01, 0x12, 0x40, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x11, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x48, 0x75, 0x62, 0x12, 0x15, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x48, 0x75, 0x62, 0x12, 0x15, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x14, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x32, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x11, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x12, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x2e, 0x43, 0x6c, 0x65, - 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x66, 0x0a, 0x31, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, - 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, - 0x2e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5a, 0x10, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0xaa, 0x02, 0x1e, 0x4d, 0x69, 0x63, - 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, + 0x15, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, + 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x12, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x15, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x12, + 0x15, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x12, + 0x15, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x48, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, + 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, + 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x11, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3e, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x15, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4d, 0x0a, 0x12, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x61, + 0x0a, 0x31, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, + 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x5a, 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, + 0xaa, 0x02, 0x1e, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6707,7 +6849,7 @@ func file_orchestrator_service_proto_rawDescGZIP() []byte { } var file_orchestrator_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_orchestrator_service_proto_msgTypes = make([]protoimpl.MessageInfo, 85) +var file_orchestrator_service_proto_msgTypes = make([]protoimpl.MessageInfo, 87) var file_orchestrator_service_proto_goTypes = []interface{}{ (OrchestrationStatus)(0), // 0: OrchestrationStatus (CreateOrchestrationAction)(0), // 1: CreateOrchestrationAction @@ -6796,223 +6938,232 @@ var file_orchestrator_service_proto_goTypes = []interface{}{ (*GetWorkItemsRequest)(nil), // 84: GetWorkItemsRequest (*WorkItem)(nil), // 85: WorkItem (*CompleteTaskResponse)(nil), // 86: CompleteTaskResponse - (*wrappers.StringValue)(nil), // 87: google.protobuf.StringValue - (*timestamp.Timestamp)(nil), // 88: google.protobuf.Timestamp - (*wrappers.Int32Value)(nil), // 89: google.protobuf.Int32Value - (*duration.Duration)(nil), // 90: google.protobuf.Duration - (*empty.Empty)(nil), // 91: google.protobuf.Empty + (*HealthPing)(nil), // 87: HealthPing + nil, // 88: CreateInstanceRequest.TagsEntry + (*wrapperspb.StringValue)(nil), // 89: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 90: google.protobuf.Timestamp + (*wrapperspb.Int32Value)(nil), // 91: google.protobuf.Int32Value + (*durationpb.Duration)(nil), // 92: google.protobuf.Duration + (*emptypb.Empty)(nil), // 93: google.protobuf.Empty } var file_orchestrator_service_proto_depIdxs = []int32{ - 87, // 0: OrchestrationInstance.executionId:type_name -> google.protobuf.StringValue - 87, // 1: ActivityRequest.version:type_name -> google.protobuf.StringValue - 87, // 2: ActivityRequest.input:type_name -> google.protobuf.StringValue + 89, // 0: OrchestrationInstance.executionId:type_name -> google.protobuf.StringValue + 89, // 1: ActivityRequest.version:type_name -> google.protobuf.StringValue + 89, // 2: ActivityRequest.input:type_name -> google.protobuf.StringValue 2, // 3: ActivityRequest.orchestrationInstance:type_name -> OrchestrationInstance - 87, // 4: ActivityResponse.result:type_name -> google.protobuf.StringValue - 5, // 5: ActivityResponse.failureDetails:type_name -> TaskFailureDetails - 87, // 6: TaskFailureDetails.stackTrace:type_name -> google.protobuf.StringValue - 5, // 7: TaskFailureDetails.innerFailure:type_name -> TaskFailureDetails - 87, // 8: ParentInstanceInfo.name:type_name -> google.protobuf.StringValue - 87, // 9: ParentInstanceInfo.version:type_name -> google.protobuf.StringValue - 2, // 10: ParentInstanceInfo.orchestrationInstance:type_name -> OrchestrationInstance - 87, // 11: TraceContext.traceState:type_name -> google.protobuf.StringValue - 87, // 12: ExecutionStartedEvent.version:type_name -> google.protobuf.StringValue - 87, // 13: ExecutionStartedEvent.input:type_name -> google.protobuf.StringValue - 2, // 14: ExecutionStartedEvent.orchestrationInstance:type_name -> OrchestrationInstance - 6, // 15: ExecutionStartedEvent.parentInstance:type_name -> ParentInstanceInfo - 88, // 16: ExecutionStartedEvent.scheduledStartTimestamp:type_name -> google.protobuf.Timestamp - 7, // 17: ExecutionStartedEvent.parentTraceContext:type_name -> TraceContext - 87, // 18: ExecutionStartedEvent.orchestrationSpanID:type_name -> google.protobuf.StringValue - 0, // 19: ExecutionCompletedEvent.orchestrationStatus:type_name -> OrchestrationStatus - 87, // 20: ExecutionCompletedEvent.result:type_name -> google.protobuf.StringValue - 5, // 21: ExecutionCompletedEvent.failureDetails:type_name -> TaskFailureDetails - 87, // 22: ExecutionTerminatedEvent.input:type_name -> google.protobuf.StringValue - 87, // 23: TaskScheduledEvent.version:type_name -> google.protobuf.StringValue - 87, // 24: TaskScheduledEvent.input:type_name -> google.protobuf.StringValue - 7, // 25: TaskScheduledEvent.parentTraceContext:type_name -> TraceContext - 87, // 26: TaskCompletedEvent.result:type_name -> google.protobuf.StringValue - 5, // 27: TaskFailedEvent.failureDetails:type_name -> TaskFailureDetails - 87, // 28: SubOrchestrationInstanceCreatedEvent.version:type_name -> google.protobuf.StringValue - 87, // 29: SubOrchestrationInstanceCreatedEvent.input:type_name -> google.protobuf.StringValue - 7, // 30: SubOrchestrationInstanceCreatedEvent.parentTraceContext:type_name -> TraceContext - 87, // 31: SubOrchestrationInstanceCompletedEvent.result:type_name -> google.protobuf.StringValue - 5, // 32: SubOrchestrationInstanceFailedEvent.failureDetails:type_name -> TaskFailureDetails - 88, // 33: TimerCreatedEvent.fireAt:type_name -> google.protobuf.Timestamp - 88, // 34: TimerFiredEvent.fireAt:type_name -> google.protobuf.Timestamp - 87, // 35: EventSentEvent.input:type_name -> google.protobuf.StringValue - 87, // 36: EventRaisedEvent.input:type_name -> google.protobuf.StringValue - 87, // 37: GenericEvent.data:type_name -> google.protobuf.StringValue - 45, // 38: HistoryStateEvent.orchestrationState:type_name -> OrchestrationState - 87, // 39: ContinueAsNewEvent.input:type_name -> google.protobuf.StringValue - 87, // 40: ExecutionSuspendedEvent.input:type_name -> google.protobuf.StringValue - 87, // 41: ExecutionResumedEvent.input:type_name -> google.protobuf.StringValue - 88, // 42: HistoryEvent.timestamp:type_name -> google.protobuf.Timestamp - 8, // 43: HistoryEvent.executionStarted:type_name -> ExecutionStartedEvent - 9, // 44: HistoryEvent.executionCompleted:type_name -> ExecutionCompletedEvent - 10, // 45: HistoryEvent.executionTerminated:type_name -> ExecutionTerminatedEvent - 11, // 46: HistoryEvent.taskScheduled:type_name -> TaskScheduledEvent - 12, // 47: HistoryEvent.taskCompleted:type_name -> TaskCompletedEvent - 13, // 48: HistoryEvent.taskFailed:type_name -> TaskFailedEvent - 14, // 49: HistoryEvent.subOrchestrationInstanceCreated:type_name -> SubOrchestrationInstanceCreatedEvent - 15, // 50: HistoryEvent.subOrchestrationInstanceCompleted:type_name -> SubOrchestrationInstanceCompletedEvent - 16, // 51: HistoryEvent.subOrchestrationInstanceFailed:type_name -> SubOrchestrationInstanceFailedEvent - 17, // 52: HistoryEvent.timerCreated:type_name -> TimerCreatedEvent - 18, // 53: HistoryEvent.timerFired:type_name -> TimerFiredEvent - 19, // 54: HistoryEvent.orchestratorStarted:type_name -> OrchestratorStartedEvent - 20, // 55: HistoryEvent.orchestratorCompleted:type_name -> OrchestratorCompletedEvent - 21, // 56: HistoryEvent.eventSent:type_name -> EventSentEvent - 22, // 57: HistoryEvent.eventRaised:type_name -> EventRaisedEvent - 23, // 58: HistoryEvent.genericEvent:type_name -> GenericEvent - 24, // 59: HistoryEvent.historyState:type_name -> HistoryStateEvent - 25, // 60: HistoryEvent.continueAsNew:type_name -> ContinueAsNewEvent - 26, // 61: HistoryEvent.executionSuspended:type_name -> ExecutionSuspendedEvent - 27, // 62: HistoryEvent.executionResumed:type_name -> ExecutionResumedEvent - 87, // 63: ScheduleTaskAction.version:type_name -> google.protobuf.StringValue - 87, // 64: ScheduleTaskAction.input:type_name -> google.protobuf.StringValue - 87, // 65: CreateSubOrchestrationAction.version:type_name -> google.protobuf.StringValue - 87, // 66: CreateSubOrchestrationAction.input:type_name -> google.protobuf.StringValue - 88, // 67: CreateTimerAction.fireAt:type_name -> google.protobuf.Timestamp - 2, // 68: SendEventAction.instance:type_name -> OrchestrationInstance - 87, // 69: SendEventAction.data:type_name -> google.protobuf.StringValue - 0, // 70: CompleteOrchestrationAction.orchestrationStatus:type_name -> OrchestrationStatus - 87, // 71: CompleteOrchestrationAction.result:type_name -> google.protobuf.StringValue - 87, // 72: CompleteOrchestrationAction.details:type_name -> google.protobuf.StringValue - 87, // 73: CompleteOrchestrationAction.newVersion:type_name -> google.protobuf.StringValue - 28, // 74: CompleteOrchestrationAction.carryoverEvents:type_name -> HistoryEvent - 5, // 75: CompleteOrchestrationAction.failureDetails:type_name -> TaskFailureDetails - 87, // 76: TerminateOrchestrationAction.reason:type_name -> google.protobuf.StringValue - 29, // 77: OrchestratorAction.scheduleTask:type_name -> ScheduleTaskAction - 30, // 78: OrchestratorAction.createSubOrchestration:type_name -> CreateSubOrchestrationAction - 31, // 79: OrchestratorAction.createTimer:type_name -> CreateTimerAction - 32, // 80: OrchestratorAction.sendEvent:type_name -> SendEventAction - 33, // 81: OrchestratorAction.completeOrchestration:type_name -> CompleteOrchestrationAction - 34, // 82: OrchestratorAction.terminateOrchestration:type_name -> TerminateOrchestrationAction - 87, // 83: OrchestratorRequest.executionId:type_name -> google.protobuf.StringValue - 28, // 84: OrchestratorRequest.pastEvents:type_name -> HistoryEvent - 28, // 85: OrchestratorRequest.newEvents:type_name -> HistoryEvent - 74, // 86: OrchestratorRequest.entityParameters:type_name -> OrchestratorEntityParameters - 35, // 87: OrchestratorResponse.actions:type_name -> OrchestratorAction - 87, // 88: OrchestratorResponse.customStatus:type_name -> google.protobuf.StringValue - 87, // 89: CreateInstanceRequest.version:type_name -> google.protobuf.StringValue - 87, // 90: CreateInstanceRequest.input:type_name -> google.protobuf.StringValue - 88, // 91: CreateInstanceRequest.scheduledStartTimestamp:type_name -> google.protobuf.Timestamp - 39, // 92: CreateInstanceRequest.orchestrationIdReusePolicy:type_name -> OrchestrationIdReusePolicy - 0, // 93: OrchestrationIdReusePolicy.operationStatus:type_name -> OrchestrationStatus - 1, // 94: OrchestrationIdReusePolicy.action:type_name -> CreateOrchestrationAction - 45, // 95: GetInstanceResponse.orchestrationState:type_name -> OrchestrationState - 87, // 96: RewindInstanceRequest.reason:type_name -> google.protobuf.StringValue - 87, // 97: OrchestrationState.version:type_name -> google.protobuf.StringValue - 0, // 98: OrchestrationState.orchestrationStatus:type_name -> OrchestrationStatus - 88, // 99: OrchestrationState.scheduledStartTimestamp:type_name -> google.protobuf.Timestamp - 88, // 100: OrchestrationState.createdTimestamp:type_name -> google.protobuf.Timestamp - 88, // 101: OrchestrationState.lastUpdatedTimestamp:type_name -> google.protobuf.Timestamp - 87, // 102: OrchestrationState.input:type_name -> google.protobuf.StringValue - 87, // 103: OrchestrationState.output:type_name -> google.protobuf.StringValue - 87, // 104: OrchestrationState.customStatus:type_name -> google.protobuf.StringValue - 5, // 105: OrchestrationState.failureDetails:type_name -> TaskFailureDetails - 87, // 106: RaiseEventRequest.input:type_name -> google.protobuf.StringValue - 87, // 107: TerminateRequest.output:type_name -> google.protobuf.StringValue - 87, // 108: SuspendRequest.reason:type_name -> google.protobuf.StringValue - 87, // 109: ResumeRequest.reason:type_name -> google.protobuf.StringValue - 55, // 110: QueryInstancesRequest.query:type_name -> InstanceQuery - 0, // 111: InstanceQuery.runtimeStatus:type_name -> OrchestrationStatus - 88, // 112: InstanceQuery.createdTimeFrom:type_name -> google.protobuf.Timestamp - 88, // 113: InstanceQuery.createdTimeTo:type_name -> google.protobuf.Timestamp - 87, // 114: InstanceQuery.taskHubNames:type_name -> google.protobuf.StringValue - 87, // 115: InstanceQuery.continuationToken:type_name -> google.protobuf.StringValue - 87, // 116: InstanceQuery.instanceIdPrefix:type_name -> google.protobuf.StringValue - 45, // 117: QueryInstancesResponse.orchestrationState:type_name -> OrchestrationState - 87, // 118: QueryInstancesResponse.continuationToken:type_name -> google.protobuf.StringValue - 58, // 119: PurgeInstancesRequest.purgeInstanceFilter:type_name -> PurgeInstanceFilter - 88, // 120: PurgeInstanceFilter.createdTimeFrom:type_name -> google.protobuf.Timestamp - 88, // 121: PurgeInstanceFilter.createdTimeTo:type_name -> google.protobuf.Timestamp - 0, // 122: PurgeInstanceFilter.runtimeStatus:type_name -> OrchestrationStatus - 87, // 123: SignalEntityRequest.input:type_name -> google.protobuf.StringValue - 88, // 124: SignalEntityRequest.scheduledTime:type_name -> google.protobuf.Timestamp - 71, // 125: GetEntityResponse.entity:type_name -> EntityMetadata - 87, // 126: EntityQuery.instanceIdStartsWith:type_name -> google.protobuf.StringValue - 88, // 127: EntityQuery.lastModifiedFrom:type_name -> google.protobuf.Timestamp - 88, // 128: EntityQuery.lastModifiedTo:type_name -> google.protobuf.Timestamp - 89, // 129: EntityQuery.pageSize:type_name -> google.protobuf.Int32Value - 87, // 130: EntityQuery.continuationToken:type_name -> google.protobuf.StringValue - 68, // 131: QueryEntitiesRequest.query:type_name -> EntityQuery - 71, // 132: QueryEntitiesResponse.entities:type_name -> EntityMetadata - 87, // 133: QueryEntitiesResponse.continuationToken:type_name -> google.protobuf.StringValue - 88, // 134: EntityMetadata.lastModifiedTime:type_name -> google.protobuf.Timestamp - 87, // 135: EntityMetadata.lockedBy:type_name -> google.protobuf.StringValue - 87, // 136: EntityMetadata.serializedState:type_name -> google.protobuf.StringValue - 87, // 137: CleanEntityStorageRequest.continuationToken:type_name -> google.protobuf.StringValue - 87, // 138: CleanEntityStorageResponse.continuationToken:type_name -> google.protobuf.StringValue - 90, // 139: OrchestratorEntityParameters.entityMessageReorderWindow:type_name -> google.protobuf.Duration - 87, // 140: EntityBatchRequest.entityState:type_name -> google.protobuf.StringValue - 77, // 141: EntityBatchRequest.operations:type_name -> OperationRequest - 78, // 142: EntityBatchResult.results:type_name -> OperationResult - 81, // 143: EntityBatchResult.actions:type_name -> OperationAction - 87, // 144: EntityBatchResult.entityState:type_name -> google.protobuf.StringValue - 5, // 145: EntityBatchResult.failureDetails:type_name -> TaskFailureDetails - 87, // 146: OperationRequest.input:type_name -> google.protobuf.StringValue - 79, // 147: OperationResult.success:type_name -> OperationResultSuccess - 80, // 148: OperationResult.failure:type_name -> OperationResultFailure - 87, // 149: OperationResultSuccess.result:type_name -> google.protobuf.StringValue - 5, // 150: OperationResultFailure.failureDetails:type_name -> TaskFailureDetails - 82, // 151: OperationAction.sendSignal:type_name -> SendSignalAction - 83, // 152: OperationAction.startNewOrchestration:type_name -> StartNewOrchestrationAction - 87, // 153: SendSignalAction.input:type_name -> google.protobuf.StringValue - 88, // 154: SendSignalAction.scheduledTime:type_name -> google.protobuf.Timestamp - 87, // 155: StartNewOrchestrationAction.version:type_name -> google.protobuf.StringValue - 87, // 156: StartNewOrchestrationAction.input:type_name -> google.protobuf.StringValue - 88, // 157: StartNewOrchestrationAction.scheduledTime:type_name -> google.protobuf.Timestamp - 36, // 158: WorkItem.orchestratorRequest:type_name -> OrchestratorRequest - 3, // 159: WorkItem.activityRequest:type_name -> ActivityRequest - 75, // 160: WorkItem.entityRequest:type_name -> EntityBatchRequest - 91, // 161: TaskHubSidecarService.Hello:input_type -> google.protobuf.Empty - 38, // 162: TaskHubSidecarService.StartInstance:input_type -> CreateInstanceRequest - 41, // 163: TaskHubSidecarService.GetInstance:input_type -> GetInstanceRequest - 43, // 164: TaskHubSidecarService.RewindInstance:input_type -> RewindInstanceRequest - 41, // 165: TaskHubSidecarService.WaitForInstanceStart:input_type -> GetInstanceRequest - 41, // 166: TaskHubSidecarService.WaitForInstanceCompletion:input_type -> GetInstanceRequest - 46, // 167: TaskHubSidecarService.RaiseEvent:input_type -> RaiseEventRequest - 48, // 168: TaskHubSidecarService.TerminateInstance:input_type -> TerminateRequest - 50, // 169: TaskHubSidecarService.SuspendInstance:input_type -> SuspendRequest - 52, // 170: TaskHubSidecarService.ResumeInstance:input_type -> ResumeRequest - 54, // 171: TaskHubSidecarService.QueryInstances:input_type -> QueryInstancesRequest - 57, // 172: TaskHubSidecarService.PurgeInstances:input_type -> PurgeInstancesRequest - 84, // 173: TaskHubSidecarService.GetWorkItems:input_type -> GetWorkItemsRequest - 4, // 174: TaskHubSidecarService.CompleteActivityTask:input_type -> ActivityResponse - 37, // 175: TaskHubSidecarService.CompleteOrchestratorTask:input_type -> OrchestratorResponse - 76, // 176: TaskHubSidecarService.CompleteEntityTask:input_type -> EntityBatchResult - 60, // 177: TaskHubSidecarService.CreateTaskHub:input_type -> CreateTaskHubRequest - 62, // 178: TaskHubSidecarService.DeleteTaskHub:input_type -> DeleteTaskHubRequest - 64, // 179: TaskHubSidecarService.SignalEntity:input_type -> SignalEntityRequest - 66, // 180: TaskHubSidecarService.GetEntity:input_type -> GetEntityRequest - 69, // 181: TaskHubSidecarService.QueryEntities:input_type -> QueryEntitiesRequest - 72, // 182: TaskHubSidecarService.CleanEntityStorage:input_type -> CleanEntityStorageRequest - 91, // 183: TaskHubSidecarService.Hello:output_type -> google.protobuf.Empty - 40, // 184: TaskHubSidecarService.StartInstance:output_type -> CreateInstanceResponse - 42, // 185: TaskHubSidecarService.GetInstance:output_type -> GetInstanceResponse - 44, // 186: TaskHubSidecarService.RewindInstance:output_type -> RewindInstanceResponse - 42, // 187: TaskHubSidecarService.WaitForInstanceStart:output_type -> GetInstanceResponse - 42, // 188: TaskHubSidecarService.WaitForInstanceCompletion:output_type -> GetInstanceResponse - 47, // 189: TaskHubSidecarService.RaiseEvent:output_type -> RaiseEventResponse - 49, // 190: TaskHubSidecarService.TerminateInstance:output_type -> TerminateResponse - 51, // 191: TaskHubSidecarService.SuspendInstance:output_type -> SuspendResponse - 53, // 192: TaskHubSidecarService.ResumeInstance:output_type -> ResumeResponse - 56, // 193: TaskHubSidecarService.QueryInstances:output_type -> QueryInstancesResponse - 59, // 194: TaskHubSidecarService.PurgeInstances:output_type -> PurgeInstancesResponse - 85, // 195: TaskHubSidecarService.GetWorkItems:output_type -> WorkItem - 86, // 196: TaskHubSidecarService.CompleteActivityTask:output_type -> CompleteTaskResponse - 86, // 197: TaskHubSidecarService.CompleteOrchestratorTask:output_type -> CompleteTaskResponse - 86, // 198: TaskHubSidecarService.CompleteEntityTask:output_type -> CompleteTaskResponse - 61, // 199: TaskHubSidecarService.CreateTaskHub:output_type -> CreateTaskHubResponse - 63, // 200: TaskHubSidecarService.DeleteTaskHub:output_type -> DeleteTaskHubResponse - 65, // 201: TaskHubSidecarService.SignalEntity:output_type -> SignalEntityResponse - 67, // 202: TaskHubSidecarService.GetEntity:output_type -> GetEntityResponse - 70, // 203: TaskHubSidecarService.QueryEntities:output_type -> QueryEntitiesResponse - 73, // 204: TaskHubSidecarService.CleanEntityStorage:output_type -> CleanEntityStorageResponse - 183, // [183:205] is the sub-list for method output_type - 161, // [161:183] is the sub-list for method input_type - 161, // [161:161] is the sub-list for extension type_name - 161, // [161:161] is the sub-list for extension extendee - 0, // [0:161] is the sub-list for field type_name + 7, // 4: ActivityRequest.parentTraceContext:type_name -> TraceContext + 89, // 5: ActivityResponse.result:type_name -> google.protobuf.StringValue + 5, // 6: ActivityResponse.failureDetails:type_name -> TaskFailureDetails + 89, // 7: TaskFailureDetails.stackTrace:type_name -> google.protobuf.StringValue + 5, // 8: TaskFailureDetails.innerFailure:type_name -> TaskFailureDetails + 89, // 9: ParentInstanceInfo.name:type_name -> google.protobuf.StringValue + 89, // 10: ParentInstanceInfo.version:type_name -> google.protobuf.StringValue + 2, // 11: ParentInstanceInfo.orchestrationInstance:type_name -> OrchestrationInstance + 89, // 12: TraceContext.traceState:type_name -> google.protobuf.StringValue + 89, // 13: ExecutionStartedEvent.version:type_name -> google.protobuf.StringValue + 89, // 14: ExecutionStartedEvent.input:type_name -> google.protobuf.StringValue + 2, // 15: ExecutionStartedEvent.orchestrationInstance:type_name -> OrchestrationInstance + 6, // 16: ExecutionStartedEvent.parentInstance:type_name -> ParentInstanceInfo + 90, // 17: ExecutionStartedEvent.scheduledStartTimestamp:type_name -> google.protobuf.Timestamp + 7, // 18: ExecutionStartedEvent.parentTraceContext:type_name -> TraceContext + 89, // 19: ExecutionStartedEvent.orchestrationSpanID:type_name -> google.protobuf.StringValue + 0, // 20: ExecutionCompletedEvent.orchestrationStatus:type_name -> OrchestrationStatus + 89, // 21: ExecutionCompletedEvent.result:type_name -> google.protobuf.StringValue + 5, // 22: ExecutionCompletedEvent.failureDetails:type_name -> TaskFailureDetails + 89, // 23: ExecutionTerminatedEvent.input:type_name -> google.protobuf.StringValue + 89, // 24: TaskScheduledEvent.version:type_name -> google.protobuf.StringValue + 89, // 25: TaskScheduledEvent.input:type_name -> google.protobuf.StringValue + 7, // 26: TaskScheduledEvent.parentTraceContext:type_name -> TraceContext + 89, // 27: TaskCompletedEvent.result:type_name -> google.protobuf.StringValue + 5, // 28: TaskFailedEvent.failureDetails:type_name -> TaskFailureDetails + 89, // 29: SubOrchestrationInstanceCreatedEvent.version:type_name -> google.protobuf.StringValue + 89, // 30: SubOrchestrationInstanceCreatedEvent.input:type_name -> google.protobuf.StringValue + 7, // 31: SubOrchestrationInstanceCreatedEvent.parentTraceContext:type_name -> TraceContext + 89, // 32: SubOrchestrationInstanceCompletedEvent.result:type_name -> google.protobuf.StringValue + 5, // 33: SubOrchestrationInstanceFailedEvent.failureDetails:type_name -> TaskFailureDetails + 90, // 34: TimerCreatedEvent.fireAt:type_name -> google.protobuf.Timestamp + 90, // 35: TimerFiredEvent.fireAt:type_name -> google.protobuf.Timestamp + 89, // 36: EventSentEvent.input:type_name -> google.protobuf.StringValue + 89, // 37: EventRaisedEvent.input:type_name -> google.protobuf.StringValue + 89, // 38: GenericEvent.data:type_name -> google.protobuf.StringValue + 45, // 39: HistoryStateEvent.orchestrationState:type_name -> OrchestrationState + 89, // 40: ContinueAsNewEvent.input:type_name -> google.protobuf.StringValue + 89, // 41: ExecutionSuspendedEvent.input:type_name -> google.protobuf.StringValue + 89, // 42: ExecutionResumedEvent.input:type_name -> google.protobuf.StringValue + 90, // 43: HistoryEvent.timestamp:type_name -> google.protobuf.Timestamp + 8, // 44: HistoryEvent.executionStarted:type_name -> ExecutionStartedEvent + 9, // 45: HistoryEvent.executionCompleted:type_name -> ExecutionCompletedEvent + 10, // 46: HistoryEvent.executionTerminated:type_name -> ExecutionTerminatedEvent + 11, // 47: HistoryEvent.taskScheduled:type_name -> TaskScheduledEvent + 12, // 48: HistoryEvent.taskCompleted:type_name -> TaskCompletedEvent + 13, // 49: HistoryEvent.taskFailed:type_name -> TaskFailedEvent + 14, // 50: HistoryEvent.subOrchestrationInstanceCreated:type_name -> SubOrchestrationInstanceCreatedEvent + 15, // 51: HistoryEvent.subOrchestrationInstanceCompleted:type_name -> SubOrchestrationInstanceCompletedEvent + 16, // 52: HistoryEvent.subOrchestrationInstanceFailed:type_name -> SubOrchestrationInstanceFailedEvent + 17, // 53: HistoryEvent.timerCreated:type_name -> TimerCreatedEvent + 18, // 54: HistoryEvent.timerFired:type_name -> TimerFiredEvent + 19, // 55: HistoryEvent.orchestratorStarted:type_name -> OrchestratorStartedEvent + 20, // 56: HistoryEvent.orchestratorCompleted:type_name -> OrchestratorCompletedEvent + 21, // 57: HistoryEvent.eventSent:type_name -> EventSentEvent + 22, // 58: HistoryEvent.eventRaised:type_name -> EventRaisedEvent + 23, // 59: HistoryEvent.genericEvent:type_name -> GenericEvent + 24, // 60: HistoryEvent.historyState:type_name -> HistoryStateEvent + 25, // 61: HistoryEvent.continueAsNew:type_name -> ContinueAsNewEvent + 26, // 62: HistoryEvent.executionSuspended:type_name -> ExecutionSuspendedEvent + 27, // 63: HistoryEvent.executionResumed:type_name -> ExecutionResumedEvent + 89, // 64: ScheduleTaskAction.version:type_name -> google.protobuf.StringValue + 89, // 65: ScheduleTaskAction.input:type_name -> google.protobuf.StringValue + 89, // 66: CreateSubOrchestrationAction.version:type_name -> google.protobuf.StringValue + 89, // 67: CreateSubOrchestrationAction.input:type_name -> google.protobuf.StringValue + 90, // 68: CreateTimerAction.fireAt:type_name -> google.protobuf.Timestamp + 2, // 69: SendEventAction.instance:type_name -> OrchestrationInstance + 89, // 70: SendEventAction.data:type_name -> google.protobuf.StringValue + 0, // 71: CompleteOrchestrationAction.orchestrationStatus:type_name -> OrchestrationStatus + 89, // 72: CompleteOrchestrationAction.result:type_name -> google.protobuf.StringValue + 89, // 73: CompleteOrchestrationAction.details:type_name -> google.protobuf.StringValue + 89, // 74: CompleteOrchestrationAction.newVersion:type_name -> google.protobuf.StringValue + 28, // 75: CompleteOrchestrationAction.carryoverEvents:type_name -> HistoryEvent + 5, // 76: CompleteOrchestrationAction.failureDetails:type_name -> TaskFailureDetails + 89, // 77: TerminateOrchestrationAction.reason:type_name -> google.protobuf.StringValue + 29, // 78: OrchestratorAction.scheduleTask:type_name -> ScheduleTaskAction + 30, // 79: OrchestratorAction.createSubOrchestration:type_name -> CreateSubOrchestrationAction + 31, // 80: OrchestratorAction.createTimer:type_name -> CreateTimerAction + 32, // 81: OrchestratorAction.sendEvent:type_name -> SendEventAction + 33, // 82: OrchestratorAction.completeOrchestration:type_name -> CompleteOrchestrationAction + 34, // 83: OrchestratorAction.terminateOrchestration:type_name -> TerminateOrchestrationAction + 89, // 84: OrchestratorRequest.executionId:type_name -> google.protobuf.StringValue + 28, // 85: OrchestratorRequest.pastEvents:type_name -> HistoryEvent + 28, // 86: OrchestratorRequest.newEvents:type_name -> HistoryEvent + 74, // 87: OrchestratorRequest.entityParameters:type_name -> OrchestratorEntityParameters + 35, // 88: OrchestratorResponse.actions:type_name -> OrchestratorAction + 89, // 89: OrchestratorResponse.customStatus:type_name -> google.protobuf.StringValue + 89, // 90: CreateInstanceRequest.version:type_name -> google.protobuf.StringValue + 89, // 91: CreateInstanceRequest.input:type_name -> google.protobuf.StringValue + 90, // 92: CreateInstanceRequest.scheduledStartTimestamp:type_name -> google.protobuf.Timestamp + 39, // 93: CreateInstanceRequest.orchestrationIdReusePolicy:type_name -> OrchestrationIdReusePolicy + 89, // 94: CreateInstanceRequest.executionId:type_name -> google.protobuf.StringValue + 88, // 95: CreateInstanceRequest.tags:type_name -> CreateInstanceRequest.TagsEntry + 0, // 96: OrchestrationIdReusePolicy.operationStatus:type_name -> OrchestrationStatus + 1, // 97: OrchestrationIdReusePolicy.action:type_name -> CreateOrchestrationAction + 45, // 98: GetInstanceResponse.orchestrationState:type_name -> OrchestrationState + 89, // 99: RewindInstanceRequest.reason:type_name -> google.protobuf.StringValue + 89, // 100: OrchestrationState.version:type_name -> google.protobuf.StringValue + 0, // 101: OrchestrationState.orchestrationStatus:type_name -> OrchestrationStatus + 90, // 102: OrchestrationState.scheduledStartTimestamp:type_name -> google.protobuf.Timestamp + 90, // 103: OrchestrationState.createdTimestamp:type_name -> google.protobuf.Timestamp + 90, // 104: OrchestrationState.lastUpdatedTimestamp:type_name -> google.protobuf.Timestamp + 89, // 105: OrchestrationState.input:type_name -> google.protobuf.StringValue + 89, // 106: OrchestrationState.output:type_name -> google.protobuf.StringValue + 89, // 107: OrchestrationState.customStatus:type_name -> google.protobuf.StringValue + 5, // 108: OrchestrationState.failureDetails:type_name -> TaskFailureDetails + 89, // 109: OrchestrationState.executionId:type_name -> google.protobuf.StringValue + 90, // 110: OrchestrationState.completedTimestamp:type_name -> google.protobuf.Timestamp + 89, // 111: OrchestrationState.parentInstanceId:type_name -> google.protobuf.StringValue + 89, // 112: RaiseEventRequest.input:type_name -> google.protobuf.StringValue + 89, // 113: TerminateRequest.output:type_name -> google.protobuf.StringValue + 89, // 114: SuspendRequest.reason:type_name -> google.protobuf.StringValue + 89, // 115: ResumeRequest.reason:type_name -> google.protobuf.StringValue + 55, // 116: QueryInstancesRequest.query:type_name -> InstanceQuery + 0, // 117: InstanceQuery.runtimeStatus:type_name -> OrchestrationStatus + 90, // 118: InstanceQuery.createdTimeFrom:type_name -> google.protobuf.Timestamp + 90, // 119: InstanceQuery.createdTimeTo:type_name -> google.protobuf.Timestamp + 89, // 120: InstanceQuery.taskHubNames:type_name -> google.protobuf.StringValue + 89, // 121: InstanceQuery.continuationToken:type_name -> google.protobuf.StringValue + 89, // 122: InstanceQuery.instanceIdPrefix:type_name -> google.protobuf.StringValue + 45, // 123: QueryInstancesResponse.orchestrationState:type_name -> OrchestrationState + 89, // 124: QueryInstancesResponse.continuationToken:type_name -> google.protobuf.StringValue + 58, // 125: PurgeInstancesRequest.purgeInstanceFilter:type_name -> PurgeInstanceFilter + 90, // 126: PurgeInstanceFilter.createdTimeFrom:type_name -> google.protobuf.Timestamp + 90, // 127: PurgeInstanceFilter.createdTimeTo:type_name -> google.protobuf.Timestamp + 0, // 128: PurgeInstanceFilter.runtimeStatus:type_name -> OrchestrationStatus + 89, // 129: SignalEntityRequest.input:type_name -> google.protobuf.StringValue + 90, // 130: SignalEntityRequest.scheduledTime:type_name -> google.protobuf.Timestamp + 71, // 131: GetEntityResponse.entity:type_name -> EntityMetadata + 89, // 132: EntityQuery.instanceIdStartsWith:type_name -> google.protobuf.StringValue + 90, // 133: EntityQuery.lastModifiedFrom:type_name -> google.protobuf.Timestamp + 90, // 134: EntityQuery.lastModifiedTo:type_name -> google.protobuf.Timestamp + 91, // 135: EntityQuery.pageSize:type_name -> google.protobuf.Int32Value + 89, // 136: EntityQuery.continuationToken:type_name -> google.protobuf.StringValue + 68, // 137: QueryEntitiesRequest.query:type_name -> EntityQuery + 71, // 138: QueryEntitiesResponse.entities:type_name -> EntityMetadata + 89, // 139: QueryEntitiesResponse.continuationToken:type_name -> google.protobuf.StringValue + 90, // 140: EntityMetadata.lastModifiedTime:type_name -> google.protobuf.Timestamp + 89, // 141: EntityMetadata.lockedBy:type_name -> google.protobuf.StringValue + 89, // 142: EntityMetadata.serializedState:type_name -> google.protobuf.StringValue + 89, // 143: CleanEntityStorageRequest.continuationToken:type_name -> google.protobuf.StringValue + 89, // 144: CleanEntityStorageResponse.continuationToken:type_name -> google.protobuf.StringValue + 92, // 145: OrchestratorEntityParameters.entityMessageReorderWindow:type_name -> google.protobuf.Duration + 89, // 146: EntityBatchRequest.entityState:type_name -> google.protobuf.StringValue + 77, // 147: EntityBatchRequest.operations:type_name -> OperationRequest + 78, // 148: EntityBatchResult.results:type_name -> OperationResult + 81, // 149: EntityBatchResult.actions:type_name -> OperationAction + 89, // 150: EntityBatchResult.entityState:type_name -> google.protobuf.StringValue + 5, // 151: EntityBatchResult.failureDetails:type_name -> TaskFailureDetails + 89, // 152: OperationRequest.input:type_name -> google.protobuf.StringValue + 79, // 153: OperationResult.success:type_name -> OperationResultSuccess + 80, // 154: OperationResult.failure:type_name -> OperationResultFailure + 89, // 155: OperationResultSuccess.result:type_name -> google.protobuf.StringValue + 5, // 156: OperationResultFailure.failureDetails:type_name -> TaskFailureDetails + 82, // 157: OperationAction.sendSignal:type_name -> SendSignalAction + 83, // 158: OperationAction.startNewOrchestration:type_name -> StartNewOrchestrationAction + 89, // 159: SendSignalAction.input:type_name -> google.protobuf.StringValue + 90, // 160: SendSignalAction.scheduledTime:type_name -> google.protobuf.Timestamp + 89, // 161: StartNewOrchestrationAction.version:type_name -> google.protobuf.StringValue + 89, // 162: StartNewOrchestrationAction.input:type_name -> google.protobuf.StringValue + 90, // 163: StartNewOrchestrationAction.scheduledTime:type_name -> google.protobuf.Timestamp + 36, // 164: WorkItem.orchestratorRequest:type_name -> OrchestratorRequest + 3, // 165: WorkItem.activityRequest:type_name -> ActivityRequest + 75, // 166: WorkItem.entityRequest:type_name -> EntityBatchRequest + 87, // 167: WorkItem.healthPing:type_name -> HealthPing + 93, // 168: TaskHubSidecarService.Hello:input_type -> google.protobuf.Empty + 38, // 169: TaskHubSidecarService.StartInstance:input_type -> CreateInstanceRequest + 41, // 170: TaskHubSidecarService.GetInstance:input_type -> GetInstanceRequest + 43, // 171: TaskHubSidecarService.RewindInstance:input_type -> RewindInstanceRequest + 41, // 172: TaskHubSidecarService.WaitForInstanceStart:input_type -> GetInstanceRequest + 41, // 173: TaskHubSidecarService.WaitForInstanceCompletion:input_type -> GetInstanceRequest + 46, // 174: TaskHubSidecarService.RaiseEvent:input_type -> RaiseEventRequest + 48, // 175: TaskHubSidecarService.TerminateInstance:input_type -> TerminateRequest + 50, // 176: TaskHubSidecarService.SuspendInstance:input_type -> SuspendRequest + 52, // 177: TaskHubSidecarService.ResumeInstance:input_type -> ResumeRequest + 54, // 178: TaskHubSidecarService.QueryInstances:input_type -> QueryInstancesRequest + 57, // 179: TaskHubSidecarService.PurgeInstances:input_type -> PurgeInstancesRequest + 84, // 180: TaskHubSidecarService.GetWorkItems:input_type -> GetWorkItemsRequest + 4, // 181: TaskHubSidecarService.CompleteActivityTask:input_type -> ActivityResponse + 37, // 182: TaskHubSidecarService.CompleteOrchestratorTask:input_type -> OrchestratorResponse + 76, // 183: TaskHubSidecarService.CompleteEntityTask:input_type -> EntityBatchResult + 60, // 184: TaskHubSidecarService.CreateTaskHub:input_type -> CreateTaskHubRequest + 62, // 185: TaskHubSidecarService.DeleteTaskHub:input_type -> DeleteTaskHubRequest + 64, // 186: TaskHubSidecarService.SignalEntity:input_type -> SignalEntityRequest + 66, // 187: TaskHubSidecarService.GetEntity:input_type -> GetEntityRequest + 69, // 188: TaskHubSidecarService.QueryEntities:input_type -> QueryEntitiesRequest + 72, // 189: TaskHubSidecarService.CleanEntityStorage:input_type -> CleanEntityStorageRequest + 93, // 190: TaskHubSidecarService.Hello:output_type -> google.protobuf.Empty + 40, // 191: TaskHubSidecarService.StartInstance:output_type -> CreateInstanceResponse + 42, // 192: TaskHubSidecarService.GetInstance:output_type -> GetInstanceResponse + 44, // 193: TaskHubSidecarService.RewindInstance:output_type -> RewindInstanceResponse + 42, // 194: TaskHubSidecarService.WaitForInstanceStart:output_type -> GetInstanceResponse + 42, // 195: TaskHubSidecarService.WaitForInstanceCompletion:output_type -> GetInstanceResponse + 47, // 196: TaskHubSidecarService.RaiseEvent:output_type -> RaiseEventResponse + 49, // 197: TaskHubSidecarService.TerminateInstance:output_type -> TerminateResponse + 51, // 198: TaskHubSidecarService.SuspendInstance:output_type -> SuspendResponse + 53, // 199: TaskHubSidecarService.ResumeInstance:output_type -> ResumeResponse + 56, // 200: TaskHubSidecarService.QueryInstances:output_type -> QueryInstancesResponse + 59, // 201: TaskHubSidecarService.PurgeInstances:output_type -> PurgeInstancesResponse + 85, // 202: TaskHubSidecarService.GetWorkItems:output_type -> WorkItem + 86, // 203: TaskHubSidecarService.CompleteActivityTask:output_type -> CompleteTaskResponse + 86, // 204: TaskHubSidecarService.CompleteOrchestratorTask:output_type -> CompleteTaskResponse + 86, // 205: TaskHubSidecarService.CompleteEntityTask:output_type -> CompleteTaskResponse + 61, // 206: TaskHubSidecarService.CreateTaskHub:output_type -> CreateTaskHubResponse + 63, // 207: TaskHubSidecarService.DeleteTaskHub:output_type -> DeleteTaskHubResponse + 65, // 208: TaskHubSidecarService.SignalEntity:output_type -> SignalEntityResponse + 67, // 209: TaskHubSidecarService.GetEntity:output_type -> GetEntityResponse + 70, // 210: TaskHubSidecarService.QueryEntities:output_type -> QueryEntitiesResponse + 73, // 211: TaskHubSidecarService.CleanEntityStorage:output_type -> CleanEntityStorageResponse + 190, // [190:212] is the sub-list for method output_type + 168, // [168:190] is the sub-list for method input_type + 168, // [168:168] is the sub-list for extension type_name + 168, // [168:168] is the sub-list for extension extendee + 0, // [0:168] is the sub-list for field type_name } func init() { file_orchestrator_service_proto_init() } @@ -8041,6 +8192,18 @@ func file_orchestrator_service_proto_init() { return nil } } + file_orchestrator_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HealthPing); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_orchestrator_service_proto_msgTypes[26].OneofWrappers = []interface{}{ (*HistoryEvent_ExecutionStarted)(nil), @@ -8088,6 +8251,7 @@ func file_orchestrator_service_proto_init() { (*WorkItem_OrchestratorRequest)(nil), (*WorkItem_ActivityRequest)(nil), (*WorkItem_EntityRequest)(nil), + (*WorkItem_HealthPing)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -8095,7 +8259,7 @@ func file_orchestrator_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_orchestrator_service_proto_rawDesc, NumEnums: 2, - NumMessages: 85, + NumMessages: 87, NumExtensions: 0, NumServices: 1, }, diff --git a/api/protos/orchestrator_service_grpc.pb.go b/api/protos/orchestrator_service_grpc.pb.go index 2d4ecea..30d8bcd 100644 --- a/api/protos/orchestrator_service_grpc.pb.go +++ b/api/protos/orchestrator_service_grpc.pb.go @@ -4,17 +4,17 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v3.12.4 +// - protoc v4.25.4 // source: orchestrator_service.proto package protos import ( context "context" - empty "github.com/golang/protobuf/ptypes/empty" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) // This is a compile-time assertion to ensure that this generated file @@ -52,7 +52,7 @@ const ( // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type TaskHubSidecarServiceClient interface { // Sends a hello request to the sidecar service. - Hello(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) + Hello(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) // Starts a new orchestration instance. StartInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*CreateInstanceResponse, error) // Gets the status of an existing orchestration instance. @@ -99,8 +99,8 @@ func NewTaskHubSidecarServiceClient(cc grpc.ClientConnInterface) TaskHubSidecarS return &taskHubSidecarServiceClient{cc} } -func (c *taskHubSidecarServiceClient) Hello(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) { - out := new(empty.Empty) +func (c *taskHubSidecarServiceClient) Hello(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) err := c.cc.Invoke(ctx, TaskHubSidecarService_Hello_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -325,7 +325,7 @@ func (c *taskHubSidecarServiceClient) CleanEntityStorage(ctx context.Context, in // for forward compatibility type TaskHubSidecarServiceServer interface { // Sends a hello request to the sidecar service. - Hello(context.Context, *empty.Empty) (*empty.Empty, error) + Hello(context.Context, *emptypb.Empty) (*emptypb.Empty, error) // Starts a new orchestration instance. StartInstance(context.Context, *CreateInstanceRequest) (*CreateInstanceResponse, error) // Gets the status of an existing orchestration instance. @@ -369,7 +369,7 @@ type TaskHubSidecarServiceServer interface { type UnimplementedTaskHubSidecarServiceServer struct { } -func (UnimplementedTaskHubSidecarServiceServer) Hello(context.Context, *empty.Empty) (*empty.Empty, error) { +func (UnimplementedTaskHubSidecarServiceServer) Hello(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method Hello not implemented") } func (UnimplementedTaskHubSidecarServiceServer) StartInstance(context.Context, *CreateInstanceRequest) (*CreateInstanceResponse, error) { @@ -449,7 +449,7 @@ func RegisterTaskHubSidecarServiceServer(s grpc.ServiceRegistrar, srv TaskHubSid } func _TaskHubSidecarService_Hello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(empty.Empty) + in := new(emptypb.Empty) if err := dec(in); err != nil { return nil, err } @@ -461,7 +461,7 @@ func _TaskHubSidecarService_Hello_Handler(srv interface{}, ctx context.Context, FullMethod: TaskHubSidecarService_Hello_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TaskHubSidecarServiceServer).Hello(ctx, req.(*empty.Empty)) + return srv.(TaskHubSidecarServiceServer).Hello(ctx, req.(*emptypb.Empty)) } return interceptor(ctx, in, info, handler) } diff --git a/backend/backend.go b/backend/backend.go index f6313a9..64779ed 100644 --- a/backend/backend.go +++ b/backend/backend.go @@ -20,8 +20,12 @@ var ( ) type ( - HistoryEvent = protos.HistoryEvent - TaskFailureDetails = protos.TaskFailureDetails + HistoryEvent = protos.HistoryEvent + TaskFailureDetails = protos.TaskFailureDetails + WorkflowState = protos.WorkflowState + CreateWorkflowInstanceRequest = protos.CreateWorkflowInstanceRequest + ActivityRequest = protos.ActivityRequest + OrchestrationMetadata = protos.OrchestrationMetadata ) type OrchestrationIdReusePolicyOptions func(*protos.OrchestrationIdReusePolicy) error @@ -71,7 +75,7 @@ type Backend interface { // GetOrchestrationMetadata gets the metadata associated with the given orchestration instance ID. // // Returns [api.ErrInstanceNotFound] if the orchestration instance doesn't exist. - GetOrchestrationMetadata(context.Context, api.InstanceID) (*api.OrchestrationMetadata, error) + GetOrchestrationMetadata(context.Context, api.InstanceID) (*OrchestrationMetadata, error) // CompleteOrchestrationWorkItem completes a work item by saving the updated runtime state to durable storage. // diff --git a/backend/client.go b/backend/client.go index 9370f90..024df72 100644 --- a/backend/client.go +++ b/backend/client.go @@ -19,9 +19,9 @@ import ( type TaskHubClient interface { ScheduleNewOrchestration(ctx context.Context, orchestrator interface{}, opts ...api.NewOrchestrationOptions) (api.InstanceID, error) - FetchOrchestrationMetadata(ctx context.Context, id api.InstanceID) (*api.OrchestrationMetadata, error) - WaitForOrchestrationStart(ctx context.Context, id api.InstanceID) (*api.OrchestrationMetadata, error) - WaitForOrchestrationCompletion(ctx context.Context, id api.InstanceID) (*api.OrchestrationMetadata, error) + FetchOrchestrationMetadata(ctx context.Context, id api.InstanceID) (*OrchestrationMetadata, error) + WaitForOrchestrationStart(ctx context.Context, id api.InstanceID) (*OrchestrationMetadata, error) + WaitForOrchestrationCompletion(ctx context.Context, id api.InstanceID) (*OrchestrationMetadata, error) TerminateOrchestration(ctx context.Context, id api.InstanceID, opts ...api.TerminateOptions) error RaiseEvent(ctx context.Context, id api.InstanceID, eventName string, opts ...api.RaiseEventOptions) error SuspendOrchestration(ctx context.Context, id api.InstanceID, reason string) error @@ -87,7 +87,7 @@ func (c *backendClient) ScheduleNewOrchestration(ctx context.Context, orchestrat // FetchOrchestrationMetadata fetches metadata for the specified orchestration from the configured task hub. // // ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func (c *backendClient) FetchOrchestrationMetadata(ctx context.Context, id api.InstanceID) (*api.OrchestrationMetadata, error) { +func (c *backendClient) FetchOrchestrationMetadata(ctx context.Context, id api.InstanceID) (*OrchestrationMetadata, error) { metadata, err := c.be.GetOrchestrationMetadata(ctx, id) if err != nil { return nil, fmt.Errorf("failed to fetch orchestration metadata: %w", err) @@ -99,8 +99,8 @@ func (c *backendClient) FetchOrchestrationMetadata(ctx context.Context, id api.I // metadata about the started instance. // // ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func (c *backendClient) WaitForOrchestrationStart(ctx context.Context, id api.InstanceID) (*api.OrchestrationMetadata, error) { - return c.waitForOrchestrationCondition(ctx, id, func(metadata *api.OrchestrationMetadata) bool { +func (c *backendClient) WaitForOrchestrationStart(ctx context.Context, id api.InstanceID) (*OrchestrationMetadata, error) { + return c.waitForOrchestrationCondition(ctx, id, func(metadata *OrchestrationMetadata) bool { return metadata.RuntimeStatus != protos.OrchestrationStatus_ORCHESTRATION_STATUS_PENDING }) } @@ -109,13 +109,11 @@ func (c *backendClient) WaitForOrchestrationStart(ctx context.Context, id api.In // metadata about the completed instance. // // ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func (c *backendClient) WaitForOrchestrationCompletion(ctx context.Context, id api.InstanceID) (*api.OrchestrationMetadata, error) { - return c.waitForOrchestrationCondition(ctx, id, func(metadata *api.OrchestrationMetadata) bool { - return metadata.IsComplete() - }) +func (c *backendClient) WaitForOrchestrationCompletion(ctx context.Context, id api.InstanceID) (*OrchestrationMetadata, error) { + return c.waitForOrchestrationCondition(ctx, id, api.OrchestrationMetadataIsComplete) } -func (c *backendClient) waitForOrchestrationCondition(ctx context.Context, id api.InstanceID, condition func(metadata *api.OrchestrationMetadata) bool) (*api.OrchestrationMetadata, error) { +func (c *backendClient) waitForOrchestrationCondition(ctx context.Context, id api.InstanceID, condition func(metadata *OrchestrationMetadata) bool) (*OrchestrationMetadata, error) { b := backoff.ExponentialBackOff{ InitialInterval: 100 * time.Millisecond, MaxInterval: 10 * time.Second, diff --git a/backend/executor.go b/backend/executor.go index c0209c5..1a9522d 100644 --- a/backend/executor.go +++ b/backend/executor.go @@ -542,19 +542,17 @@ func (g *grpcExecutor) ResumeInstance(ctx context.Context, req *protos.ResumeReq // WaitForInstanceCompletion implements protos.TaskHubSidecarServiceServer func (g *grpcExecutor) WaitForInstanceCompletion(ctx context.Context, req *protos.GetInstanceRequest) (*protos.GetInstanceResponse, error) { - return g.waitForInstance(ctx, req, func(m *api.OrchestrationMetadata) bool { - return m.IsComplete() - }) + return g.waitForInstance(ctx, req, api.OrchestrationMetadataIsComplete) } // WaitForInstanceStart implements protos.TaskHubSidecarServiceServer func (g *grpcExecutor) WaitForInstanceStart(ctx context.Context, req *protos.GetInstanceRequest) (*protos.GetInstanceResponse, error) { - return g.waitForInstance(ctx, req, func(m *api.OrchestrationMetadata) bool { + return g.waitForInstance(ctx, req, func(m *OrchestrationMetadata) bool { return m.RuntimeStatus != protos.OrchestrationStatus_ORCHESTRATION_STATUS_PENDING }) } -func (g *grpcExecutor) waitForInstance(ctx context.Context, req *protos.GetInstanceRequest, condition func(*api.OrchestrationMetadata) bool) (*protos.GetInstanceResponse, error) { +func (g *grpcExecutor) waitForInstance(ctx context.Context, req *protos.GetInstanceRequest, condition func(*OrchestrationMetadata) bool) (*protos.GetInstanceResponse, error) { iid := api.InstanceID(req.InstanceId) var b backoff.BackOff = &backoff.ExponentialBackOff{ @@ -599,19 +597,19 @@ loop: func (grpcExecutor) mustEmbedUnimplementedTaskHubSidecarServiceServer() { } -func createGetInstanceResponse(req *protos.GetInstanceRequest, metadata *api.OrchestrationMetadata) *protos.GetInstanceResponse { +func createGetInstanceResponse(req *protos.GetInstanceRequest, metadata *OrchestrationMetadata) *protos.GetInstanceResponse { state := &protos.OrchestrationState{ InstanceId: req.InstanceId, Name: metadata.Name, OrchestrationStatus: metadata.RuntimeStatus, - CreatedTimestamp: timestamppb.New(metadata.CreatedAt), - LastUpdatedTimestamp: timestamppb.New(metadata.LastUpdatedAt), + CreatedTimestamp: metadata.CreatedAt, + LastUpdatedTimestamp: metadata.LastUpdatedAt, } if req.GetInputsAndOutputs { - state.Input = wrapperspb.String(metadata.SerializedInput) - state.CustomStatus = wrapperspb.String(metadata.SerializedCustomStatus) - state.Output = wrapperspb.String(metadata.SerializedOutput) + state.Input = metadata.Input + state.CustomStatus = metadata.CustomStatus + state.Output = metadata.Output state.FailureDetails = metadata.FailureDetails } diff --git a/backend/sqlite/sqlite.go b/backend/sqlite/sqlite.go index 8fa5d53..1113152 100644 --- a/backend/sqlite/sqlite.go +++ b/backend/sqlite/sqlite.go @@ -16,6 +16,8 @@ import ( "github.com/dapr/durabletask-go/backend" "github.com/google/uuid" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" _ "modernc.org/sqlite" ) @@ -634,7 +636,7 @@ func (be *sqliteBackend) AddNewOrchestrationEvent(ctx context.Context, iid api.I } // GetOrchestrationMetadata implements backend.Backend -func (be *sqliteBackend) GetOrchestrationMetadata(ctx context.Context, iid api.InstanceID) (*api.OrchestrationMetadata, error) { +func (be *sqliteBackend) GetOrchestrationMetadata(ctx context.Context, iid api.InstanceID) (*backend.OrchestrationMetadata, error) { if err := be.ensureDB(); err != nil { return nil, err } @@ -671,16 +673,17 @@ func (be *sqliteBackend) GetOrchestrationMetadata(ctx context.Context, iid api.I return nil, fmt.Errorf("failed to scan the Instances table result: %w", err) } - if input == nil { - input = &emptyString + var inputw *wrapperspb.StringValue + var outputw *wrapperspb.StringValue + var customStatusw *wrapperspb.StringValue + if input != nil { + inputw = wrapperspb.String(*input) } - - if output == nil { - output = &emptyString + if output != nil { + outputw = wrapperspb.String(*output) } - - if customStatus == nil { - customStatus = &emptyString + if customStatus != nil { + customStatusw = wrapperspb.String(*customStatus) } if len(failureDetailsPayload) > 0 { @@ -690,18 +693,17 @@ func (be *sqliteBackend) GetOrchestrationMetadata(ctx context.Context, iid api.I } } - metadata := api.NewOrchestrationMetadata( - iid, - *name, - helpers.FromRuntimeStatusString(*runtimeStatus), - *createdAt, - *lastUpdatedAt, - *input, - *output, - *customStatus, - failureDetails, - ) - return metadata, nil + return &backend.OrchestrationMetadata{ + InstanceId: string(iid), + Name: *name, + RuntimeStatus: helpers.FromRuntimeStatusString(*runtimeStatus), + CreatedAt: timestamppb.New(*createdAt), + LastUpdatedAt: timestamppb.New(*lastUpdatedAt), + Input: inputw, + Output: outputw, + CustomStatus: customStatusw, + FailureDetails: failureDetails, + }, nil } // GetOrchestrationRuntimeState implements backend.Backend diff --git a/client/client_grpc.go b/client/client_grpc.go index 1bbacb4..e3ba749 100644 --- a/client/client_grpc.go +++ b/client/client_grpc.go @@ -53,7 +53,7 @@ func (c *TaskHubGrpcClient) ScheduleNewOrchestration(ctx context.Context, orches // FetchOrchestrationMetadata fetches metadata for the specified orchestration from the configured task hub. // // api.ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func (c *TaskHubGrpcClient) FetchOrchestrationMetadata(ctx context.Context, id api.InstanceID, opts ...api.FetchOrchestrationMetadataOptions) (*api.OrchestrationMetadata, error) { +func (c *TaskHubGrpcClient) FetchOrchestrationMetadata(ctx context.Context, id api.InstanceID, opts ...api.FetchOrchestrationMetadataOptions) (*backend.OrchestrationMetadata, error) { req := makeGetInstanceRequest(id, opts) resp, err := c.client.GetInstance(ctx, req) if err != nil { @@ -65,11 +65,11 @@ func (c *TaskHubGrpcClient) FetchOrchestrationMetadata(ctx context.Context, id a return makeOrchestrationMetadata(resp) } -// WaitForOrchestrationStart waits for an orchestration to start running and returns an [api.OrchestrationMetadata] object that contains +// WaitForOrchestrationStart waits for an orchestration to start running and returns an [backend.OrchestrationMetadata] object that contains // metadata about the started instance. // // api.ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func (c *TaskHubGrpcClient) WaitForOrchestrationStart(ctx context.Context, id api.InstanceID, opts ...api.FetchOrchestrationMetadataOptions) (*api.OrchestrationMetadata, error) { +func (c *TaskHubGrpcClient) WaitForOrchestrationStart(ctx context.Context, id api.InstanceID, opts ...api.FetchOrchestrationMetadataOptions) (*backend.OrchestrationMetadata, error) { var resp *protos.GetInstanceResponse var err error err = backoff.Retry(func() error { @@ -90,11 +90,11 @@ func (c *TaskHubGrpcClient) WaitForOrchestrationStart(ctx context.Context, id ap return makeOrchestrationMetadata(resp) } -// WaitForOrchestrationCompletion waits for an orchestration to complete and returns an [api.OrchestrationMetadata] object that contains +// WaitForOrchestrationCompletion waits for an orchestration to complete and returns an [backend.OrchestrationMetadata] object that contains // metadata about the completed instance. // // api.ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func (c *TaskHubGrpcClient) WaitForOrchestrationCompletion(ctx context.Context, id api.InstanceID, opts ...api.FetchOrchestrationMetadataOptions) (*api.OrchestrationMetadata, error) { +func (c *TaskHubGrpcClient) WaitForOrchestrationCompletion(ctx context.Context, id api.InstanceID, opts ...api.FetchOrchestrationMetadataOptions) (*backend.OrchestrationMetadata, error) { var resp *protos.GetInstanceResponse var err error err = backoff.Retry(func() error { @@ -221,28 +221,24 @@ func makeGetInstanceRequest(id api.InstanceID, opts []api.FetchOrchestrationMeta return req } -// makeOrchestrationMetadata validates and converts protos.GetInstanceResponse to api.OrchestrationMetadata +// makeOrchestrationMetadata validates and converts protos.GetInstanceResponse to backend.OrchestrationMetadata // api.ErrInstanceNotFound is returned when the specified orchestration doesn't exist. -func makeOrchestrationMetadata(resp *protos.GetInstanceResponse) (*api.OrchestrationMetadata, error) { +func makeOrchestrationMetadata(resp *protos.GetInstanceResponse) (*backend.OrchestrationMetadata, error) { if !resp.Exists { return nil, api.ErrInstanceNotFound } if resp.OrchestrationState == nil { return nil, fmt.Errorf("orchestration state is nil") } - metadata := &api.OrchestrationMetadata{ - InstanceID: api.InstanceID(resp.OrchestrationState.InstanceId), - Name: resp.OrchestrationState.Name, - RuntimeStatus: resp.OrchestrationState.OrchestrationStatus, - SerializedInput: resp.OrchestrationState.Input.GetValue(), - SerializedCustomStatus: resp.OrchestrationState.CustomStatus.GetValue(), - SerializedOutput: resp.OrchestrationState.Output.GetValue(), - } - if resp.OrchestrationState.CreatedTimestamp != nil { - metadata.CreatedAt = resp.OrchestrationState.CreatedTimestamp.AsTime() - } - if resp.OrchestrationState.LastUpdatedTimestamp != nil { - metadata.LastUpdatedAt = resp.OrchestrationState.LastUpdatedTimestamp.AsTime() + metadata := &backend.OrchestrationMetadata{ + InstanceId: resp.OrchestrationState.InstanceId, + Name: resp.OrchestrationState.Name, + RuntimeStatus: resp.OrchestrationState.OrchestrationStatus, + Input: resp.OrchestrationState.Input, + CustomStatus: resp.OrchestrationState.CustomStatus, + Output: resp.OrchestrationState.Output, + CreatedAt: resp.OrchestrationState.CreatedTimestamp, + LastUpdatedAt: resp.OrchestrationState.LastUpdatedTimestamp, } return metadata, nil } diff --git a/samples/externalevents/externalevents.go b/samples/externalevents/externalevents.go index df7987d..4baa9a8 100644 --- a/samples/externalevents/externalevents.go +++ b/samples/externalevents/externalevents.go @@ -53,7 +53,7 @@ func main() { if metadata.FailureDetails != nil { log.Println("orchestration failed:", metadata.FailureDetails.ErrorMessage) } else { - log.Println("orchestration completed:", metadata.SerializedOutput) + log.Println("orchestration completed:", metadata.Output) } } diff --git a/task/activity.go b/task/activity.go index 4740dcb..321b320 100644 --- a/task/activity.go +++ b/task/activity.go @@ -71,9 +71,9 @@ func WithActivityInput(input any) callActivityOption { } // WithRawActivityInput configures a raw input for an activity invocation. -func WithRawActivityInput(input string) callActivityOption { +func WithRawActivityInput(input *wrapperspb.StringValue) callActivityOption { return func(opt *callActivityOptions) error { - opt.rawInput = wrapperspb.String(input) + opt.rawInput = input return nil } } diff --git a/task/orchestrator.go b/task/orchestrator.go index 1239b1d..f98c515 100644 --- a/task/orchestrator.go +++ b/task/orchestrator.go @@ -84,9 +84,9 @@ func WithSubOrchestratorInput(input any) subOrchestratorOption { // WithRawSubOrchestratorInput is a functional option type for the CallSubOrchestrator // orchestrator method that takes a raw input value. -func WithRawSubOrchestratorInput(input string) subOrchestratorOption { +func WithRawSubOrchestratorInput(input *wrapperspb.StringValue) subOrchestratorOption { return func(opts *callSubOrchestratorOptions) error { - opts.rawInput = wrapperspb.String(input) + opts.rawInput = input return nil } } diff --git a/tests/backend_test.go b/tests/backend_test.go index 562005b..b3483af 100644 --- a/tests/backend_test.go +++ b/tests/backend_test.go @@ -151,16 +151,16 @@ func Test_CompleteOrchestration(t *testing.T) { }} } - validateMetadata := func(metadata *api.OrchestrationMetadata) { - assert.True(t, metadata.IsComplete()) - assert.False(t, metadata.IsRunning()) + validateMetadata := func(metadata *backend.OrchestrationMetadata) { + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) + assert.False(t, api.OrchestrationMetadataIsRunning(metadata)) if expectedStatus == protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED { assert.Equal(t, "MyError", metadata.FailureDetails.ErrorType) assert.Equal(t, "Kah-BOOOM!!", metadata.FailureDetails.ErrorMessage) assert.Equal(t, expectedStackTrace, metadata.FailureDetails.StackTrace.GetValue()) } else { - assert.Equal(t, expectedResult, metadata.SerializedOutput) + assert.Equal(t, expectedResult, metadata.Output.Value) } } @@ -201,8 +201,8 @@ func Test_ScheduleActivityTasks(t *testing.T) { } // Make sure the metadata reflects that the orchestration is running - validateMetadata := func(metadata *api.OrchestrationMetadata) { - assert.True(t, metadata.IsRunning()) + validateMetadata := func(metadata *backend.OrchestrationMetadata) { + assert.True(t, api.OrchestrationMetadataIsRunning(metadata)) } // Execute the test, which calls the above callbacks @@ -263,8 +263,8 @@ func Test_ScheduleTimerTasks(t *testing.T) { } // Make sure the metadata reflects that the orchestration is running - validateMetadata := func(metadata *api.OrchestrationMetadata) { - assert.True(t, metadata.IsRunning()) + validateMetadata := func(metadata *backend.OrchestrationMetadata) { + assert.True(t, api.OrchestrationMetadataIsRunning(metadata)) } // Execute the test, which calls the above callbacks @@ -322,8 +322,8 @@ func Test_AbandonActivityWorkItem(t *testing.T) { } // Make sure the metadata reflects that the orchestration is running - validateMetadata := func(metadata *api.OrchestrationMetadata) { - assert.True(t, metadata.IsRunning()) + validateMetadata := func(metadata *backend.OrchestrationMetadata) { + assert.True(t, api.OrchestrationMetadataIsRunning(metadata)) } // Execute the test, which calls the above callbacks @@ -397,10 +397,10 @@ func Test_PurgeOrchestrationState(t *testing.T) { // Make sure the orchestration actually completed and get the instance ID var instanceID api.InstanceID - validateMetadata := func(metadata *api.OrchestrationMetadata) { - instanceID = metadata.InstanceID - assert.True(t, metadata.IsComplete()) - assert.False(t, metadata.IsRunning()) + validateMetadata := func(metadata *backend.OrchestrationMetadata) { + instanceID = api.InstanceID(metadata.InstanceId) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) + assert.False(t, api.OrchestrationMetadataIsRunning(metadata)) } // Execute the test, which calls the above callbacks @@ -447,7 +447,7 @@ func workItemProcessingTestLogic( t *testing.T, be backend.Backend, getOrchestratorActions func() []*protos.OrchestratorAction, - validateMetadata func(metadata *api.OrchestrationMetadata), + validateMetadata func(metadata *backend.OrchestrationMetadata), ) { expectedID := "myinstance" @@ -480,8 +480,8 @@ func workItemProcessingTestLogic( // Validate orchestration metadata if metadata, ok := getOrchestrationMetadata(t, be, state.InstanceID()); ok { assert.Equal(t, defaultName, metadata.Name) - assert.Equal(t, defaultInput, metadata.SerializedInput) - assert.Equal(t, createdTime, metadata.CreatedAt) + assert.Equal(t, defaultInput, metadata.Input.Value) + assert.Equal(t, createdTime, metadata.CreatedAt.AsTime()) assert.Equal(t, state.RuntimeStatus(), metadata.RuntimeStatus) validateMetadata(metadata) @@ -530,10 +530,10 @@ func getOrchestrationRuntimeState(t assert.TestingT, be backend.Backend, wi *bac return nil, false } -func getOrchestrationMetadata(t assert.TestingT, be backend.Backend, iid api.InstanceID) (*api.OrchestrationMetadata, bool) { +func getOrchestrationMetadata(t assert.TestingT, be backend.Backend, iid api.InstanceID) (*backend.OrchestrationMetadata, bool) { metadata, err := be.GetOrchestrationMetadata(ctx, iid) if assert.NoError(t, err) && assert.NotNil(t, metadata) { - return metadata, assert.Equal(t, iid, metadata.InstanceID) + return metadata, assert.Equal(t, iid, api.InstanceID(metadata.InstanceId)) } return nil, false diff --git a/tests/grpc/grpc_test.go b/tests/grpc/grpc_test.go index ebcf0d2..0b596c4 100644 --- a/tests/grpc/grpc_test.go +++ b/tests/grpc/grpc_test.go @@ -141,8 +141,8 @@ func Test_Grpc_WaitForInstanceStart_ConnectionResume(t *testing.T) { defer cancelTimeout() metadata, err := grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id, api.WithFetchPayloads(true)) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) - assert.Equal(t, "42", metadata.SerializedOutput) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) + assert.Equal(t, "42", metadata.Output.Value) time.Sleep(1 * time.Second) } @@ -175,9 +175,9 @@ func Test_Grpc_HelloOrchestration(t *testing.T) { defer cancelTimeout() metadata, err := grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id, api.WithFetchPayloads(true)) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) - assert.Equal(t, `"Hello, 世界!"`, metadata.SerializedOutput) - assert.Equal(t, "hello-test", metadata.SerializedCustomStatus) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) + assert.Equal(t, `"Hello, 世界!"`, metadata.Output.Value) + assert.Equal(t, "hello-test", metadata.CustomStatus.Value) time.Sleep(1 * time.Second) } @@ -218,10 +218,10 @@ func Test_Grpc_SuspendResume(t *testing.T) { _, err = grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id) require.ErrorIs(t, err, timeoutCtx.Err()) - var metadata *api.OrchestrationMetadata + var metadata *backend.OrchestrationMetadata metadata, err = grpcClient.FetchOrchestrationMetadata(ctx, id) require.NoError(t, err) - require.True(t, metadata.IsRunning()) + assert.True(t, api.OrchestrationMetadataIsRunning(metadata)) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_SUSPENDED, metadata.RuntimeStatus) // Resume the orchestration and wait for it to complete @@ -284,7 +284,7 @@ func Test_Grpc_Terminate_Recursive(t *testing.T) { metadata, err := grpcClient.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED, metadata.RuntimeStatus) - require.Equal(t, fmt.Sprintf("\"%s\"", output), metadata.SerializedOutput) + require.Equal(t, fmt.Sprintf("\"%s\"", output), metadata.Output.Value) // Wait longer to ensure that none of the sub-orchestrations continued to the next step // of executing the activity function. @@ -335,11 +335,11 @@ func Test_Grpc_ReuseInstanceIDIgnore(t *testing.T) { defer cancelTimeout() metadata, err := grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id, api.WithFetchPayloads(true)) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) // the first orchestration should complete as the second one is ignored - assert.Equal(t, `"Hello, 世界!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, 世界!"`, metadata.Output.Value) // assert the orchestration created timestamp - assert.True(t, pivotTime.After(metadata.CreatedAt)) + assert.True(t, pivotTime.After(metadata.CreatedAt.AsTime())) } func Test_Grpc_ReuseInstanceIDTerminate(t *testing.T) { @@ -383,11 +383,11 @@ func Test_Grpc_ReuseInstanceIDTerminate(t *testing.T) { defer cancelTimeout() metadata, err := grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id, api.WithFetchPayloads(true)) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) // the second orchestration should complete. - assert.Equal(t, `"Hello, World!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, World!"`, metadata.Output.Value) // assert the orchestration created timestamp - assert.True(t, pivotTime.Before(metadata.CreatedAt)) + assert.True(t, pivotTime.Before(metadata.CreatedAt.AsTime())) } func Test_Grpc_ReuseInstanceIDError(t *testing.T) { @@ -448,10 +448,10 @@ func Test_Grpc_ActivityRetries(t *testing.T) { defer cancelTimeout() metadata, err := grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id, api.WithFetchPayloads(true)) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED, metadata.RuntimeStatus) // With 3 max attempts there will be two retries with 10 millis delay before each - require.GreaterOrEqual(t, metadata.LastUpdatedAt, metadata.CreatedAt.Add(2*10*time.Millisecond)) + require.GreaterOrEqual(t, metadata.LastUpdatedAt.AsTime(), metadata.CreatedAt.AsTime().Add(2*10*time.Millisecond)) } func Test_Grpc_SubOrchestratorRetries(t *testing.T) { @@ -481,8 +481,8 @@ func Test_Grpc_SubOrchestratorRetries(t *testing.T) { defer cancelTimeout() metadata, err := grpcClient.WaitForOrchestrationCompletion(timeoutCtx, id, api.WithFetchPayloads(true)) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED, metadata.RuntimeStatus) // With 3 max attempts there will be two retries with 10 millis delay before each - require.GreaterOrEqual(t, metadata.LastUpdatedAt, metadata.CreatedAt.Add(2*10*time.Millisecond)) + require.GreaterOrEqual(t, metadata.LastUpdatedAt.AsTime(), metadata.CreatedAt.AsTime().Add(2*10*time.Millisecond)) } diff --git a/tests/metadata_test.go b/tests/metadata_test.go deleted file mode 100644 index 6f669e3..0000000 --- a/tests/metadata_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package tests - -import ( - "encoding/json" - "testing" - "time" - - "github.com/dapr/durabletask-go/api" - "github.com/dapr/durabletask-go/api/protos" - "github.com/stretchr/testify/assert" - "google.golang.org/protobuf/types/known/wrapperspb" -) - -func Test_OrchestrationMetadata_Serialization(t *testing.T) { - metadata := api.NewOrchestrationMetadata( - api.InstanceID("abc123"), - "MyOrchestration", - protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED, - time.Now().UTC(), - time.Now().UTC().Add(1*time.Minute), - "\"World\"", - "\"Hello, World!\"", - "", - &protos.TaskFailureDetails{ - ErrorType: "MyError", - ErrorMessage: "Kah-BOOOOM!!!", - StackTrace: wrapperspb.String("stack trace"), - InnerFailure: &protos.TaskFailureDetails{ - ErrorType: "InnerError", - ErrorMessage: "Fuse lit", - }, - }) - - if bytes, err := json.Marshal(metadata); assert.NoError(t, err) { - metadata2 := new(api.OrchestrationMetadata) - if err := json.Unmarshal(bytes, metadata2); assert.NoError(t, err) { - assert.Equal(t, metadata.InstanceID, metadata2.InstanceID) - assert.Equal(t, metadata.Name, metadata2.Name) - assert.Equal(t, metadata.RuntimeStatus, metadata2.RuntimeStatus) - assert.Equal(t, metadata.CreatedAt, metadata2.CreatedAt) - assert.Equal(t, metadata.LastUpdatedAt, metadata2.LastUpdatedAt) - assert.Equal(t, metadata.SerializedInput, metadata2.SerializedInput) - assert.Equal(t, metadata.SerializedOutput, metadata2.SerializedOutput) - assert.Equal(t, metadata.SerializedCustomStatus, metadata2.SerializedCustomStatus) - if assert.NotNil(t, metadata2.FailureDetails) { - assert.Equal(t, metadata.FailureDetails.ErrorType, metadata2.FailureDetails.ErrorType) - assert.Equal(t, metadata.FailureDetails.ErrorMessage, metadata2.FailureDetails.ErrorMessage) - assert.Equal(t, metadata.FailureDetails.StackTrace.GetValue(), metadata2.FailureDetails.StackTrace.GetValue()) - if assert.NotNil(t, metadata2.FailureDetails.InnerFailure) { - assert.Equal(t, metadata.FailureDetails.InnerFailure.ErrorType, metadata2.FailureDetails.InnerFailure.ErrorType) - assert.Equal(t, metadata.FailureDetails.InnerFailure.ErrorMessage, metadata2.FailureDetails.InnerFailure.ErrorMessage) - assert.Nil(t, metadata2.FailureDetails.InnerFailure.StackTrace) - assert.Nil(t, metadata2.FailureDetails.InnerFailure.InnerFailure) - } - } - } - } -} diff --git a/tests/mocks/Backend.go b/tests/mocks/Backend.go index d3b779b..90cde7a 100644 --- a/tests/mocks/Backend.go +++ b/tests/mocks/Backend.go @@ -475,23 +475,23 @@ func (_c *Backend_GetActivityWorkItem_Call) RunAndReturn(run func(context.Contex } // GetOrchestrationMetadata provides a mock function with given fields: _a0, _a1 -func (_m *Backend) GetOrchestrationMetadata(_a0 context.Context, _a1 api.InstanceID) (*api.OrchestrationMetadata, error) { +func (_m *Backend) GetOrchestrationMetadata(_a0 context.Context, _a1 api.InstanceID) (*backend.OrchestrationMetadata, error) { ret := _m.Called(_a0, _a1) if len(ret) == 0 { panic("no return value specified for GetOrchestrationMetadata") } - var r0 *api.OrchestrationMetadata + var r0 *backend.OrchestrationMetadata var r1 error - if rf, ok := ret.Get(0).(func(context.Context, api.InstanceID) (*api.OrchestrationMetadata, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, api.InstanceID) (*backend.OrchestrationMetadata, error)); ok { return rf(_a0, _a1) } - if rf, ok := ret.Get(0).(func(context.Context, api.InstanceID) *api.OrchestrationMetadata); ok { + if rf, ok := ret.Get(0).(func(context.Context, api.InstanceID) *backend.OrchestrationMetadata); ok { r0 = rf(_a0, _a1) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.OrchestrationMetadata) + r0 = ret.Get(0).(*backend.OrchestrationMetadata) } } @@ -523,12 +523,12 @@ func (_c *Backend_GetOrchestrationMetadata_Call) Run(run func(_a0 context.Contex return _c } -func (_c *Backend_GetOrchestrationMetadata_Call) Return(_a0 *api.OrchestrationMetadata, _a1 error) *Backend_GetOrchestrationMetadata_Call { +func (_c *Backend_GetOrchestrationMetadata_Call) Return(_a0 *backend.OrchestrationMetadata, _a1 error) *Backend_GetOrchestrationMetadata_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *Backend_GetOrchestrationMetadata_Call) RunAndReturn(run func(context.Context, api.InstanceID) (*api.OrchestrationMetadata, error)) *Backend_GetOrchestrationMetadata_Call { +func (_c *Backend_GetOrchestrationMetadata_Call) RunAndReturn(run func(context.Context, api.InstanceID) (*backend.OrchestrationMetadata, error)) *Backend_GetOrchestrationMetadata_Call { _c.Call.Return(run) return _c } diff --git a/tests/orchestrations_test.go b/tests/orchestrations_test.go index 7d6cf2d..3cf5337 100644 --- a/tests/orchestrations_test.go +++ b/tests/orchestrations_test.go @@ -67,7 +67,7 @@ func Test_SingleTimer(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.GreaterOrEqual(t, metadata.LastUpdatedAt, metadata.CreatedAt) + assert.GreaterOrEqual(t, metadata.LastUpdatedAt.AsTime(), metadata.CreatedAt.AsTime()) } } @@ -109,7 +109,7 @@ func Test_ConcurrentTimers(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.GreaterOrEqual(t, metadata.LastUpdatedAt, metadata.CreatedAt) + assert.GreaterOrEqual(t, metadata.LastUpdatedAt.AsTime(), metadata.CreatedAt.AsTime()) } } @@ -148,7 +148,7 @@ func Test_IsReplaying(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `[true,true,false]`, metadata.SerializedOutput) + assert.Equal(t, `[true,true,false]`, metadata.Output.Value) } } @@ -194,7 +194,7 @@ func Test_SingleActivity(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `"Hello, 世界!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, 世界!"`, metadata.Output.Value) } } @@ -239,7 +239,7 @@ func Test_ActivityChain(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `10`, metadata.SerializedOutput) + assert.Equal(t, `10`, metadata.Output.Value) } } @@ -283,7 +283,7 @@ func Test_ActivityRetries(t *testing.T) { if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED, metadata.RuntimeStatus) // With 3 max attempts there will be two retries with 10 millis delay before each - require.GreaterOrEqual(t, metadata.LastUpdatedAt, metadata.CreatedAt.Add(2*10*time.Millisecond)) + require.GreaterOrEqual(t, metadata.LastUpdatedAt.AsTime(), metadata.CreatedAt.AsTime().Add(2*10*time.Millisecond)) } } @@ -340,10 +340,10 @@ func Test_ActivityFanOut(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `["9","8","7","6","5","4","3","2","1","0"]`, metadata.SerializedOutput) + assert.Equal(t, `["9","8","7","6","5","4","3","2","1","0"]`, metadata.Output.Value) // Because all the activities run in parallel, they should complete very quickly - assert.Less(t, metadata.LastUpdatedAt.Sub(metadata.CreatedAt), 3*time.Second) + assert.Less(t, metadata.LastUpdatedAt.AsTime().Sub(metadata.CreatedAt.AsTime()), 3*time.Second) } } @@ -387,7 +387,7 @@ func Test_SingleSubOrchestrator_Completed(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `"Hello, world!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, world!"`, metadata.Output.Value) spans := exporter.GetSpans().Snapshots() assertSpanSequence(t, spans, @@ -504,7 +504,7 @@ func Test_ContinueAsNew(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) if assert.NoError(t, err) { assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `10`, metadata.SerializedOutput) + assert.Equal(t, `10`, metadata.Output.Value) } } @@ -560,7 +560,7 @@ func Test_ContinueAsNew_Events(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `10`, metadata.SerializedOutput) + assert.Equal(t, `10`, metadata.Output.Value) } func Test_ExternalEventContention(t *testing.T) { @@ -609,7 +609,7 @@ func Test_ExternalEventContention(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `42`, metadata.SerializedOutput) + assert.Equal(t, `42`, metadata.Output.Value) } func Test_ExternalEventOrchestration(t *testing.T) { @@ -647,7 +647,7 @@ func Test_ExternalEventOrchestration(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(timeoutCtx, id) require.NoError(t, err) - require.True(t, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) } @@ -706,7 +706,7 @@ func Test_ExternalEventTimeout(t *testing.T) { // Validate the exported OTel traces spans := exporter.GetSpans().Snapshots() if raiseEvent { - assert.True(t, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) assertSpanSequence(t, spans, @@ -716,7 +716,7 @@ func Test_ExternalEventTimeout(t *testing.T) { )), ) } else { - require.True(t, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED, metadata.RuntimeStatus) if assert.NotNil(t, metadata.FailureDetails) { // The exact message is not important - just make sure it's something clear @@ -782,10 +782,10 @@ func Test_SuspendResumeOrchestration(t *testing.T) { _, err = client.WaitForOrchestrationCompletion(timeoutCtx, id) require.ErrorIs(t, err, timeoutCtx.Err()) - var metadata *api.OrchestrationMetadata + var metadata *backend.OrchestrationMetadata metadata, err = client.FetchOrchestrationMetadata(ctx, id) if assert.NoError(t, err) { - assert.True(t, metadata.IsRunning()) + assert.True(t, api.OrchestrationMetadataIsRunning(metadata)) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_SUSPENDED, metadata.RuntimeStatus) } @@ -842,9 +842,9 @@ func Test_TerminateOrchestration(t *testing.T) { // Wait for the orchestration to complete metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) - require.True(t, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED, metadata.RuntimeStatus) - require.Equal(t, `"You got terminated!"`, metadata.SerializedOutput) + require.Equal(t, `"You got terminated!"`, metadata.Output.Value) // Validate the exported OTel traces spans := exporter.GetSpans().Snapshots() @@ -922,7 +922,7 @@ func Test_TerminateOrchestration_Recursive(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED, metadata.RuntimeStatus) - require.Equal(t, fmt.Sprintf("\"%s\"", output), metadata.SerializedOutput) + require.Equal(t, fmt.Sprintf("\"%s\"", output), metadata.Output.Value) // Wait for all L2 suborchestrations to complete orchIDs := []string{} @@ -1003,7 +1003,7 @@ func Test_TerminateOrchestration_Recursive_TerminateCompletedSubOrchestration(t metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) require.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED, metadata.RuntimeStatus) - require.Equal(t, fmt.Sprintf("\"%s\"", output), metadata.SerializedOutput) + require.Equal(t, fmt.Sprintf("\"%s\"", output), metadata.Output.Value) // Verify that the L1 and L2 orchestrations have completed with the appropriate status L1_OrchestrationStatus := protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED @@ -1018,13 +1018,13 @@ func Test_TerminateOrchestration_Recursive_TerminateCompletedSubOrchestration(t metadata, err = client.WaitForOrchestrationCompletion(ctx, id+"_L1") require.NoError(t, err) require.Equal(t, L1_OrchestrationStatus, metadata.RuntimeStatus) - require.Equal(t, L1_Output, metadata.SerializedOutput) + require.Equal(t, L1_Output, metadata.Output.Value) // In recursive case, L2 is terminated because it was still running when the root orchestration was terminated metadata, err = client.WaitForOrchestrationCompletion(ctx, id+"_L1_L2") require.NoError(t, err) require.Equal(t, L2_OrchestrationStatus, metadata.RuntimeStatus) - require.Equal(t, L2_Output, metadata.SerializedOutput) + require.Equal(t, L2_Output, metadata.Output.Value) }) } } @@ -1178,7 +1178,7 @@ func Test_RecreateCompletedOrchestration(t *testing.T) { metadata, err := client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `"Hello, 世界!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, 世界!"`, metadata.Output.Value) // Run the second orchestration with the same ID as the first var newID api.InstanceID @@ -1188,7 +1188,7 @@ func Test_RecreateCompletedOrchestration(t *testing.T) { metadata, err = client.WaitForOrchestrationCompletion(ctx, id) require.NoError(t, err) assert.Equal(t, protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED, metadata.RuntimeStatus) - assert.Equal(t, `"Hello, World!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, World!"`, metadata.Output.Value) // Validate the exported OTel traces spans := exporter.GetSpans().Snapshots() @@ -1246,11 +1246,11 @@ func Test_SingleActivity_ReuseInstanceIDIgnore(t *testing.T) { defer cancelTimeout() metadata, err := client.WaitForOrchestrationCompletion(timeoutCtx, id) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) // the first orchestration should complete as the second one is ignored - assert.Equal(t, `"Hello, 世界!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, 世界!"`, metadata.Output.Value) // assert the orchestration created timestamp - assert.True(t, pivotTime.After(metadata.CreatedAt)) + assert.True(t, pivotTime.After(metadata.CreatedAt.AsTime())) } func Test_SingleActivity_ReuseInstanceIDTerminate(t *testing.T) { @@ -1297,11 +1297,11 @@ func Test_SingleActivity_ReuseInstanceIDTerminate(t *testing.T) { defer cancelTimeout() metadata, err := client.WaitForOrchestrationCompletion(timeoutCtx, id) require.NoError(t, err) - assert.Equal(t, true, metadata.IsComplete()) + assert.True(t, api.OrchestrationMetadataIsComplete(metadata)) // the second orchestration should complete. - assert.Equal(t, `"Hello, World!"`, metadata.SerializedOutput) + assert.Equal(t, `"Hello, World!"`, metadata.Output.Value) // assert the orchestration created timestamp - assert.True(t, pivotTime.Before(metadata.CreatedAt)) + assert.True(t, pivotTime.Before(metadata.CreatedAt.AsTime())) } func Test_SingleActivity_ReuseInstanceIDError(t *testing.T) {