diff --git a/README.md b/README.md index 179631aa0..bf1760174 100644 --- a/README.md +++ b/README.md @@ -370,6 +370,13 @@ The throughput_stress scenario can generate Nexus load if the scenario is starte go run ./cmd/omes run-scenario-with-worker --scenario throughput_stress --language go --option nexus-endpoint=my-nexus-endpoint --run-id default-run-id ``` +#### Standalone activities + +The throughput_stress scenario can generate standalone-activity load (activities started outside +any workflow context via `StartActivityExecution`) with `--option include-standalone-activity=true`. +This requires server support for standalone activities (dynamic config `activity.enableStandalone`). +Implemented for the Go, Python, TypeScript, .NET, Java, and Ruby workers. + ### Fuzzer The fuzzer scenario makes use of the kitchen sink workflow (see below) to exercise a wide diff --git a/clioptions/worker.go b/clioptions/worker.go index 5a4a82155..1ce848764 100644 --- a/clioptions/worker.go +++ b/clioptions/worker.go @@ -51,6 +51,6 @@ func (m *WorkerOptions) FlagSetWithPrefix(prefix string) *pflag.FlagSet { m.fs.IntVar(&m.ActivityPollerAutoscaleMax, prefix+"activity-poller-autoscale-max", 0, "Max for activity poller autoscaling (overrides max-concurrent-activity-pollers") m.fs.IntVar(&m.WorkflowPollerAutoscaleMax, prefix+"workflow-poller-autoscale-max", 0, "Max for workflow poller autoscaling (overrides max-concurrent-workflow-pollers") m.fs.Float64Var(&m.WorkerActivitiesPerSecond, prefix+"activities-per-second", 0, "Per-worker activity rate limit") - m.fs.BoolVar(&m.ErrOnUnimplemented, prefix+"err-on-unimplemented", false, "Fail on unimplemented actions (currently this only applies to concurrent client actions)") + m.fs.BoolVar(&m.ErrOnUnimplemented, prefix+"err-on-unimplemented", false, "Fail on unimplemented actions (e.g. concurrent client actions and standalone Nexus/activity operations) instead of skipping them") return m.fs } diff --git a/internal/workertest/env.go b/internal/workertest/env.go index d674ac37f..d2f029c83 100644 --- a/internal/workertest/env.go +++ b/internal/workertest/env.go @@ -68,6 +68,22 @@ type TestResult struct { ObservedLogs *observer.ObservedLogs } +// runExecutorConfig holds per-run options for RunExecutorTest. +type runExecutorConfig struct { + errOnUnimplemented bool +} + +type RunExecutorOption func(*runExecutorConfig) + +// WithErrOnUnimplemented starts the worker with --err-on-unimplemented, so that +// actions a worker does not support fail loudly instead of being skipped. Use +// it for tests that assert a feature is rejected by a given SDK. +func WithErrOnUnimplemented() RunExecutorOption { + return func(c *runExecutorConfig) { + c.errOnUnimplemented = true + } +} + type TestEnvironment struct { testEnvConfig devServer *devserver.Server @@ -182,7 +198,12 @@ func (env *TestEnvironment) RunExecutorTest( executor loadgen.Executor, scenarioInfo loadgen.ScenarioInfo, sdk clioptions.Language, + opts ...RunExecutorOption, ) (TestResult, error) { + var cfg runExecutorConfig + for _, opt := range opts { + opt(&cfg) + } testLogger := zaptest.NewLogger(t).Core() observeLogger, observedLogs := observer.New(zap.DebugLevel) logger := zap.New(zapcore.NewTee(testLogger, observeLogger)).Sugar() @@ -203,7 +224,7 @@ func (env *TestEnvironment) RunExecutorTest( scenarioInfo.Namespace = testNamespace taskQueueName := loadgen.TaskQueueForRun(scenarioInfo.RunID) - workerShutdownCh := env.workerPool.startWorker(testCtx, logger, sdk, taskQueueName, scenarioInfo) + workerShutdownCh := env.workerPool.startWorker(testCtx, logger, sdk, taskQueueName, scenarioInfo, cfg.errOnUnimplemented) execErr := executor.Run(testCtx, scenarioInfo) diff --git a/internal/workertest/workerpool.go b/internal/workertest/workerpool.go index eccb37b78..6967241f9 100644 --- a/internal/workertest/workerpool.go +++ b/internal/workertest/workerpool.go @@ -93,6 +93,7 @@ func (w *workerPool) startWorker( sdk clioptions.Language, taskQueueName string, scenarioInfo loadgen.ScenarioInfo, + errOnUnimplemented bool, ) <-chan error { workerDone := make(chan error, 1) @@ -117,6 +118,9 @@ func (w *workerPool) startWorker( } runner.ClientOptions.FlagSet().Set("server-address", w.env.DevServerAddress()) runner.ClientOptions.FlagSet().Set("namespace", testNamespace) + if errOnUnimplemented { + runner.WorkerOptions.FlagSet().Set("worker-err-on-unimplemented", "true") + } workerDone <- runner.Run(ctx, baseDir) }() diff --git a/loadgen/kitchen_sink_executor_test.go b/loadgen/kitchen_sink_executor_test.go index 56b0967c3..467156c12 100644 --- a/loadgen/kitchen_sink_executor_test.go +++ b/loadgen/kitchen_sink_executor_test.go @@ -72,6 +72,8 @@ func TestKitchenSink(t *testing.T) { "nexusoperation.enableStandalone": true, // Standalone Nexus system callbacks require CHASM callbacks. "history.enableCHASMCallbacks": true, + // Enable StartActivityExecution for the standalone-activity subtest. + "activity.enableStandalone": true, })) // Default workflow execution timeout for tests @@ -1034,6 +1036,33 @@ func TestKitchenSink(t *testing.T) { ActivityTaskCompleted`), expectedUnsupportedErrs: standaloneNexusUnsupportedSDKs, }, + { + name: "ExecActivity/Client/StandaloneActivity", + testInput: &TestInput{ + WorkflowInput: &WorkflowInput{ + InitialActions: ListActionSet( + ClientActivity( + ClientActions(&ClientAction{ + Variant: &ClientAction_DoStandaloneActivity{ + DoStandaloneActivity: &DoStandaloneActivity{ + Activity: &ExecuteActivityAction{ + ActivityType: &ExecuteActivityAction_Noop{}, + StartToCloseTimeout: &durationpb.Duration{Seconds: 5}, + // TaskQueue filled by PrepareTestInput + }, + }, + }, + }), + DefaultRemoteActivity, + ), + ), + }, + }, + historyMatcher: PartialHistoryMatcher(` + ActivityTaskScheduled {"activityType":{"name":"client"}} + ActivityTaskStarted + ActivityTaskCompleted`), + }, { name: "UnsupportedAction", testInput: &TestInput{ @@ -1100,6 +1129,10 @@ func testForSDK( nexusEndpoint, err := env.CreateNexusEndpoint(t.Context(), scenarioInfo.RunID) require.NoError(t, err, "Failed to create Nexus endpoint") + // Task queue this run's worker polls; standalone activities target it so the + // worker picks them up. + runTaskQueue := TaskQueueForRun(scenarioInfo.RunID) + executor := &KitchenSinkExecutor{ TestInput: tc.testInput, PrepareTestInput: func(_ context.Context, _ ScenarioInfo, input *TestInput) error { @@ -1115,6 +1148,9 @@ func testForSDK( if sno := ca.GetDoStandaloneNexusOperation(); sno != nil && sno.Endpoint == "" { sno.Endpoint = nexusEndpoint } + if sa := ca.GetDoStandaloneActivity(); sa.GetActivity() != nil && sa.GetActivity().TaskQueue == "" { + sa.GetActivity().TaskQueue = runTaskQueue + } } } } @@ -1148,7 +1184,9 @@ func testUnsupportedFeature( executor: executor, sdk: sdk, } - _, execErr := env.RunExecutorTest(t, testExecutor, scenarioInfo, sdk) + // Run the worker in strict mode so unsupported actions fail loudly rather + // than being skipped, which is what this test asserts. + _, execErr := env.RunExecutorTest(t, testExecutor, scenarioInfo, sdk, WithErrOnUnimplemented()) require.Errorf(t, execErr, "SDK %s should fail for unsupported feature", sdk) require.NotEmptyf(t, expectedErr, "invalid test case: expectedUnsupportedErrs must be set for SDK %s if the feature is unsupported", sdk) diff --git a/loadgen/kitchensink/client_action_executor.go b/loadgen/kitchensink/client_action_executor.go index f79ebf8e0..be196705d 100644 --- a/loadgen/kitchensink/client_action_executor.go +++ b/loadgen/kitchensink/client_action_executor.go @@ -131,6 +131,8 @@ func (e *ClientActionsExecutor) executeClientAction(ctx context.Context, action return err } else if sano := action.GetDoStandaloneNexusOperation(); sano != nil { return e.executeStandaloneNexusOperation(ctx, sano) + } else if sa := action.GetDoStandaloneActivity(); sa != nil { + return e.executeStandaloneActivity(ctx, sa) } else { return fmt.Errorf("client action must be set") } @@ -225,3 +227,26 @@ func (e *ClientActionsExecutor) executeStandaloneNexusOperation(ctx context.Cont } return nil } + +func (e *ClientActionsExecutor) executeStandaloneActivity(ctx context.Context, sa *DoStandaloneActivity) error { + act := sa.GetActivity() + if act == nil { + return fmt.Errorf("DoStandaloneActivity.activity is required") + } + + actType, args := ActivityNameAndArgs(act) + + handle, err := e.Client.ExecuteActivity(ctx, client.StartActivityOptions{ + ID: fmt.Sprintf("standalone-activity-%s-%s", e.WorkflowOptions.ID, uuid.NewString()), + TaskQueue: act.TaskQueue, + ScheduleToCloseTimeout: act.ScheduleToCloseTimeout.AsDuration(), + ScheduleToStartTimeout: act.ScheduleToStartTimeout.AsDuration(), + StartToCloseTimeout: act.StartToCloseTimeout.AsDuration(), + HeartbeatTimeout: act.HeartbeatTimeout.AsDuration(), + RetryPolicy: ConvertFromPBRetryPolicy(act.RetryPolicy), + }, actType, args...) + if err != nil { + return fmt.Errorf("failed to start standalone activity: %w", err) + } + return handle.Get(ctx, nil) +} diff --git a/loadgen/kitchensink/helpers.go b/loadgen/kitchensink/helpers.go index 719ef9534..03a3ed08a 100644 --- a/loadgen/kitchensink/helpers.go +++ b/loadgen/kitchensink/helpers.go @@ -7,6 +7,7 @@ import ( "go.temporal.io/api/common/v1" "go.temporal.io/api/failure/v1" "go.temporal.io/sdk/converter" + "go.temporal.io/sdk/temporal" "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" ) @@ -14,6 +15,50 @@ import ( // Using human-readable JSON encoding for payloads to aid with debugging. var jsonPayloadConverter = converter.NewProtoJSONPayloadConverter() +// ActivityNameAndArgs maps an ExecuteActivityAction's activity variant to the +// registered activity name and its args. Shared by the workflow-scheduled path +// (worker launchActivity) and the standalone-activity client path so the two +// stay in sync. Unrecognized variants fall back to "noop". +func ActivityNameAndArgs(act *ExecuteActivityAction) (string, []any) { + if delay := act.GetDelay(); delay != nil { + return "delay", []any{delay.AsDuration()} + } else if payload := act.GetPayload(); payload != nil { + inputData := make([]byte, payload.BytesToReceive) + for i := range inputData { + inputData[i] = byte(i % 256) + } + return "payload", []any{inputData, payload.BytesToReturn} + } else if client := act.GetClient(); client != nil { + return "client", []any{client} + } else if retryable := act.GetRetryableError(); retryable != nil { + return "retryable_error", []any{retryable} + } else if timeout := act.GetTimeout(); timeout != nil { + return "timeout", []any{timeout} + } else if heartbeat := act.GetHeartbeat(); heartbeat != nil { + return "heartbeat", []any{heartbeat} + } + return "noop", nil +} + +// ConvertFromPBRetryPolicy converts a proto RetryPolicy into an SDK RetryPolicy. +func ConvertFromPBRetryPolicy(retryPolicy *common.RetryPolicy) *temporal.RetryPolicy { + if retryPolicy == nil { + return nil + } + p := temporal.RetryPolicy{ + BackoffCoefficient: retryPolicy.BackoffCoefficient, + MaximumAttempts: retryPolicy.MaximumAttempts, + NonRetryableErrorTypes: retryPolicy.NonRetryableErrorTypes, + } + if v := retryPolicy.MaximumInterval; v != nil { + p.MaximumInterval = v.AsDuration() + } + if v := retryPolicy.InitialInterval; v != nil { + p.InitialInterval = v.AsDuration() + } + return &p +} + type ActionFactory[T any] func(*T) *Action func SingleActionSet(actions ...*Action) *ActionSet { diff --git a/loadgen/kitchensink/kitchen_sink.pb.go b/loadgen/kitchensink/kitchen_sink.pb.go index 82f8e9495..8d22141d2 100644 --- a/loadgen/kitchensink/kitchen_sink.pb.go +++ b/loadgen/kitchensink/kitchen_sink.pb.go @@ -537,6 +537,7 @@ type ClientAction struct { // *ClientAction_NestedActions // *ClientAction_DoDescribe // *ClientAction_DoStandaloneNexusOperation + // *ClientAction_DoStandaloneActivity Variant isClientAction_Variant `protobuf_oneof:"variant"` } @@ -621,6 +622,13 @@ func (x *ClientAction) GetDoStandaloneNexusOperation() *DoStandaloneNexusOperati return nil } +func (x *ClientAction) GetDoStandaloneActivity() *DoStandaloneActivity { + if x, ok := x.GetVariant().(*ClientAction_DoStandaloneActivity); ok { + return x.DoStandaloneActivity + } + return nil +} + type isClientAction_Variant interface { isClientAction_Variant() } @@ -649,6 +657,10 @@ type ClientAction_DoStandaloneNexusOperation struct { DoStandaloneNexusOperation *DoStandaloneNexusOperation `protobuf:"bytes,6,opt,name=do_standalone_nexus_operation,json=doStandaloneNexusOperation,proto3,oneof"` } +type ClientAction_DoStandaloneActivity struct { + DoStandaloneActivity *DoStandaloneActivity `protobuf:"bytes,7,opt,name=do_standalone_activity,json=doStandaloneActivity,proto3,oneof"` +} + func (*ClientAction_DoSignal) isClientAction_Variant() {} func (*ClientAction_DoQuery) isClientAction_Variant() {} @@ -661,6 +673,8 @@ func (*ClientAction_DoDescribe) isClientAction_Variant() {} func (*ClientAction_DoStandaloneNexusOperation) isClientAction_Variant() {} +func (*ClientAction_DoStandaloneActivity) isClientAction_Variant() {} + // DoStandaloneNexusOperation starts a Nexus operation outside of any workflow context using // StartNexusOperationExecution and polls for its completion with PollNexusOperationExecution. type DoStandaloneNexusOperation struct { @@ -726,6 +740,58 @@ func (x *DoStandaloneNexusOperation) GetOperation() string { return "" } +// DoStandaloneActivity starts an activity outside of any workflow context using +// StartActivityExecution and polls for its outcome with PollActivityExecution. +// Reuses ExecuteActivityAction so the activity variant, task queue, timeouts, and +// retry policy are all configurable. Requires server-side support for +// workflow-independent activities. +type DoStandaloneActivity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Activity *ExecuteActivityAction `protobuf:"bytes,1,opt,name=activity,proto3" json:"activity,omitempty"` +} + +func (x *DoStandaloneActivity) Reset() { + *x = DoStandaloneActivity{} + if protoimpl.UnsafeEnabled { + mi := &file_kitchen_sink_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DoStandaloneActivity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DoStandaloneActivity) ProtoMessage() {} + +func (x *DoStandaloneActivity) ProtoReflect() protoreflect.Message { + mi := &file_kitchen_sink_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 DoStandaloneActivity.ProtoReflect.Descriptor instead. +func (*DoStandaloneActivity) Descriptor() ([]byte, []int) { + return file_kitchen_sink_proto_rawDescGZIP(), []int{6} +} + +func (x *DoStandaloneActivity) GetActivity() *ExecuteActivityAction { + if x != nil { + return x.Activity + } + return nil +} + type DoSignal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -743,7 +809,7 @@ type DoSignal struct { func (x *DoSignal) Reset() { *x = DoSignal{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[6] + mi := &file_kitchen_sink_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -756,7 +822,7 @@ func (x *DoSignal) String() string { func (*DoSignal) ProtoMessage() {} func (x *DoSignal) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[6] + mi := &file_kitchen_sink_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -769,7 +835,7 @@ func (x *DoSignal) ProtoReflect() protoreflect.Message { // Deprecated: Use DoSignal.ProtoReflect.Descriptor instead. func (*DoSignal) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{6} + return file_kitchen_sink_proto_rawDescGZIP(), []int{7} } func (m *DoSignal) GetVariant() isDoSignal_Variant { @@ -828,7 +894,7 @@ type DoDescribe struct { func (x *DoDescribe) Reset() { *x = DoDescribe{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[7] + mi := &file_kitchen_sink_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -841,7 +907,7 @@ func (x *DoDescribe) String() string { func (*DoDescribe) ProtoMessage() {} func (x *DoDescribe) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[7] + mi := &file_kitchen_sink_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -854,7 +920,7 @@ func (x *DoDescribe) ProtoReflect() protoreflect.Message { // Deprecated: Use DoDescribe.ProtoReflect.Descriptor instead. func (*DoDescribe) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{7} + return file_kitchen_sink_proto_rawDescGZIP(), []int{8} } type DoQuery struct { @@ -874,7 +940,7 @@ type DoQuery struct { func (x *DoQuery) Reset() { *x = DoQuery{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[8] + mi := &file_kitchen_sink_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -887,7 +953,7 @@ func (x *DoQuery) String() string { func (*DoQuery) ProtoMessage() {} func (x *DoQuery) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[8] + mi := &file_kitchen_sink_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -900,7 +966,7 @@ func (x *DoQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use DoQuery.ProtoReflect.Descriptor instead. func (*DoQuery) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{8} + return file_kitchen_sink_proto_rawDescGZIP(), []int{9} } func (m *DoQuery) GetVariant() isDoQuery_Variant { @@ -969,7 +1035,7 @@ type DoUpdate struct { func (x *DoUpdate) Reset() { *x = DoUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[9] + mi := &file_kitchen_sink_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1048,7 @@ func (x *DoUpdate) String() string { func (*DoUpdate) ProtoMessage() {} func (x *DoUpdate) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[9] + mi := &file_kitchen_sink_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1061,7 @@ func (x *DoUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use DoUpdate.ProtoReflect.Descriptor instead. func (*DoUpdate) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{9} + return file_kitchen_sink_proto_rawDescGZIP(), []int{10} } func (m *DoUpdate) GetVariant() isDoUpdate_Variant { @@ -1067,7 +1133,7 @@ type DoActionsUpdate struct { func (x *DoActionsUpdate) Reset() { *x = DoActionsUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[10] + mi := &file_kitchen_sink_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1080,7 +1146,7 @@ func (x *DoActionsUpdate) String() string { func (*DoActionsUpdate) ProtoMessage() {} func (x *DoActionsUpdate) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[10] + mi := &file_kitchen_sink_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1093,7 +1159,7 @@ func (x *DoActionsUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use DoActionsUpdate.ProtoReflect.Descriptor instead. func (*DoActionsUpdate) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{10} + return file_kitchen_sink_proto_rawDescGZIP(), []int{11} } func (m *DoActionsUpdate) GetVariant() isDoActionsUpdate_Variant { @@ -1149,7 +1215,7 @@ type HandlerInvocation struct { func (x *HandlerInvocation) Reset() { *x = HandlerInvocation{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[11] + mi := &file_kitchen_sink_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1162,7 +1228,7 @@ func (x *HandlerInvocation) String() string { func (*HandlerInvocation) ProtoMessage() {} func (x *HandlerInvocation) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[11] + mi := &file_kitchen_sink_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1175,7 +1241,7 @@ func (x *HandlerInvocation) ProtoReflect() protoreflect.Message { // Deprecated: Use HandlerInvocation.ProtoReflect.Descriptor instead. func (*HandlerInvocation) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{11} + return file_kitchen_sink_proto_rawDescGZIP(), []int{12} } func (x *HandlerInvocation) GetName() string { @@ -1204,7 +1270,7 @@ type WorkflowState struct { func (x *WorkflowState) Reset() { *x = WorkflowState{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[12] + mi := &file_kitchen_sink_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1217,7 +1283,7 @@ func (x *WorkflowState) String() string { func (*WorkflowState) ProtoMessage() {} func (x *WorkflowState) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[12] + mi := &file_kitchen_sink_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1230,7 +1296,7 @@ func (x *WorkflowState) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkflowState.ProtoReflect.Descriptor instead. func (*WorkflowState) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{12} + return file_kitchen_sink_proto_rawDescGZIP(), []int{13} } func (x *WorkflowState) GetKvs() map[string]string { @@ -1256,7 +1322,7 @@ type WorkflowInput struct { func (x *WorkflowInput) Reset() { *x = WorkflowInput{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[13] + mi := &file_kitchen_sink_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1269,7 +1335,7 @@ func (x *WorkflowInput) String() string { func (*WorkflowInput) ProtoMessage() {} func (x *WorkflowInput) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[13] + mi := &file_kitchen_sink_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1282,7 +1348,7 @@ func (x *WorkflowInput) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkflowInput.ProtoReflect.Descriptor instead. func (*WorkflowInput) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{13} + return file_kitchen_sink_proto_rawDescGZIP(), []int{14} } func (x *WorkflowInput) GetInitialActions() []*ActionSet { @@ -1331,7 +1397,7 @@ type ActionSet struct { func (x *ActionSet) Reset() { *x = ActionSet{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[14] + mi := &file_kitchen_sink_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1344,7 +1410,7 @@ func (x *ActionSet) String() string { func (*ActionSet) ProtoMessage() {} func (x *ActionSet) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[14] + mi := &file_kitchen_sink_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1357,7 +1423,7 @@ func (x *ActionSet) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionSet.ProtoReflect.Descriptor instead. func (*ActionSet) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{14} + return file_kitchen_sink_proto_rawDescGZIP(), []int{15} } func (x *ActionSet) GetActions() []*Action { @@ -1402,7 +1468,7 @@ type Action struct { func (x *Action) Reset() { *x = Action{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[15] + mi := &file_kitchen_sink_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1415,7 +1481,7 @@ func (x *Action) String() string { func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[15] + mi := &file_kitchen_sink_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1428,7 +1494,7 @@ func (x *Action) ProtoReflect() protoreflect.Message { // Deprecated: Use Action.ProtoReflect.Descriptor instead. func (*Action) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{15} + return file_kitchen_sink_proto_rawDescGZIP(), []int{16} } func (m *Action) GetVariant() isAction_Variant { @@ -1659,7 +1725,7 @@ type AwaitableChoice struct { func (x *AwaitableChoice) Reset() { *x = AwaitableChoice{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[16] + mi := &file_kitchen_sink_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1672,7 +1738,7 @@ func (x *AwaitableChoice) String() string { func (*AwaitableChoice) ProtoMessage() {} func (x *AwaitableChoice) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[16] + mi := &file_kitchen_sink_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1685,7 +1751,7 @@ func (x *AwaitableChoice) ProtoReflect() protoreflect.Message { // Deprecated: Use AwaitableChoice.ProtoReflect.Descriptor instead. func (*AwaitableChoice) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{16} + return file_kitchen_sink_proto_rawDescGZIP(), []int{17} } func (m *AwaitableChoice) GetCondition() isAwaitableChoice_Condition { @@ -1784,7 +1850,7 @@ type TimerAction struct { func (x *TimerAction) Reset() { *x = TimerAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[17] + mi := &file_kitchen_sink_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1797,7 +1863,7 @@ func (x *TimerAction) String() string { func (*TimerAction) ProtoMessage() {} func (x *TimerAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[17] + mi := &file_kitchen_sink_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1810,7 +1876,7 @@ func (x *TimerAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TimerAction.ProtoReflect.Descriptor instead. func (*TimerAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{17} + return file_kitchen_sink_proto_rawDescGZIP(), []int{18} } func (x *TimerAction) GetMilliseconds() uint64 { @@ -1881,7 +1947,7 @@ type ExecuteActivityAction struct { func (x *ExecuteActivityAction) Reset() { *x = ExecuteActivityAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[18] + mi := &file_kitchen_sink_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1894,7 +1960,7 @@ func (x *ExecuteActivityAction) String() string { func (*ExecuteActivityAction) ProtoMessage() {} func (x *ExecuteActivityAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[18] + mi := &file_kitchen_sink_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1907,7 +1973,7 @@ func (x *ExecuteActivityAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteActivityAction.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19} } func (m *ExecuteActivityAction) GetActivityType() isExecuteActivityAction_ActivityType { @@ -2199,7 +2265,7 @@ type ExecuteChildWorkflowAction struct { func (x *ExecuteChildWorkflowAction) Reset() { *x = ExecuteChildWorkflowAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[19] + mi := &file_kitchen_sink_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2212,7 +2278,7 @@ func (x *ExecuteChildWorkflowAction) String() string { func (*ExecuteChildWorkflowAction) ProtoMessage() {} func (x *ExecuteChildWorkflowAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[19] + mi := &file_kitchen_sink_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2225,7 +2291,7 @@ func (x *ExecuteChildWorkflowAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteChildWorkflowAction.ProtoReflect.Descriptor instead. func (*ExecuteChildWorkflowAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{19} + return file_kitchen_sink_proto_rawDescGZIP(), []int{20} } func (x *ExecuteChildWorkflowAction) GetNamespace() string { @@ -2367,7 +2433,7 @@ type AwaitWorkflowState struct { func (x *AwaitWorkflowState) Reset() { *x = AwaitWorkflowState{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[20] + mi := &file_kitchen_sink_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2380,7 +2446,7 @@ func (x *AwaitWorkflowState) String() string { func (*AwaitWorkflowState) ProtoMessage() {} func (x *AwaitWorkflowState) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[20] + mi := &file_kitchen_sink_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2393,7 +2459,7 @@ func (x *AwaitWorkflowState) ProtoReflect() protoreflect.Message { // Deprecated: Use AwaitWorkflowState.ProtoReflect.Descriptor instead. func (*AwaitWorkflowState) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{20} + return file_kitchen_sink_proto_rawDescGZIP(), []int{21} } func (x *AwaitWorkflowState) GetKey() string { @@ -2430,7 +2496,7 @@ type SendSignalAction struct { func (x *SendSignalAction) Reset() { *x = SendSignalAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[21] + mi := &file_kitchen_sink_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2443,7 +2509,7 @@ func (x *SendSignalAction) String() string { func (*SendSignalAction) ProtoMessage() {} func (x *SendSignalAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[21] + mi := &file_kitchen_sink_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2456,7 +2522,7 @@ func (x *SendSignalAction) ProtoReflect() protoreflect.Message { // Deprecated: Use SendSignalAction.ProtoReflect.Descriptor instead. func (*SendSignalAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{21} + return file_kitchen_sink_proto_rawDescGZIP(), []int{22} } func (x *SendSignalAction) GetWorkflowId() string { @@ -2514,7 +2580,7 @@ type CancelWorkflowAction struct { func (x *CancelWorkflowAction) Reset() { *x = CancelWorkflowAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[22] + mi := &file_kitchen_sink_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2527,7 +2593,7 @@ func (x *CancelWorkflowAction) String() string { func (*CancelWorkflowAction) ProtoMessage() {} func (x *CancelWorkflowAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[22] + mi := &file_kitchen_sink_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2540,7 +2606,7 @@ func (x *CancelWorkflowAction) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelWorkflowAction.ProtoReflect.Descriptor instead. func (*CancelWorkflowAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{22} + return file_kitchen_sink_proto_rawDescGZIP(), []int{23} } func (x *CancelWorkflowAction) GetWorkflowId() string { @@ -2579,7 +2645,7 @@ type SetPatchMarkerAction struct { func (x *SetPatchMarkerAction) Reset() { *x = SetPatchMarkerAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[23] + mi := &file_kitchen_sink_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2592,7 +2658,7 @@ func (x *SetPatchMarkerAction) String() string { func (*SetPatchMarkerAction) ProtoMessage() {} func (x *SetPatchMarkerAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[23] + mi := &file_kitchen_sink_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2605,7 +2671,7 @@ func (x *SetPatchMarkerAction) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPatchMarkerAction.ProtoReflect.Descriptor instead. func (*SetPatchMarkerAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{23} + return file_kitchen_sink_proto_rawDescGZIP(), []int{24} } func (x *SetPatchMarkerAction) GetPatchId() string { @@ -2642,7 +2708,7 @@ type UpsertSearchAttributesAction struct { func (x *UpsertSearchAttributesAction) Reset() { *x = UpsertSearchAttributesAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[24] + mi := &file_kitchen_sink_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2655,7 +2721,7 @@ func (x *UpsertSearchAttributesAction) String() string { func (*UpsertSearchAttributesAction) ProtoMessage() {} func (x *UpsertSearchAttributesAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[24] + mi := &file_kitchen_sink_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2668,7 +2734,7 @@ func (x *UpsertSearchAttributesAction) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertSearchAttributesAction.ProtoReflect.Descriptor instead. func (*UpsertSearchAttributesAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{24} + return file_kitchen_sink_proto_rawDescGZIP(), []int{25} } func (x *UpsertSearchAttributesAction) GetSearchAttributes() map[string]*v1.Payload { @@ -2692,7 +2758,7 @@ type UpsertMemoAction struct { func (x *UpsertMemoAction) Reset() { *x = UpsertMemoAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[25] + mi := &file_kitchen_sink_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2705,7 +2771,7 @@ func (x *UpsertMemoAction) String() string { func (*UpsertMemoAction) ProtoMessage() {} func (x *UpsertMemoAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[25] + mi := &file_kitchen_sink_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2718,7 +2784,7 @@ func (x *UpsertMemoAction) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertMemoAction.ProtoReflect.Descriptor instead. func (*UpsertMemoAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{25} + return file_kitchen_sink_proto_rawDescGZIP(), []int{26} } func (x *UpsertMemoAction) GetUpsertedMemo() *v1.Memo { @@ -2739,7 +2805,7 @@ type ReturnResultAction struct { func (x *ReturnResultAction) Reset() { *x = ReturnResultAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[26] + mi := &file_kitchen_sink_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2752,7 +2818,7 @@ func (x *ReturnResultAction) String() string { func (*ReturnResultAction) ProtoMessage() {} func (x *ReturnResultAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[26] + mi := &file_kitchen_sink_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2765,7 +2831,7 @@ func (x *ReturnResultAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ReturnResultAction.ProtoReflect.Descriptor instead. func (*ReturnResultAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{26} + return file_kitchen_sink_proto_rawDescGZIP(), []int{27} } func (x *ReturnResultAction) GetReturnThis() *v1.Payload { @@ -2786,7 +2852,7 @@ type ReturnErrorAction struct { func (x *ReturnErrorAction) Reset() { *x = ReturnErrorAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[27] + mi := &file_kitchen_sink_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2799,7 +2865,7 @@ func (x *ReturnErrorAction) String() string { func (*ReturnErrorAction) ProtoMessage() {} func (x *ReturnErrorAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[27] + mi := &file_kitchen_sink_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2812,7 +2878,7 @@ func (x *ReturnErrorAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ReturnErrorAction.ProtoReflect.Descriptor instead. func (*ReturnErrorAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{27} + return file_kitchen_sink_proto_rawDescGZIP(), []int{28} } func (x *ReturnErrorAction) GetFailure() *v12.Failure { @@ -2856,7 +2922,7 @@ type ContinueAsNewAction struct { func (x *ContinueAsNewAction) Reset() { *x = ContinueAsNewAction{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[28] + mi := &file_kitchen_sink_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +2935,7 @@ func (x *ContinueAsNewAction) String() string { func (*ContinueAsNewAction) ProtoMessage() {} func (x *ContinueAsNewAction) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[28] + mi := &file_kitchen_sink_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +2948,7 @@ func (x *ContinueAsNewAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ContinueAsNewAction.ProtoReflect.Descriptor instead. func (*ContinueAsNewAction) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{28} + return file_kitchen_sink_proto_rawDescGZIP(), []int{29} } func (x *ContinueAsNewAction) GetWorkflowType() string { @@ -2973,7 +3039,7 @@ type RemoteActivityOptions struct { func (x *RemoteActivityOptions) Reset() { *x = RemoteActivityOptions{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[29] + mi := &file_kitchen_sink_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2986,7 +3052,7 @@ func (x *RemoteActivityOptions) String() string { func (*RemoteActivityOptions) ProtoMessage() {} func (x *RemoteActivityOptions) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[29] + mi := &file_kitchen_sink_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2999,7 +3065,7 @@ func (x *RemoteActivityOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteActivityOptions.ProtoReflect.Descriptor instead. func (*RemoteActivityOptions) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{29} + return file_kitchen_sink_proto_rawDescGZIP(), []int{30} } func (x *RemoteActivityOptions) GetCancellationType() ActivityCancellationType { @@ -3047,7 +3113,7 @@ type ExecuteNexusOperation struct { func (x *ExecuteNexusOperation) Reset() { *x = ExecuteNexusOperation{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[30] + mi := &file_kitchen_sink_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3060,7 +3126,7 @@ func (x *ExecuteNexusOperation) String() string { func (*ExecuteNexusOperation) ProtoMessage() {} func (x *ExecuteNexusOperation) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[30] + mi := &file_kitchen_sink_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3073,7 +3139,7 @@ func (x *ExecuteNexusOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteNexusOperation.ProtoReflect.Descriptor instead. func (*ExecuteNexusOperation) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{30} + return file_kitchen_sink_proto_rawDescGZIP(), []int{31} } func (x *ExecuteNexusOperation) GetEndpoint() string { @@ -3138,7 +3204,7 @@ type NexusHandlerInput struct { func (x *NexusHandlerInput) Reset() { *x = NexusHandlerInput{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[31] + mi := &file_kitchen_sink_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +3217,7 @@ func (x *NexusHandlerInput) String() string { func (*NexusHandlerInput) ProtoMessage() {} func (x *NexusHandlerInput) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[31] + mi := &file_kitchen_sink_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +3230,7 @@ func (x *NexusHandlerInput) ProtoReflect() protoreflect.Message { // Deprecated: Use NexusHandlerInput.ProtoReflect.Descriptor instead. func (*NexusHandlerInput) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{31} + return file_kitchen_sink_proto_rawDescGZIP(), []int{32} } func (x *NexusHandlerInput) GetInput() string { @@ -3198,7 +3264,7 @@ type DoSignal_DoSignalActions struct { func (x *DoSignal_DoSignalActions) Reset() { *x = DoSignal_DoSignalActions{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[32] + mi := &file_kitchen_sink_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3211,7 +3277,7 @@ func (x *DoSignal_DoSignalActions) String() string { func (*DoSignal_DoSignalActions) ProtoMessage() {} func (x *DoSignal_DoSignalActions) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[32] + mi := &file_kitchen_sink_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3224,7 +3290,7 @@ func (x *DoSignal_DoSignalActions) ProtoReflect() protoreflect.Message { // Deprecated: Use DoSignal_DoSignalActions.ProtoReflect.Descriptor instead. func (*DoSignal_DoSignalActions) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{6, 0} + return file_kitchen_sink_proto_rawDescGZIP(), []int{7, 0} } func (m *DoSignal_DoSignalActions) GetVariant() isDoSignal_DoSignalActions_Variant { @@ -3288,7 +3354,7 @@ type ExecuteActivityAction_GenericActivity struct { func (x *ExecuteActivityAction_GenericActivity) Reset() { *x = ExecuteActivityAction_GenericActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[34] + mi := &file_kitchen_sink_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3301,7 +3367,7 @@ func (x *ExecuteActivityAction_GenericActivity) String() string { func (*ExecuteActivityAction_GenericActivity) ProtoMessage() {} func (x *ExecuteActivityAction_GenericActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[34] + mi := &file_kitchen_sink_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3314,7 +3380,7 @@ func (x *ExecuteActivityAction_GenericActivity) ProtoReflect() protoreflect.Mess // Deprecated: Use ExecuteActivityAction_GenericActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_GenericActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 0} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 0} } func (x *ExecuteActivityAction_GenericActivity) GetType() string { @@ -3345,7 +3411,7 @@ type ExecuteActivityAction_ResourcesActivity struct { func (x *ExecuteActivityAction_ResourcesActivity) Reset() { *x = ExecuteActivityAction_ResourcesActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[35] + mi := &file_kitchen_sink_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3358,7 +3424,7 @@ func (x *ExecuteActivityAction_ResourcesActivity) String() string { func (*ExecuteActivityAction_ResourcesActivity) ProtoMessage() {} func (x *ExecuteActivityAction_ResourcesActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[35] + mi := &file_kitchen_sink_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3371,7 +3437,7 @@ func (x *ExecuteActivityAction_ResourcesActivity) ProtoReflect() protoreflect.Me // Deprecated: Use ExecuteActivityAction_ResourcesActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_ResourcesActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 1} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 1} } func (x *ExecuteActivityAction_ResourcesActivity) GetRunFor() *durationpb.Duration { @@ -3414,7 +3480,7 @@ type ExecuteActivityAction_PayloadActivity struct { func (x *ExecuteActivityAction_PayloadActivity) Reset() { *x = ExecuteActivityAction_PayloadActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[36] + mi := &file_kitchen_sink_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3427,7 +3493,7 @@ func (x *ExecuteActivityAction_PayloadActivity) String() string { func (*ExecuteActivityAction_PayloadActivity) ProtoMessage() {} func (x *ExecuteActivityAction_PayloadActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[36] + mi := &file_kitchen_sink_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3440,7 +3506,7 @@ func (x *ExecuteActivityAction_PayloadActivity) ProtoReflect() protoreflect.Mess // Deprecated: Use ExecuteActivityAction_PayloadActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_PayloadActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 2} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 2} } func (x *ExecuteActivityAction_PayloadActivity) GetBytesToReceive() int32 { @@ -3468,7 +3534,7 @@ type ExecuteActivityAction_ClientActivity struct { func (x *ExecuteActivityAction_ClientActivity) Reset() { *x = ExecuteActivityAction_ClientActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[37] + mi := &file_kitchen_sink_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3481,7 +3547,7 @@ func (x *ExecuteActivityAction_ClientActivity) String() string { func (*ExecuteActivityAction_ClientActivity) ProtoMessage() {} func (x *ExecuteActivityAction_ClientActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[37] + mi := &file_kitchen_sink_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3494,7 +3560,7 @@ func (x *ExecuteActivityAction_ClientActivity) ProtoReflect() protoreflect.Messa // Deprecated: Use ExecuteActivityAction_ClientActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_ClientActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 3} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 3} } func (x *ExecuteActivityAction_ClientActivity) GetClientSequence() *ClientSequence { @@ -3518,7 +3584,7 @@ type ExecuteActivityAction_RetryableErrorActivity struct { func (x *ExecuteActivityAction_RetryableErrorActivity) Reset() { *x = ExecuteActivityAction_RetryableErrorActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[38] + mi := &file_kitchen_sink_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3531,7 +3597,7 @@ func (x *ExecuteActivityAction_RetryableErrorActivity) String() string { func (*ExecuteActivityAction_RetryableErrorActivity) ProtoMessage() {} func (x *ExecuteActivityAction_RetryableErrorActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[38] + mi := &file_kitchen_sink_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3544,7 +3610,7 @@ func (x *ExecuteActivityAction_RetryableErrorActivity) ProtoReflect() protorefle // Deprecated: Use ExecuteActivityAction_RetryableErrorActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_RetryableErrorActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 4} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 4} } func (x *ExecuteActivityAction_RetryableErrorActivity) GetFailAttempts() int32 { @@ -3572,7 +3638,7 @@ type ExecuteActivityAction_TimeoutActivity struct { func (x *ExecuteActivityAction_TimeoutActivity) Reset() { *x = ExecuteActivityAction_TimeoutActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[39] + mi := &file_kitchen_sink_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3585,7 +3651,7 @@ func (x *ExecuteActivityAction_TimeoutActivity) String() string { func (*ExecuteActivityAction_TimeoutActivity) ProtoMessage() {} func (x *ExecuteActivityAction_TimeoutActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[39] + mi := &file_kitchen_sink_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3598,7 +3664,7 @@ func (x *ExecuteActivityAction_TimeoutActivity) ProtoReflect() protoreflect.Mess // Deprecated: Use ExecuteActivityAction_TimeoutActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_TimeoutActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 5} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 5} } func (x *ExecuteActivityAction_TimeoutActivity) GetFailAttempts() int32 { @@ -3640,7 +3706,7 @@ type ExecuteActivityAction_HeartbeatTimeoutActivity struct { func (x *ExecuteActivityAction_HeartbeatTimeoutActivity) Reset() { *x = ExecuteActivityAction_HeartbeatTimeoutActivity{} if protoimpl.UnsafeEnabled { - mi := &file_kitchen_sink_proto_msgTypes[40] + mi := &file_kitchen_sink_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3653,7 +3719,7 @@ func (x *ExecuteActivityAction_HeartbeatTimeoutActivity) String() string { func (*ExecuteActivityAction_HeartbeatTimeoutActivity) ProtoMessage() {} func (x *ExecuteActivityAction_HeartbeatTimeoutActivity) ProtoReflect() protoreflect.Message { - mi := &file_kitchen_sink_proto_msgTypes[40] + mi := &file_kitchen_sink_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3666,7 +3732,7 @@ func (x *ExecuteActivityAction_HeartbeatTimeoutActivity) ProtoReflect() protoref // Deprecated: Use ExecuteActivityAction_HeartbeatTimeoutActivity.ProtoReflect.Descriptor instead. func (*ExecuteActivityAction_HeartbeatTimeoutActivity) Descriptor() ([]byte, []int) { - return file_kitchen_sink_proto_rawDescGZIP(), []int{18, 6} + return file_kitchen_sink_proto_rawDescGZIP(), []int{19, 6} } func (x *ExecuteActivityAction_HeartbeatTimeoutActivity) GetFailAttempts() int32 { @@ -3757,7 +3823,7 @@ var file_kitchen_sink_proto_rawDesc = []byte{ 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x44, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x83, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xed, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, @@ -3789,747 +3855,760 @@ var file_kitchen_sink_proto_rawDesc = []byte{ 0x6c, 0x6f, 0x6e, 0x65, 0x4e, 0x65, 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1a, 0x64, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x4e, 0x65, 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x70, 0x0a, 0x1a, 0x44, - 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x4e, 0x65, 0x78, 0x75, 0x73, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x03, - 0x0a, 0x08, 0x44, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x62, 0x0a, 0x11, 0x64, 0x6f, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, - 0x6e, 0x6b, 0x2e, 0x44, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x44, 0x6f, 0x53, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x64, - 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, - 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, - 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x48, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x69, 0x74, - 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x1a, 0xd7, 0x01, 0x0a, 0x0f, 0x44, 0x6f, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x64, 0x6f, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, - 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x12, 0x64, 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, - 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x49, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x0c, 0x0a, 0x0a, 0x44, - 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x07, 0x44, 0x6f, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, - 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x48, 0x00, 0x52, - 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x06, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, - 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, - 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x72, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xf6, 0x01, 0x0a, 0x08, - 0x44, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, - 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, - 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x44, 0x6f, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6f, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x12, 0x68, 0x0a, 0x16, 0x64, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, + 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x44, 0x6f, + 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x48, 0x00, 0x52, 0x14, 0x64, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, + 0x6e, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x70, 0x0a, 0x1a, 0x44, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x4e, 0x65, 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x14, 0x44, 0x6f, 0x53, 0x74, 0x61, + 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, + 0x4d, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, + 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0xbb, + 0x03, 0x0a, 0x08, 0x44, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x62, 0x0a, 0x11, 0x64, + 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, - 0x69, 0x6e, 0x6b, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, - 0x1d, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x29, - 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x0f, 0x44, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, + 0x69, 0x6e, 0x6b, 0x2e, 0x44, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x44, 0x6f, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, + 0x64, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x47, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, + 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x69, + 0x74, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x1a, 0xd7, 0x01, 0x0a, 0x0f, 0x44, 0x6f, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x64, + 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, + 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6f, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x12, 0x64, 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, + 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x0c, 0x0a, 0x0a, + 0x44, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x07, 0x44, + 0x6f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x48, 0x00, + 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, + 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, + 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x72, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xf6, 0x01, 0x0a, + 0x08, 0x44, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, + 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x44, 0x6f, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6f, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, + 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x29, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x0f, 0x44, 0x6f, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, + 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x08, + 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x6e, + 0x76, 0x6f, 0x63, 0x61, 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, 0x33, 0x0a, 0x04, + 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x03, 0x6b, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4b, 0x76, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x1a, 0x36, 0x0a, 0x08, 0x4b, 0x76, 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, 0xf3, 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x08, 0x72, - 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x76, - 0x6f, 0x63, 0x61, 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, 0x33, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, - 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, - 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x44, 0x0a, 0x03, 0x6b, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, - 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4b, 0x76, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x1a, 0x36, 0x0a, 0x08, 0x4b, 0x76, 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, 0xf3, 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, - 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, - 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x22, 0x69, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, - 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x22, 0xe3, 0x0a, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, - 0x74, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x22, 0x69, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x22, 0xe3, 0x0a, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, + 0x05, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, + 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x58, + 0x0a, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x68, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x63, + 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x11, 0x65, 0x78, 0x65, 0x63, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x12, 0x62, 0x0a, 0x14, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, + 0x61, 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x48, 0x00, 0x52, 0x12, 0x61, 0x77, 0x61, 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4f, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, - 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x58, 0x0a, - 0x0d, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, - 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x68, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x63, 0x5f, - 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, + 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 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, 0x5b, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, + 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x53, 0x65, 0x74, 0x50, + 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x12, 0x74, 0x0a, 0x18, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, - 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, - 0x65, 0x78, 0x65, 0x63, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x12, 0x62, 0x0a, 0x14, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, - 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, - 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, - 0x00, 0x52, 0x12, 0x61, 0x77, 0x61, 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4f, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, - 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 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, 0x5b, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, - 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x6b, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x16, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0b, 0x75, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, - 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, - 0x74, 0x63, 0x68, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x72, 0x12, 0x74, 0x0a, 0x18, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, - 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, - 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x16, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0b, 0x75, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, - 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, - 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x4d, 0x65, 0x6d, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x59, 0x0a, 0x12, 0x73, 0x65, 0x74, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, - 0x6b, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, - 0x00, 0x52, 0x10, 0x73, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, - 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, - 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x59, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x65, - 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, - 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, - 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x53, 0x0a, 0x11, 0x6e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, - 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x6e, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x5c, - 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x75, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, - 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x75, - 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, - 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x0f, 0x41, 0x77, 0x61, 0x69, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x77, - 0x61, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x61, 0x69, 0x74, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x62, 0x61, 0x6e, 0x64, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, - 0x00, 0x52, 0x07, 0x61, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x15, 0x63, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x48, 0x00, 0x52, 0x13, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x14, 0x63, 0x61, 0x6e, 0x63, - 0x65, 0x6c, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, - 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x16, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x14, - 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, - 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, - 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, - 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xfd, 0x15, - 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x75, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x59, 0x0a, 0x12, 0x73, 0x65, 0x74, + 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, + 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, + 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x59, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x5f, 0x61, 0x73, 0x5f, 0x6e, + 0x65, 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, - 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x07, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x6f, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, + 0x4e, 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x53, 0x0a, 0x11, 0x6e, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, + 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0f, + 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, + 0x5c, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x75, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, + 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, 0x65, 0x78, + 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x6e, + 0x65, 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, + 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x0f, 0x41, 0x77, 0x61, + 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0b, + 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x61, 0x69, + 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x62, 0x61, 0x6e, 0x64, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x48, 0x00, 0x52, 0x07, 0x61, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x15, 0x63, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x48, 0x00, 0x52, 0x13, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x14, 0x63, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, - 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x12, 0x63, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, - 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, - 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, - 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, - 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5a, 0x0a, 0x06, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x65, + 0x00, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x16, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, + 0x14, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, + 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, + 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xfd, + 0x15, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, + 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x07, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, + 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x12, 0x63, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x73, 0x0a, 0x0f, 0x72, 0x65, 0x74, 0x72, 0x79, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x48, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, - 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5d, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, - 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, - 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6a, 0x0a, 0x09, 0x68, - 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x5d, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x09, 0x68, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x73, - 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, - 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x54, 0x0a, 0x19, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x5f, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x19, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x6f, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4e, 0x0a, 0x16, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 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, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x6f, - 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x11, - 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x10, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x0a, 0x08, - 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x01, 0x52, 0x07, 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x12, 0x4b, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, - 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x56, - 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x6e, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5a, 0x0a, 0x06, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, + 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x73, 0x0a, 0x0f, 0x72, 0x65, 0x74, 0x72, + 0x79, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x48, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, + 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5d, 0x0a, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, + 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, + 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6a, 0x0a, 0x09, + 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4a, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, + 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x09, 0x68, + 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, + 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, - 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x73, 0x73, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x72, - 0x6e, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x72, 0x6e, - 0x65, 0x73, 0x73, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0e, 0x66, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x73, 0x73, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x1a, 0x64, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x09, 0x61, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xdc, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x07, - 0x72, 0x75, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 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, 0x06, 0x72, 0x75, 0x6e, 0x46, 0x6f, 0x72, - 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x6c, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x54, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x1c, - 0x63, 0x70, 0x75, 0x5f, 0x79, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x72, 0x79, 0x5f, - 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x18, 0x63, 0x70, 0x75, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x72, - 0x79, 0x4e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x10, - 0x63, 0x70, 0x75, 0x5f, 0x79, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x6d, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x59, 0x69, 0x65, 0x6c, 0x64, - 0x46, 0x6f, 0x72, 0x4d, 0x73, 0x1a, 0x63, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x1a, 0x65, 0x0a, 0x0e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x53, 0x0a, 0x0f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, - 0x6e, 0x6b, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x1a, 0x3d, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, - 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x1a, 0xc2, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, 0x69, - 0x6c, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x44, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xcb, 0x01, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, - 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, - 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x41, - 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, - 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x0f, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xe6, 0x0c, - 0x0a, 0x1a, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, - 0x35, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, + 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x54, 0x0a, 0x19, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x6f, + 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x19, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x4b, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x75, 0x6e, 0x5f, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, + 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4e, 0x0a, + 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 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, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, 0x0a, 0x15, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 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, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x54, 0x61, 0x73, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x13, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, - 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x73, - 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, - 0x6c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x65, 0x0a, 0x18, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x75, 0x73, 0x65, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x74, - 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, 0x75, 0x6d, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x52, - 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x15, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x6f, - 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x5d, - 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x43, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, - 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, - 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x65, - 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, - 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, - 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d, - 0x65, 0x6d, 0x6f, 0x12, 0x79, 0x0a, 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, - 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, - 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x66, - 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, + 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x0a, + 0x08, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x01, 0x52, 0x07, 0x69, 0x73, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, + 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, + 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, - 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, - 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, - 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, - 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, - 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x09, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x64, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x12, 0x41, 0x77, 0x61, 0x69, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 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, 0x22, 0xaa, 0x03, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x53, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, - 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x10, - 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x73, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x61, 0x69, + 0x72, 0x6e, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x72, + 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x73, 0x73, 0x57, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x1a, 0x64, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x09, 0x61, 0x72, + 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xdc, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, + 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 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, 0x06, 0x72, 0x75, 0x6e, 0x46, 0x6f, + 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x54, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, + 0x1c, 0x63, 0x70, 0x75, 0x5f, 0x79, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x72, 0x79, + 0x5f, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x18, 0x63, 0x70, 0x75, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x76, 0x65, + 0x72, 0x79, 0x4e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, + 0x10, 0x63, 0x70, 0x75, 0x5f, 0x79, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x59, 0x69, 0x65, 0x6c, + 0x64, 0x46, 0x6f, 0x72, 0x4d, 0x73, 0x1a, 0x63, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x1a, 0x65, 0x0a, 0x0e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x53, 0x0a, + 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, - 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, + 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x1a, 0x3d, 0x0a, 0x16, 0x52, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, + 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x73, 0x1a, 0xc2, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x74, + 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, + 0x69, 0x6c, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x44, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xcb, 0x01, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x72, 0x74, + 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, + 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, + 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x4e, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, - 0x64, 0x22, 0x98, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, - 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, - 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x02, 0x0a, - 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, - 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, - 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, - 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x64, 0x0a, 0x15, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x55, 0x0a, 0x10, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0d, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, - 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x65, - 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x52, 0x0c, 0x75, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0x56, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, - 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x68, 0x69, 0x73, 0x22, - 0x4f, 0x0a, 0x11, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x22, 0x8f, 0x08, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, - 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x09, - 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xe6, + 0x0c, 0x0a, 0x1a, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x12, 0x35, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x04, 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, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x75, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, - 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, 0x77, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x56, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, - 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, - 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x72, - 0x0a, 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x12, 0x4b, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x75, 0x6e, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 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, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, 0x0a, + 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 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, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x5d, 0x0a, 0x13, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, - 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, - 0x73, 0x4e, 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x65, 0x0a, 0x18, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x75, 0x73, 0x65, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, + 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x15, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x52, 0x65, 0x75, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, - 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x59, 0x0a, 0x11, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, - 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, - 0x6e, 0x6b, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x58, 0x0a, 0x09, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x15, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, + 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, + 0x5d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, + 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, + 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x79, 0x0a, 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x4c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, + 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, + 0x66, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, + 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, + 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, + 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x09, 0x4d, 0x65, 0x6d, 0x6f, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x64, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x12, 0x41, 0x77, 0x61, 0x69, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 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, 0x22, 0xaa, 0x03, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x72, + 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x53, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, + 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, + 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, + 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x8a, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x11, - 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, - 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, - 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x63, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x33, 0x0a, 0x16, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x61, 0x67, 0x65, 0x72, 0x6c, - 0x79, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x13, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x45, 0x61, 0x67, 0x65, 0x72, 0x6c, 0x79, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, - 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, - 0xcc, 0x03, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x75, 0x73, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, - 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, - 0x65, 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, - 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, 0x69, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, - 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x0e, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, + 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x72, + 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, + 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x77, - 0x0a, 0x11, 0x4e, 0x65, 0x78, 0x75, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x0e, 0x62, 0x65, 0x66, - 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, - 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0xa4, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, 0x0a, - 0x1f, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x4f, - 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, - 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, - 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x41, 0x42, 0x41, - 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, - 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x52, 0x45, - 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x03, 0x2a, 0x40, - 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x4c, - 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x02, - 0x2a, 0xa2, 0x01, 0x0a, 0x1d, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x41, - 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x49, 0x4c, - 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, - 0x01, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x57, 0x41, - 0x49, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x43, - 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x4e, - 0x43, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, - 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x58, 0x0a, 0x18, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, - 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, - 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x02, 0x42, - 0x42, 0x0a, 0x10, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, - 0x6d, 0x65, 0x73, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x69, 0x6f, 0x2f, 0x6f, 0x6d, 0x65, 0x73, 0x2f, - 0x6c, 0x6f, 0x61, 0x64, 0x67, 0x65, 0x6e, 0x2f, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x73, - 0x69, 0x6e, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x0b, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x02, + 0x0a, 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, + 0x0a, 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, + 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x64, 0x0a, 0x15, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x55, 0x0a, 0x10, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0d, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x52, 0x0c, 0x75, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x22, 0x56, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, + 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x68, 0x69, 0x73, + 0x22, 0x4f, 0x0a, 0x11, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x22, 0x8f, 0x08, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, + 0x4e, 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x3d, 0x0a, + 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 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, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, + 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, 0x0a, 0x15, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x73, + 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, + 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, 0x4e, 0x65, + 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x56, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, + 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x41, 0x73, + 0x4e, 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x72, 0x0a, 0x11, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, + 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, + 0x41, 0x73, 0x4e, 0x65, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x59, 0x0a, 0x11, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, + 0x69, 0x6e, 0x6b, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, + 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x58, 0x0a, 0x09, 0x4d, 0x65, 0x6d, 0x6f, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x5b, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, + 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x61, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x8a, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, + 0x11, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, + 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, + 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x33, 0x0a, 0x16, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x61, 0x67, 0x65, 0x72, + 0x6c, 0x79, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x45, 0x61, 0x67, 0x65, 0x72, 0x6c, 0x79, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, + 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x10, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x22, 0xcc, 0x03, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x75, + 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, + 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, + 0x4e, 0x65, 0x78, 0x75, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, + 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x69, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x61, 0x77, 0x61, + 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x0e, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, 0x65, 0x73, 0x2e, 0x6b, 0x69, + 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x77, 0x0a, 0x11, 0x4e, 0x65, 0x78, 0x75, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x0e, 0x62, 0x65, + 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, 0x6f, 0x6d, + 0x65, 0x73, 0x2e, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0xa4, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x23, + 0x0a, 0x1f, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x50, + 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, + 0x4f, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, + 0x4e, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, + 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x41, 0x42, + 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x41, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x03, 0x2a, + 0x40, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, + 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, + 0x02, 0x2a, 0xa2, 0x01, 0x0a, 0x1d, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, + 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x49, + 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, + 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x57, + 0x41, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, + 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x57, 0x46, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x43, 0x41, + 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x58, 0x0a, 0x18, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, + 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, + 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x02, + 0x42, 0x42, 0x0a, 0x10, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x2e, + 0x6f, 0x6d, 0x65, 0x73, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x69, 0x6f, 0x2f, 0x6f, 0x6d, 0x65, 0x73, + 0x2f, 0x6c, 0x6f, 0x61, 0x64, 0x67, 0x65, 0x6e, 0x2f, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65, 0x6e, + 0x73, 0x69, 0x6e, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4545,7 +4624,7 @@ func file_kitchen_sink_proto_rawDescGZIP() []byte { } var file_kitchen_sink_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_kitchen_sink_proto_msgTypes = make([]protoimpl.MessageInfo, 51) +var file_kitchen_sink_proto_msgTypes = make([]protoimpl.MessageInfo, 52) var file_kitchen_sink_proto_goTypes = []interface{}{ (ParentClosePolicy)(0), // 0: temporal.omes.kitchen_sink.ParentClosePolicy (VersioningIntent)(0), // 1: temporal.omes.kitchen_sink.VersioningIntent @@ -4557,186 +4636,189 @@ var file_kitchen_sink_proto_goTypes = []interface{}{ (*WithStartClientAction)(nil), // 7: temporal.omes.kitchen_sink.WithStartClientAction (*ClientAction)(nil), // 8: temporal.omes.kitchen_sink.ClientAction (*DoStandaloneNexusOperation)(nil), // 9: temporal.omes.kitchen_sink.DoStandaloneNexusOperation - (*DoSignal)(nil), // 10: temporal.omes.kitchen_sink.DoSignal - (*DoDescribe)(nil), // 11: temporal.omes.kitchen_sink.DoDescribe - (*DoQuery)(nil), // 12: temporal.omes.kitchen_sink.DoQuery - (*DoUpdate)(nil), // 13: temporal.omes.kitchen_sink.DoUpdate - (*DoActionsUpdate)(nil), // 14: temporal.omes.kitchen_sink.DoActionsUpdate - (*HandlerInvocation)(nil), // 15: temporal.omes.kitchen_sink.HandlerInvocation - (*WorkflowState)(nil), // 16: temporal.omes.kitchen_sink.WorkflowState - (*WorkflowInput)(nil), // 17: temporal.omes.kitchen_sink.WorkflowInput - (*ActionSet)(nil), // 18: temporal.omes.kitchen_sink.ActionSet - (*Action)(nil), // 19: temporal.omes.kitchen_sink.Action - (*AwaitableChoice)(nil), // 20: temporal.omes.kitchen_sink.AwaitableChoice - (*TimerAction)(nil), // 21: temporal.omes.kitchen_sink.TimerAction - (*ExecuteActivityAction)(nil), // 22: temporal.omes.kitchen_sink.ExecuteActivityAction - (*ExecuteChildWorkflowAction)(nil), // 23: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction - (*AwaitWorkflowState)(nil), // 24: temporal.omes.kitchen_sink.AwaitWorkflowState - (*SendSignalAction)(nil), // 25: temporal.omes.kitchen_sink.SendSignalAction - (*CancelWorkflowAction)(nil), // 26: temporal.omes.kitchen_sink.CancelWorkflowAction - (*SetPatchMarkerAction)(nil), // 27: temporal.omes.kitchen_sink.SetPatchMarkerAction - (*UpsertSearchAttributesAction)(nil), // 28: temporal.omes.kitchen_sink.UpsertSearchAttributesAction - (*UpsertMemoAction)(nil), // 29: temporal.omes.kitchen_sink.UpsertMemoAction - (*ReturnResultAction)(nil), // 30: temporal.omes.kitchen_sink.ReturnResultAction - (*ReturnErrorAction)(nil), // 31: temporal.omes.kitchen_sink.ReturnErrorAction - (*ContinueAsNewAction)(nil), // 32: temporal.omes.kitchen_sink.ContinueAsNewAction - (*RemoteActivityOptions)(nil), // 33: temporal.omes.kitchen_sink.RemoteActivityOptions - (*ExecuteNexusOperation)(nil), // 34: temporal.omes.kitchen_sink.ExecuteNexusOperation - (*NexusHandlerInput)(nil), // 35: temporal.omes.kitchen_sink.NexusHandlerInput - (*DoSignal_DoSignalActions)(nil), // 36: temporal.omes.kitchen_sink.DoSignal.DoSignalActions - nil, // 37: temporal.omes.kitchen_sink.WorkflowState.KvsEntry - (*ExecuteActivityAction_GenericActivity)(nil), // 38: temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivity - (*ExecuteActivityAction_ResourcesActivity)(nil), // 39: temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivity - (*ExecuteActivityAction_PayloadActivity)(nil), // 40: temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivity - (*ExecuteActivityAction_ClientActivity)(nil), // 41: temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivity - (*ExecuteActivityAction_RetryableErrorActivity)(nil), // 42: temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivity - (*ExecuteActivityAction_TimeoutActivity)(nil), // 43: temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity - (*ExecuteActivityAction_HeartbeatTimeoutActivity)(nil), // 44: temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity - nil, // 45: temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry - nil, // 46: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry - nil, // 47: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry - nil, // 48: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry - nil, // 49: temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry - nil, // 50: temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry - nil, // 51: temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry - nil, // 52: temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry - nil, // 53: temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry - nil, // 54: temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry - (*durationpb.Duration)(nil), // 55: google.protobuf.Duration - (*v1.Payloads)(nil), // 56: temporal.api.common.v1.Payloads - (*emptypb.Empty)(nil), // 57: google.protobuf.Empty - (*v1.Payload)(nil), // 58: temporal.api.common.v1.Payload - (*v1.RetryPolicy)(nil), // 59: temporal.api.common.v1.RetryPolicy - (*v1.Priority)(nil), // 60: temporal.api.common.v1.Priority - (v11.WorkflowIdReusePolicy)(0), // 61: temporal.api.enums.v1.WorkflowIdReusePolicy - (*v1.Memo)(nil), // 62: temporal.api.common.v1.Memo - (*v12.Failure)(nil), // 63: temporal.api.failure.v1.Failure + (*DoStandaloneActivity)(nil), // 10: temporal.omes.kitchen_sink.DoStandaloneActivity + (*DoSignal)(nil), // 11: temporal.omes.kitchen_sink.DoSignal + (*DoDescribe)(nil), // 12: temporal.omes.kitchen_sink.DoDescribe + (*DoQuery)(nil), // 13: temporal.omes.kitchen_sink.DoQuery + (*DoUpdate)(nil), // 14: temporal.omes.kitchen_sink.DoUpdate + (*DoActionsUpdate)(nil), // 15: temporal.omes.kitchen_sink.DoActionsUpdate + (*HandlerInvocation)(nil), // 16: temporal.omes.kitchen_sink.HandlerInvocation + (*WorkflowState)(nil), // 17: temporal.omes.kitchen_sink.WorkflowState + (*WorkflowInput)(nil), // 18: temporal.omes.kitchen_sink.WorkflowInput + (*ActionSet)(nil), // 19: temporal.omes.kitchen_sink.ActionSet + (*Action)(nil), // 20: temporal.omes.kitchen_sink.Action + (*AwaitableChoice)(nil), // 21: temporal.omes.kitchen_sink.AwaitableChoice + (*TimerAction)(nil), // 22: temporal.omes.kitchen_sink.TimerAction + (*ExecuteActivityAction)(nil), // 23: temporal.omes.kitchen_sink.ExecuteActivityAction + (*ExecuteChildWorkflowAction)(nil), // 24: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction + (*AwaitWorkflowState)(nil), // 25: temporal.omes.kitchen_sink.AwaitWorkflowState + (*SendSignalAction)(nil), // 26: temporal.omes.kitchen_sink.SendSignalAction + (*CancelWorkflowAction)(nil), // 27: temporal.omes.kitchen_sink.CancelWorkflowAction + (*SetPatchMarkerAction)(nil), // 28: temporal.omes.kitchen_sink.SetPatchMarkerAction + (*UpsertSearchAttributesAction)(nil), // 29: temporal.omes.kitchen_sink.UpsertSearchAttributesAction + (*UpsertMemoAction)(nil), // 30: temporal.omes.kitchen_sink.UpsertMemoAction + (*ReturnResultAction)(nil), // 31: temporal.omes.kitchen_sink.ReturnResultAction + (*ReturnErrorAction)(nil), // 32: temporal.omes.kitchen_sink.ReturnErrorAction + (*ContinueAsNewAction)(nil), // 33: temporal.omes.kitchen_sink.ContinueAsNewAction + (*RemoteActivityOptions)(nil), // 34: temporal.omes.kitchen_sink.RemoteActivityOptions + (*ExecuteNexusOperation)(nil), // 35: temporal.omes.kitchen_sink.ExecuteNexusOperation + (*NexusHandlerInput)(nil), // 36: temporal.omes.kitchen_sink.NexusHandlerInput + (*DoSignal_DoSignalActions)(nil), // 37: temporal.omes.kitchen_sink.DoSignal.DoSignalActions + nil, // 38: temporal.omes.kitchen_sink.WorkflowState.KvsEntry + (*ExecuteActivityAction_GenericActivity)(nil), // 39: temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivity + (*ExecuteActivityAction_ResourcesActivity)(nil), // 40: temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivity + (*ExecuteActivityAction_PayloadActivity)(nil), // 41: temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivity + (*ExecuteActivityAction_ClientActivity)(nil), // 42: temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivity + (*ExecuteActivityAction_RetryableErrorActivity)(nil), // 43: temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivity + (*ExecuteActivityAction_TimeoutActivity)(nil), // 44: temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity + (*ExecuteActivityAction_HeartbeatTimeoutActivity)(nil), // 45: temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity + nil, // 46: temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry + nil, // 47: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry + nil, // 48: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry + nil, // 49: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry + nil, // 50: temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry + nil, // 51: temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry + nil, // 52: temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry + nil, // 53: temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry + nil, // 54: temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry + nil, // 55: temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry + (*durationpb.Duration)(nil), // 56: google.protobuf.Duration + (*v1.Payloads)(nil), // 57: temporal.api.common.v1.Payloads + (*emptypb.Empty)(nil), // 58: google.protobuf.Empty + (*v1.Payload)(nil), // 59: temporal.api.common.v1.Payload + (*v1.RetryPolicy)(nil), // 60: temporal.api.common.v1.RetryPolicy + (*v1.Priority)(nil), // 61: temporal.api.common.v1.Priority + (v11.WorkflowIdReusePolicy)(0), // 62: temporal.api.enums.v1.WorkflowIdReusePolicy + (*v1.Memo)(nil), // 63: temporal.api.common.v1.Memo + (*v12.Failure)(nil), // 64: temporal.api.failure.v1.Failure } var file_kitchen_sink_proto_depIdxs = []int32{ - 17, // 0: temporal.omes.kitchen_sink.TestInput.workflow_input:type_name -> temporal.omes.kitchen_sink.WorkflowInput + 18, // 0: temporal.omes.kitchen_sink.TestInput.workflow_input:type_name -> temporal.omes.kitchen_sink.WorkflowInput 5, // 1: temporal.omes.kitchen_sink.TestInput.client_sequence:type_name -> temporal.omes.kitchen_sink.ClientSequence 7, // 2: temporal.omes.kitchen_sink.TestInput.with_start_action:type_name -> temporal.omes.kitchen_sink.WithStartClientAction 6, // 3: temporal.omes.kitchen_sink.ClientSequence.action_sets:type_name -> temporal.omes.kitchen_sink.ClientActionSet 8, // 4: temporal.omes.kitchen_sink.ClientActionSet.actions:type_name -> temporal.omes.kitchen_sink.ClientAction - 55, // 5: temporal.omes.kitchen_sink.ClientActionSet.wait_at_end:type_name -> google.protobuf.Duration - 10, // 6: temporal.omes.kitchen_sink.WithStartClientAction.do_signal:type_name -> temporal.omes.kitchen_sink.DoSignal - 13, // 7: temporal.omes.kitchen_sink.WithStartClientAction.do_update:type_name -> temporal.omes.kitchen_sink.DoUpdate - 10, // 8: temporal.omes.kitchen_sink.ClientAction.do_signal:type_name -> temporal.omes.kitchen_sink.DoSignal - 12, // 9: temporal.omes.kitchen_sink.ClientAction.do_query:type_name -> temporal.omes.kitchen_sink.DoQuery - 13, // 10: temporal.omes.kitchen_sink.ClientAction.do_update:type_name -> temporal.omes.kitchen_sink.DoUpdate + 56, // 5: temporal.omes.kitchen_sink.ClientActionSet.wait_at_end:type_name -> google.protobuf.Duration + 11, // 6: temporal.omes.kitchen_sink.WithStartClientAction.do_signal:type_name -> temporal.omes.kitchen_sink.DoSignal + 14, // 7: temporal.omes.kitchen_sink.WithStartClientAction.do_update:type_name -> temporal.omes.kitchen_sink.DoUpdate + 11, // 8: temporal.omes.kitchen_sink.ClientAction.do_signal:type_name -> temporal.omes.kitchen_sink.DoSignal + 13, // 9: temporal.omes.kitchen_sink.ClientAction.do_query:type_name -> temporal.omes.kitchen_sink.DoQuery + 14, // 10: temporal.omes.kitchen_sink.ClientAction.do_update:type_name -> temporal.omes.kitchen_sink.DoUpdate 6, // 11: temporal.omes.kitchen_sink.ClientAction.nested_actions:type_name -> temporal.omes.kitchen_sink.ClientActionSet - 11, // 12: temporal.omes.kitchen_sink.ClientAction.do_describe:type_name -> temporal.omes.kitchen_sink.DoDescribe + 12, // 12: temporal.omes.kitchen_sink.ClientAction.do_describe:type_name -> temporal.omes.kitchen_sink.DoDescribe 9, // 13: temporal.omes.kitchen_sink.ClientAction.do_standalone_nexus_operation:type_name -> temporal.omes.kitchen_sink.DoStandaloneNexusOperation - 36, // 14: temporal.omes.kitchen_sink.DoSignal.do_signal_actions:type_name -> temporal.omes.kitchen_sink.DoSignal.DoSignalActions - 15, // 15: temporal.omes.kitchen_sink.DoSignal.custom:type_name -> temporal.omes.kitchen_sink.HandlerInvocation - 56, // 16: temporal.omes.kitchen_sink.DoQuery.report_state:type_name -> temporal.api.common.v1.Payloads - 15, // 17: temporal.omes.kitchen_sink.DoQuery.custom:type_name -> temporal.omes.kitchen_sink.HandlerInvocation - 14, // 18: temporal.omes.kitchen_sink.DoUpdate.do_actions:type_name -> temporal.omes.kitchen_sink.DoActionsUpdate - 15, // 19: temporal.omes.kitchen_sink.DoUpdate.custom:type_name -> temporal.omes.kitchen_sink.HandlerInvocation - 18, // 20: temporal.omes.kitchen_sink.DoActionsUpdate.do_actions:type_name -> temporal.omes.kitchen_sink.ActionSet - 57, // 21: temporal.omes.kitchen_sink.DoActionsUpdate.reject_me:type_name -> google.protobuf.Empty - 58, // 22: temporal.omes.kitchen_sink.HandlerInvocation.args:type_name -> temporal.api.common.v1.Payload - 37, // 23: temporal.omes.kitchen_sink.WorkflowState.kvs:type_name -> temporal.omes.kitchen_sink.WorkflowState.KvsEntry - 18, // 24: temporal.omes.kitchen_sink.WorkflowInput.initial_actions:type_name -> temporal.omes.kitchen_sink.ActionSet - 19, // 25: temporal.omes.kitchen_sink.ActionSet.actions:type_name -> temporal.omes.kitchen_sink.Action - 21, // 26: temporal.omes.kitchen_sink.Action.timer:type_name -> temporal.omes.kitchen_sink.TimerAction - 22, // 27: temporal.omes.kitchen_sink.Action.exec_activity:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction - 23, // 28: temporal.omes.kitchen_sink.Action.exec_child_workflow:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction - 24, // 29: temporal.omes.kitchen_sink.Action.await_workflow_state:type_name -> temporal.omes.kitchen_sink.AwaitWorkflowState - 25, // 30: temporal.omes.kitchen_sink.Action.send_signal:type_name -> temporal.omes.kitchen_sink.SendSignalAction - 26, // 31: temporal.omes.kitchen_sink.Action.cancel_workflow:type_name -> temporal.omes.kitchen_sink.CancelWorkflowAction - 27, // 32: temporal.omes.kitchen_sink.Action.set_patch_marker:type_name -> temporal.omes.kitchen_sink.SetPatchMarkerAction - 28, // 33: temporal.omes.kitchen_sink.Action.upsert_search_attributes:type_name -> temporal.omes.kitchen_sink.UpsertSearchAttributesAction - 29, // 34: temporal.omes.kitchen_sink.Action.upsert_memo:type_name -> temporal.omes.kitchen_sink.UpsertMemoAction - 16, // 35: temporal.omes.kitchen_sink.Action.set_workflow_state:type_name -> temporal.omes.kitchen_sink.WorkflowState - 30, // 36: temporal.omes.kitchen_sink.Action.return_result:type_name -> temporal.omes.kitchen_sink.ReturnResultAction - 31, // 37: temporal.omes.kitchen_sink.Action.return_error:type_name -> temporal.omes.kitchen_sink.ReturnErrorAction - 32, // 38: temporal.omes.kitchen_sink.Action.continue_as_new:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction - 18, // 39: temporal.omes.kitchen_sink.Action.nested_action_set:type_name -> temporal.omes.kitchen_sink.ActionSet - 34, // 40: temporal.omes.kitchen_sink.Action.nexus_operation:type_name -> temporal.omes.kitchen_sink.ExecuteNexusOperation - 57, // 41: temporal.omes.kitchen_sink.AwaitableChoice.wait_finish:type_name -> google.protobuf.Empty - 57, // 42: temporal.omes.kitchen_sink.AwaitableChoice.abandon:type_name -> google.protobuf.Empty - 57, // 43: temporal.omes.kitchen_sink.AwaitableChoice.cancel_before_started:type_name -> google.protobuf.Empty - 57, // 44: temporal.omes.kitchen_sink.AwaitableChoice.cancel_after_started:type_name -> google.protobuf.Empty - 57, // 45: temporal.omes.kitchen_sink.AwaitableChoice.cancel_after_completed:type_name -> google.protobuf.Empty - 20, // 46: temporal.omes.kitchen_sink.TimerAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice - 38, // 47: temporal.omes.kitchen_sink.ExecuteActivityAction.generic:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivity - 55, // 48: temporal.omes.kitchen_sink.ExecuteActivityAction.delay:type_name -> google.protobuf.Duration - 57, // 49: temporal.omes.kitchen_sink.ExecuteActivityAction.noop:type_name -> google.protobuf.Empty - 39, // 50: temporal.omes.kitchen_sink.ExecuteActivityAction.resources:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivity - 40, // 51: temporal.omes.kitchen_sink.ExecuteActivityAction.payload:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivity - 41, // 52: temporal.omes.kitchen_sink.ExecuteActivityAction.client:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivity - 42, // 53: temporal.omes.kitchen_sink.ExecuteActivityAction.retryable_error:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivity - 43, // 54: temporal.omes.kitchen_sink.ExecuteActivityAction.timeout:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity - 44, // 55: temporal.omes.kitchen_sink.ExecuteActivityAction.heartbeat:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity - 45, // 56: temporal.omes.kitchen_sink.ExecuteActivityAction.headers:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry - 55, // 57: temporal.omes.kitchen_sink.ExecuteActivityAction.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 55, // 58: temporal.omes.kitchen_sink.ExecuteActivityAction.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 55, // 59: temporal.omes.kitchen_sink.ExecuteActivityAction.start_to_close_timeout:type_name -> google.protobuf.Duration - 55, // 60: temporal.omes.kitchen_sink.ExecuteActivityAction.heartbeat_timeout:type_name -> google.protobuf.Duration - 59, // 61: temporal.omes.kitchen_sink.ExecuteActivityAction.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy - 57, // 62: temporal.omes.kitchen_sink.ExecuteActivityAction.is_local:type_name -> google.protobuf.Empty - 33, // 63: temporal.omes.kitchen_sink.ExecuteActivityAction.remote:type_name -> temporal.omes.kitchen_sink.RemoteActivityOptions - 20, // 64: temporal.omes.kitchen_sink.ExecuteActivityAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice - 60, // 65: temporal.omes.kitchen_sink.ExecuteActivityAction.priority:type_name -> temporal.api.common.v1.Priority - 58, // 66: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.input:type_name -> temporal.api.common.v1.Payload - 55, // 67: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_execution_timeout:type_name -> google.protobuf.Duration - 55, // 68: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_run_timeout:type_name -> google.protobuf.Duration - 55, // 69: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_task_timeout:type_name -> google.protobuf.Duration - 0, // 70: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.parent_close_policy:type_name -> temporal.omes.kitchen_sink.ParentClosePolicy - 61, // 71: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_id_reuse_policy:type_name -> temporal.api.enums.v1.WorkflowIdReusePolicy - 59, // 72: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy - 46, // 73: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.headers:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry - 47, // 74: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.memo:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry - 48, // 75: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.search_attributes:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry - 2, // 76: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.cancellation_type:type_name -> temporal.omes.kitchen_sink.ChildWorkflowCancellationType - 1, // 77: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.versioning_intent:type_name -> temporal.omes.kitchen_sink.VersioningIntent - 20, // 78: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice - 58, // 79: temporal.omes.kitchen_sink.SendSignalAction.args:type_name -> temporal.api.common.v1.Payload - 49, // 80: temporal.omes.kitchen_sink.SendSignalAction.headers:type_name -> temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry - 20, // 81: temporal.omes.kitchen_sink.SendSignalAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice - 19, // 82: temporal.omes.kitchen_sink.SetPatchMarkerAction.inner_action:type_name -> temporal.omes.kitchen_sink.Action - 50, // 83: temporal.omes.kitchen_sink.UpsertSearchAttributesAction.search_attributes:type_name -> temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry - 62, // 84: temporal.omes.kitchen_sink.UpsertMemoAction.upserted_memo:type_name -> temporal.api.common.v1.Memo - 58, // 85: temporal.omes.kitchen_sink.ReturnResultAction.return_this:type_name -> temporal.api.common.v1.Payload - 63, // 86: temporal.omes.kitchen_sink.ReturnErrorAction.failure:type_name -> temporal.api.failure.v1.Failure - 58, // 87: temporal.omes.kitchen_sink.ContinueAsNewAction.arguments:type_name -> temporal.api.common.v1.Payload - 55, // 88: temporal.omes.kitchen_sink.ContinueAsNewAction.workflow_run_timeout:type_name -> google.protobuf.Duration - 55, // 89: temporal.omes.kitchen_sink.ContinueAsNewAction.workflow_task_timeout:type_name -> google.protobuf.Duration - 51, // 90: temporal.omes.kitchen_sink.ContinueAsNewAction.memo:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry - 52, // 91: temporal.omes.kitchen_sink.ContinueAsNewAction.headers:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry - 53, // 92: temporal.omes.kitchen_sink.ContinueAsNewAction.search_attributes:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry - 59, // 93: temporal.omes.kitchen_sink.ContinueAsNewAction.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy - 1, // 94: temporal.omes.kitchen_sink.ContinueAsNewAction.versioning_intent:type_name -> temporal.omes.kitchen_sink.VersioningIntent - 3, // 95: temporal.omes.kitchen_sink.RemoteActivityOptions.cancellation_type:type_name -> temporal.omes.kitchen_sink.ActivityCancellationType - 1, // 96: temporal.omes.kitchen_sink.RemoteActivityOptions.versioning_intent:type_name -> temporal.omes.kitchen_sink.VersioningIntent - 54, // 97: temporal.omes.kitchen_sink.ExecuteNexusOperation.headers:type_name -> temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry - 20, // 98: temporal.omes.kitchen_sink.ExecuteNexusOperation.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice - 18, // 99: temporal.omes.kitchen_sink.ExecuteNexusOperation.before_actions:type_name -> temporal.omes.kitchen_sink.ActionSet - 18, // 100: temporal.omes.kitchen_sink.NexusHandlerInput.before_actions:type_name -> temporal.omes.kitchen_sink.ActionSet - 18, // 101: temporal.omes.kitchen_sink.DoSignal.DoSignalActions.do_actions:type_name -> temporal.omes.kitchen_sink.ActionSet - 18, // 102: temporal.omes.kitchen_sink.DoSignal.DoSignalActions.do_actions_in_main:type_name -> temporal.omes.kitchen_sink.ActionSet - 58, // 103: temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivity.arguments:type_name -> temporal.api.common.v1.Payload - 55, // 104: temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivity.run_for:type_name -> google.protobuf.Duration - 5, // 105: temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivity.client_sequence:type_name -> temporal.omes.kitchen_sink.ClientSequence - 55, // 106: temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity.success_duration:type_name -> google.protobuf.Duration - 55, // 107: temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity.failure_duration:type_name -> google.protobuf.Duration - 55, // 108: temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity.success_duration:type_name -> google.protobuf.Duration - 55, // 109: temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity.failure_duration:type_name -> google.protobuf.Duration - 58, // 110: temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 111: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 112: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 113: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 114: temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 115: temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 116: temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 117: temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload - 58, // 118: temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload - 119, // [119:119] is the sub-list for method output_type - 119, // [119:119] is the sub-list for method input_type - 119, // [119:119] is the sub-list for extension type_name - 119, // [119:119] is the sub-list for extension extendee - 0, // [0:119] is the sub-list for field type_name + 10, // 14: temporal.omes.kitchen_sink.ClientAction.do_standalone_activity:type_name -> temporal.omes.kitchen_sink.DoStandaloneActivity + 23, // 15: temporal.omes.kitchen_sink.DoStandaloneActivity.activity:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction + 37, // 16: temporal.omes.kitchen_sink.DoSignal.do_signal_actions:type_name -> temporal.omes.kitchen_sink.DoSignal.DoSignalActions + 16, // 17: temporal.omes.kitchen_sink.DoSignal.custom:type_name -> temporal.omes.kitchen_sink.HandlerInvocation + 57, // 18: temporal.omes.kitchen_sink.DoQuery.report_state:type_name -> temporal.api.common.v1.Payloads + 16, // 19: temporal.omes.kitchen_sink.DoQuery.custom:type_name -> temporal.omes.kitchen_sink.HandlerInvocation + 15, // 20: temporal.omes.kitchen_sink.DoUpdate.do_actions:type_name -> temporal.omes.kitchen_sink.DoActionsUpdate + 16, // 21: temporal.omes.kitchen_sink.DoUpdate.custom:type_name -> temporal.omes.kitchen_sink.HandlerInvocation + 19, // 22: temporal.omes.kitchen_sink.DoActionsUpdate.do_actions:type_name -> temporal.omes.kitchen_sink.ActionSet + 58, // 23: temporal.omes.kitchen_sink.DoActionsUpdate.reject_me:type_name -> google.protobuf.Empty + 59, // 24: temporal.omes.kitchen_sink.HandlerInvocation.args:type_name -> temporal.api.common.v1.Payload + 38, // 25: temporal.omes.kitchen_sink.WorkflowState.kvs:type_name -> temporal.omes.kitchen_sink.WorkflowState.KvsEntry + 19, // 26: temporal.omes.kitchen_sink.WorkflowInput.initial_actions:type_name -> temporal.omes.kitchen_sink.ActionSet + 20, // 27: temporal.omes.kitchen_sink.ActionSet.actions:type_name -> temporal.omes.kitchen_sink.Action + 22, // 28: temporal.omes.kitchen_sink.Action.timer:type_name -> temporal.omes.kitchen_sink.TimerAction + 23, // 29: temporal.omes.kitchen_sink.Action.exec_activity:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction + 24, // 30: temporal.omes.kitchen_sink.Action.exec_child_workflow:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction + 25, // 31: temporal.omes.kitchen_sink.Action.await_workflow_state:type_name -> temporal.omes.kitchen_sink.AwaitWorkflowState + 26, // 32: temporal.omes.kitchen_sink.Action.send_signal:type_name -> temporal.omes.kitchen_sink.SendSignalAction + 27, // 33: temporal.omes.kitchen_sink.Action.cancel_workflow:type_name -> temporal.omes.kitchen_sink.CancelWorkflowAction + 28, // 34: temporal.omes.kitchen_sink.Action.set_patch_marker:type_name -> temporal.omes.kitchen_sink.SetPatchMarkerAction + 29, // 35: temporal.omes.kitchen_sink.Action.upsert_search_attributes:type_name -> temporal.omes.kitchen_sink.UpsertSearchAttributesAction + 30, // 36: temporal.omes.kitchen_sink.Action.upsert_memo:type_name -> temporal.omes.kitchen_sink.UpsertMemoAction + 17, // 37: temporal.omes.kitchen_sink.Action.set_workflow_state:type_name -> temporal.omes.kitchen_sink.WorkflowState + 31, // 38: temporal.omes.kitchen_sink.Action.return_result:type_name -> temporal.omes.kitchen_sink.ReturnResultAction + 32, // 39: temporal.omes.kitchen_sink.Action.return_error:type_name -> temporal.omes.kitchen_sink.ReturnErrorAction + 33, // 40: temporal.omes.kitchen_sink.Action.continue_as_new:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction + 19, // 41: temporal.omes.kitchen_sink.Action.nested_action_set:type_name -> temporal.omes.kitchen_sink.ActionSet + 35, // 42: temporal.omes.kitchen_sink.Action.nexus_operation:type_name -> temporal.omes.kitchen_sink.ExecuteNexusOperation + 58, // 43: temporal.omes.kitchen_sink.AwaitableChoice.wait_finish:type_name -> google.protobuf.Empty + 58, // 44: temporal.omes.kitchen_sink.AwaitableChoice.abandon:type_name -> google.protobuf.Empty + 58, // 45: temporal.omes.kitchen_sink.AwaitableChoice.cancel_before_started:type_name -> google.protobuf.Empty + 58, // 46: temporal.omes.kitchen_sink.AwaitableChoice.cancel_after_started:type_name -> google.protobuf.Empty + 58, // 47: temporal.omes.kitchen_sink.AwaitableChoice.cancel_after_completed:type_name -> google.protobuf.Empty + 21, // 48: temporal.omes.kitchen_sink.TimerAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice + 39, // 49: temporal.omes.kitchen_sink.ExecuteActivityAction.generic:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivity + 56, // 50: temporal.omes.kitchen_sink.ExecuteActivityAction.delay:type_name -> google.protobuf.Duration + 58, // 51: temporal.omes.kitchen_sink.ExecuteActivityAction.noop:type_name -> google.protobuf.Empty + 40, // 52: temporal.omes.kitchen_sink.ExecuteActivityAction.resources:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivity + 41, // 53: temporal.omes.kitchen_sink.ExecuteActivityAction.payload:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivity + 42, // 54: temporal.omes.kitchen_sink.ExecuteActivityAction.client:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivity + 43, // 55: temporal.omes.kitchen_sink.ExecuteActivityAction.retryable_error:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivity + 44, // 56: temporal.omes.kitchen_sink.ExecuteActivityAction.timeout:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity + 45, // 57: temporal.omes.kitchen_sink.ExecuteActivityAction.heartbeat:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity + 46, // 58: temporal.omes.kitchen_sink.ExecuteActivityAction.headers:type_name -> temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry + 56, // 59: temporal.omes.kitchen_sink.ExecuteActivityAction.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 56, // 60: temporal.omes.kitchen_sink.ExecuteActivityAction.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 56, // 61: temporal.omes.kitchen_sink.ExecuteActivityAction.start_to_close_timeout:type_name -> google.protobuf.Duration + 56, // 62: temporal.omes.kitchen_sink.ExecuteActivityAction.heartbeat_timeout:type_name -> google.protobuf.Duration + 60, // 63: temporal.omes.kitchen_sink.ExecuteActivityAction.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy + 58, // 64: temporal.omes.kitchen_sink.ExecuteActivityAction.is_local:type_name -> google.protobuf.Empty + 34, // 65: temporal.omes.kitchen_sink.ExecuteActivityAction.remote:type_name -> temporal.omes.kitchen_sink.RemoteActivityOptions + 21, // 66: temporal.omes.kitchen_sink.ExecuteActivityAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice + 61, // 67: temporal.omes.kitchen_sink.ExecuteActivityAction.priority:type_name -> temporal.api.common.v1.Priority + 59, // 68: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.input:type_name -> temporal.api.common.v1.Payload + 56, // 69: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_execution_timeout:type_name -> google.protobuf.Duration + 56, // 70: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_run_timeout:type_name -> google.protobuf.Duration + 56, // 71: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_task_timeout:type_name -> google.protobuf.Duration + 0, // 72: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.parent_close_policy:type_name -> temporal.omes.kitchen_sink.ParentClosePolicy + 62, // 73: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.workflow_id_reuse_policy:type_name -> temporal.api.enums.v1.WorkflowIdReusePolicy + 60, // 74: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy + 47, // 75: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.headers:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry + 48, // 76: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.memo:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry + 49, // 77: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.search_attributes:type_name -> temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry + 2, // 78: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.cancellation_type:type_name -> temporal.omes.kitchen_sink.ChildWorkflowCancellationType + 1, // 79: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.versioning_intent:type_name -> temporal.omes.kitchen_sink.VersioningIntent + 21, // 80: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice + 59, // 81: temporal.omes.kitchen_sink.SendSignalAction.args:type_name -> temporal.api.common.v1.Payload + 50, // 82: temporal.omes.kitchen_sink.SendSignalAction.headers:type_name -> temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry + 21, // 83: temporal.omes.kitchen_sink.SendSignalAction.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice + 20, // 84: temporal.omes.kitchen_sink.SetPatchMarkerAction.inner_action:type_name -> temporal.omes.kitchen_sink.Action + 51, // 85: temporal.omes.kitchen_sink.UpsertSearchAttributesAction.search_attributes:type_name -> temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry + 63, // 86: temporal.omes.kitchen_sink.UpsertMemoAction.upserted_memo:type_name -> temporal.api.common.v1.Memo + 59, // 87: temporal.omes.kitchen_sink.ReturnResultAction.return_this:type_name -> temporal.api.common.v1.Payload + 64, // 88: temporal.omes.kitchen_sink.ReturnErrorAction.failure:type_name -> temporal.api.failure.v1.Failure + 59, // 89: temporal.omes.kitchen_sink.ContinueAsNewAction.arguments:type_name -> temporal.api.common.v1.Payload + 56, // 90: temporal.omes.kitchen_sink.ContinueAsNewAction.workflow_run_timeout:type_name -> google.protobuf.Duration + 56, // 91: temporal.omes.kitchen_sink.ContinueAsNewAction.workflow_task_timeout:type_name -> google.protobuf.Duration + 52, // 92: temporal.omes.kitchen_sink.ContinueAsNewAction.memo:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry + 53, // 93: temporal.omes.kitchen_sink.ContinueAsNewAction.headers:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry + 54, // 94: temporal.omes.kitchen_sink.ContinueAsNewAction.search_attributes:type_name -> temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry + 60, // 95: temporal.omes.kitchen_sink.ContinueAsNewAction.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy + 1, // 96: temporal.omes.kitchen_sink.ContinueAsNewAction.versioning_intent:type_name -> temporal.omes.kitchen_sink.VersioningIntent + 3, // 97: temporal.omes.kitchen_sink.RemoteActivityOptions.cancellation_type:type_name -> temporal.omes.kitchen_sink.ActivityCancellationType + 1, // 98: temporal.omes.kitchen_sink.RemoteActivityOptions.versioning_intent:type_name -> temporal.omes.kitchen_sink.VersioningIntent + 55, // 99: temporal.omes.kitchen_sink.ExecuteNexusOperation.headers:type_name -> temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry + 21, // 100: temporal.omes.kitchen_sink.ExecuteNexusOperation.awaitable_choice:type_name -> temporal.omes.kitchen_sink.AwaitableChoice + 19, // 101: temporal.omes.kitchen_sink.ExecuteNexusOperation.before_actions:type_name -> temporal.omes.kitchen_sink.ActionSet + 19, // 102: temporal.omes.kitchen_sink.NexusHandlerInput.before_actions:type_name -> temporal.omes.kitchen_sink.ActionSet + 19, // 103: temporal.omes.kitchen_sink.DoSignal.DoSignalActions.do_actions:type_name -> temporal.omes.kitchen_sink.ActionSet + 19, // 104: temporal.omes.kitchen_sink.DoSignal.DoSignalActions.do_actions_in_main:type_name -> temporal.omes.kitchen_sink.ActionSet + 59, // 105: temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivity.arguments:type_name -> temporal.api.common.v1.Payload + 56, // 106: temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivity.run_for:type_name -> google.protobuf.Duration + 5, // 107: temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivity.client_sequence:type_name -> temporal.omes.kitchen_sink.ClientSequence + 56, // 108: temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity.success_duration:type_name -> google.protobuf.Duration + 56, // 109: temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivity.failure_duration:type_name -> google.protobuf.Duration + 56, // 110: temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity.success_duration:type_name -> google.protobuf.Duration + 56, // 111: temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivity.failure_duration:type_name -> google.protobuf.Duration + 59, // 112: temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 113: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 114: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 115: temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 116: temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 117: temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 118: temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 119: temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry.value:type_name -> temporal.api.common.v1.Payload + 59, // 120: temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload + 121, // [121:121] is the sub-list for method output_type + 121, // [121:121] is the sub-list for method input_type + 121, // [121:121] is the sub-list for extension type_name + 121, // [121:121] is the sub-list for extension extendee + 0, // [0:121] is the sub-list for field type_name } func init() { file_kitchen_sink_proto_init() } @@ -4818,7 +4900,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoSignal); i { + switch v := v.(*DoStandaloneActivity); i { case 0: return &v.state case 1: @@ -4830,7 +4912,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoDescribe); i { + switch v := v.(*DoSignal); i { case 0: return &v.state case 1: @@ -4842,7 +4924,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoQuery); i { + switch v := v.(*DoDescribe); i { case 0: return &v.state case 1: @@ -4854,7 +4936,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoUpdate); i { + switch v := v.(*DoQuery); i { case 0: return &v.state case 1: @@ -4866,7 +4948,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoActionsUpdate); i { + switch v := v.(*DoUpdate); i { case 0: return &v.state case 1: @@ -4878,7 +4960,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HandlerInvocation); i { + switch v := v.(*DoActionsUpdate); i { case 0: return &v.state case 1: @@ -4890,7 +4972,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkflowState); i { + switch v := v.(*HandlerInvocation); i { case 0: return &v.state case 1: @@ -4902,7 +4984,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkflowInput); i { + switch v := v.(*WorkflowState); i { case 0: return &v.state case 1: @@ -4914,7 +4996,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionSet); i { + switch v := v.(*WorkflowInput); i { case 0: return &v.state case 1: @@ -4926,7 +5008,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { + switch v := v.(*ActionSet); i { case 0: return &v.state case 1: @@ -4938,7 +5020,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AwaitableChoice); i { + switch v := v.(*Action); i { case 0: return &v.state case 1: @@ -4950,7 +5032,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimerAction); i { + switch v := v.(*AwaitableChoice); i { case 0: return &v.state case 1: @@ -4962,7 +5044,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecuteActivityAction); i { + switch v := v.(*TimerAction); i { case 0: return &v.state case 1: @@ -4974,7 +5056,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecuteChildWorkflowAction); i { + switch v := v.(*ExecuteActivityAction); i { case 0: return &v.state case 1: @@ -4986,7 +5068,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AwaitWorkflowState); i { + switch v := v.(*ExecuteChildWorkflowAction); i { case 0: return &v.state case 1: @@ -4998,7 +5080,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendSignalAction); i { + switch v := v.(*AwaitWorkflowState); i { case 0: return &v.state case 1: @@ -5010,7 +5092,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CancelWorkflowAction); i { + switch v := v.(*SendSignalAction); i { case 0: return &v.state case 1: @@ -5022,7 +5104,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetPatchMarkerAction); i { + switch v := v.(*CancelWorkflowAction); i { case 0: return &v.state case 1: @@ -5034,7 +5116,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertSearchAttributesAction); i { + switch v := v.(*SetPatchMarkerAction); i { case 0: return &v.state case 1: @@ -5046,7 +5128,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertMemoAction); i { + switch v := v.(*UpsertSearchAttributesAction); i { case 0: return &v.state case 1: @@ -5058,7 +5140,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReturnResultAction); i { + switch v := v.(*UpsertMemoAction); i { case 0: return &v.state case 1: @@ -5070,7 +5152,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReturnErrorAction); i { + switch v := v.(*ReturnResultAction); i { case 0: return &v.state case 1: @@ -5082,7 +5164,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContinueAsNewAction); i { + switch v := v.(*ReturnErrorAction); i { case 0: return &v.state case 1: @@ -5094,7 +5176,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoteActivityOptions); i { + switch v := v.(*ContinueAsNewAction); i { case 0: return &v.state case 1: @@ -5106,7 +5188,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecuteNexusOperation); i { + switch v := v.(*RemoteActivityOptions); i { case 0: return &v.state case 1: @@ -5118,7 +5200,7 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NexusHandlerInput); i { + switch v := v.(*ExecuteNexusOperation); i { case 0: return &v.state case 1: @@ -5130,6 +5212,18 @@ func file_kitchen_sink_proto_init() { } } file_kitchen_sink_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NexusHandlerInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_kitchen_sink_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DoSignal_DoSignalActions); i { case 0: return &v.state @@ -5141,7 +5235,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_GenericActivity); i { case 0: return &v.state @@ -5153,7 +5247,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_ResourcesActivity); i { case 0: return &v.state @@ -5165,7 +5259,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_PayloadActivity); i { case 0: return &v.state @@ -5177,7 +5271,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_ClientActivity); i { case 0: return &v.state @@ -5189,7 +5283,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_RetryableErrorActivity); i { case 0: return &v.state @@ -5201,7 +5295,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_TimeoutActivity); i { case 0: return &v.state @@ -5213,7 +5307,7 @@ func file_kitchen_sink_proto_init() { return nil } } - file_kitchen_sink_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_kitchen_sink_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteActivityAction_HeartbeatTimeoutActivity); i { case 0: return &v.state @@ -5237,24 +5331,25 @@ func file_kitchen_sink_proto_init() { (*ClientAction_NestedActions)(nil), (*ClientAction_DoDescribe)(nil), (*ClientAction_DoStandaloneNexusOperation)(nil), + (*ClientAction_DoStandaloneActivity)(nil), } - file_kitchen_sink_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[7].OneofWrappers = []interface{}{ (*DoSignal_DoSignalActions_)(nil), (*DoSignal_Custom)(nil), } - file_kitchen_sink_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[9].OneofWrappers = []interface{}{ (*DoQuery_ReportState)(nil), (*DoQuery_Custom)(nil), } - file_kitchen_sink_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[10].OneofWrappers = []interface{}{ (*DoUpdate_DoActions)(nil), (*DoUpdate_Custom)(nil), } - file_kitchen_sink_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[11].OneofWrappers = []interface{}{ (*DoActionsUpdate_DoActions)(nil), (*DoActionsUpdate_RejectMe)(nil), } - file_kitchen_sink_proto_msgTypes[15].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[16].OneofWrappers = []interface{}{ (*Action_Timer)(nil), (*Action_ExecActivity)(nil), (*Action_ExecChildWorkflow)(nil), @@ -5271,14 +5366,14 @@ func file_kitchen_sink_proto_init() { (*Action_NestedActionSet)(nil), (*Action_NexusOperation)(nil), } - file_kitchen_sink_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[17].OneofWrappers = []interface{}{ (*AwaitableChoice_WaitFinish)(nil), (*AwaitableChoice_Abandon)(nil), (*AwaitableChoice_CancelBeforeStarted)(nil), (*AwaitableChoice_CancelAfterStarted)(nil), (*AwaitableChoice_CancelAfterCompleted)(nil), } - file_kitchen_sink_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[19].OneofWrappers = []interface{}{ (*ExecuteActivityAction_Generic)(nil), (*ExecuteActivityAction_Delay)(nil), (*ExecuteActivityAction_Noop)(nil), @@ -5291,7 +5386,7 @@ func file_kitchen_sink_proto_init() { (*ExecuteActivityAction_IsLocal)(nil), (*ExecuteActivityAction_Remote)(nil), } - file_kitchen_sink_proto_msgTypes[32].OneofWrappers = []interface{}{ + file_kitchen_sink_proto_msgTypes[33].OneofWrappers = []interface{}{ (*DoSignal_DoSignalActions_DoActions)(nil), (*DoSignal_DoSignalActions_DoActionsInMain)(nil), } @@ -5301,7 +5396,7 @@ func file_kitchen_sink_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_kitchen_sink_proto_rawDesc, NumEnums: 4, - NumMessages: 51, + NumMessages: 52, NumExtensions: 0, NumServices: 0, }, diff --git a/scenarios/throughput_stress.go b/scenarios/throughput_stress.go index 6d6d93891..d1e0f4284 100644 --- a/scenarios/throughput_stress.go +++ b/scenarios/throughput_stress.go @@ -16,6 +16,7 @@ import ( "go.temporal.io/api/common/v1" "go.temporal.io/api/workflowservice/v1" "go.temporal.io/sdk/temporal" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" ) @@ -46,6 +47,11 @@ const ( // Requires nexus-endpoint to also be set. // Default is false. IncludeStandaloneNexusFlag = "include-standalone-nexus" + // IncludeStandaloneActivityFlag enables standalone activities (activities started outside + // any workflow context via StartActivityExecution) in throughput_stress. + // Requires server support for standalone activities (dynamic config `activity.enableStandalone`). + // Default is false. + IncludeStandaloneActivityFlag = "include-standalone-activity" ) type tpsState struct { @@ -73,6 +79,7 @@ type tpsConfig struct { IncludeRetryScenarios bool IncludeDescribe bool IncludeStandaloneNexus bool + IncludeStandaloneActivity bool } type tpsExecutor struct { @@ -90,8 +97,8 @@ var _ loadgen.Configurable = (*tpsExecutor)(nil) func init() { loadgen.MustRegisterScenario(loadgen.Scenario{ Description: fmt.Sprintf( - "Throughput stress scenario. Use --option with '%s', '%s', '%s', '%s' to control internal parameters", - IterFlag, ContinueAsNewAfterIterFlag, IncludeRetryScenariosFlag, IncludeDescribeFlag), + "Throughput stress scenario. Use --option with '%s', '%s', '%s', '%s', '%s', '%s' to control internal parameters", + IterFlag, ContinueAsNewAfterIterFlag, IncludeRetryScenariosFlag, IncludeDescribeFlag, IncludeStandaloneNexusFlag, IncludeStandaloneActivityFlag), ExecutorFn: func() loadgen.Executor { return newThroughputStressExecutor() }, }) } @@ -177,6 +184,7 @@ func (t *tpsExecutor) Configure(info loadgen.ScenarioInfo) error { if config.IncludeStandaloneNexus && config.NexusEndpoint == "" { return fmt.Errorf("%s requires %s to be set", IncludeStandaloneNexusFlag, NexusEndpointFlag) } + config.IncludeStandaloneActivity = info.ScenarioOptionBool(IncludeStandaloneActivityFlag, false) t.config = config t.rng = rand.New(rand.NewSource(config.RngSeed)) @@ -451,6 +459,11 @@ func (t *tpsExecutor) createActionsChunk( } } + // Add standalone activities, if configured. + if t.config.IncludeStandaloneActivity { + asyncActions = append(asyncActions, t.createStandaloneActivityAction(loadgen.TaskQueueForRun(run.RunID))) + } + chunkActions = append(chunkActions, syncActions...) chunkActions = append(chunkActions, &Action{ Variant: &Action_NestedActionSet{ @@ -681,6 +694,29 @@ func (t *tpsExecutor) createStandaloneNexusOperationAction(operation string) *Ac }), DefaultRemoteActivity) } +func (t *tpsExecutor) createStandaloneActivityAction(taskQueue string) *Action { + return ClientActivity(ClientActions(&ClientAction{ + Variant: &ClientAction_DoStandaloneActivity{ + DoStandaloneActivity: &DoStandaloneActivity{ + Activity: &ExecuteActivityAction{ + ActivityType: &ExecuteActivityAction_Payload{ + Payload: &ExecuteActivityAction_PayloadActivity{ + BytesToReceive: 256, + BytesToReturn: 256, + }, + }, + TaskQueue: taskQueue, + StartToCloseTimeout: durationpb.New(30 * time.Second), + RetryPolicy: &common.RetryPolicy{ + InitialInterval: durationpb.New(100 * time.Millisecond), + BackoffCoefficient: 1, + }, + }, + }, + }, + }), DefaultRemoteActivity) +} + func (t *tpsExecutor) maybeWithStart(likelihood float64) bool { t.lock.Lock() defer t.lock.Unlock() diff --git a/versions.env b/versions.env index 1cc7097ea..82eaedc19 100644 --- a/versions.env +++ b/versions.env @@ -14,7 +14,7 @@ RUBY_VERSION=3.3 # SDK versions DOTNET_SDK_VERSION=1.15.0 GO_SDK_VERSION=1.44.0 -JAVA_SDK_VERSION=1.31.0 +JAVA_SDK_VERSION=1.35.0 PYTHON_SDK_VERSION=1.23.0 RUBY_SDK_VERSION=1.5.0 TYPESCRIPT_SDK_VERSION=1.18.1 diff --git a/workers/dotnet/Temporalio.Omes/protos/KitchenSink.cs b/workers/dotnet/Temporalio.Omes/protos/KitchenSink.cs index 436b6926c..8b2ac462e 100644 --- a/workers/dotnet/Temporalio.Omes/protos/KitchenSink.cs +++ b/workers/dotnet/Temporalio.Omes/protos/KitchenSink.cs @@ -43,7 +43,7 @@ static KitchenSinkReflection() { "X2VuZBgEIAEoCCKYAQoVV2l0aFN0YXJ0Q2xpZW50QWN0aW9uEjkKCWRvX3Np", "Z25hbBgBIAEoCzIkLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkRvU2ln", "bmFsSAASOQoJZG9fdXBkYXRlGAIgASgLMiQudGVtcG9yYWwub21lcy5raXRj", - "aGVuX3NpbmsuRG9VcGRhdGVIAEIJCgd2YXJpYW50Iq8DCgxDbGllbnRBY3Rp", + "aGVuX3NpbmsuRG9VcGRhdGVIAEIJCgd2YXJpYW50IoMECgxDbGllbnRBY3Rp", "b24SOQoJZG9fc2lnbmFsGAEgASgLMiQudGVtcG9yYWwub21lcy5raXRjaGVu", "X3NpbmsuRG9TaWduYWxIABI3Cghkb19xdWVyeRgCIAEoCzIjLnRlbXBvcmFs", "Lm9tZXMua2l0Y2hlbl9zaW5rLkRvUXVlcnlIABI5Cglkb191cGRhdGUYAyAB", @@ -53,224 +53,227 @@ static KitchenSinkReflection() { "Ji50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5Eb0Rlc2NyaWJlSAASXwod", "ZG9fc3RhbmRhbG9uZV9uZXh1c19vcGVyYXRpb24YBiABKAsyNi50ZW1wb3Jh", "bC5vbWVzLmtpdGNoZW5fc2luay5Eb1N0YW5kYWxvbmVOZXh1c09wZXJhdGlv", - "bkgAQgkKB3ZhcmlhbnQiUgoaRG9TdGFuZGFsb25lTmV4dXNPcGVyYXRpb24S", - "EAoIZW5kcG9pbnQYASABKAkSDwoHc2VydmljZRgCIAEoCRIRCglvcGVyYXRp", - "b24YAyABKAki8QIKCERvU2lnbmFsElEKEWRvX3NpZ25hbF9hY3Rpb25zGAEg", - "ASgLMjQudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuRG9TaWduYWwuRG9T", - "aWduYWxBY3Rpb25zSAASPwoGY3VzdG9tGAIgASgLMi0udGVtcG9yYWwub21l", - "cy5raXRjaGVuX3NpbmsuSGFuZGxlckludm9jYXRpb25IABISCgp3aXRoX3N0", - "YXJ0GAMgASgIGrEBCg9Eb1NpZ25hbEFjdGlvbnMSOwoKZG9fYWN0aW9ucxgB", - "IAEoCzIlLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldEgA", - "EkMKEmRvX2FjdGlvbnNfaW5fbWFpbhgCIAEoCzIlLnRlbXBvcmFsLm9tZXMu", - "a2l0Y2hlbl9zaW5rLkFjdGlvblNldEgAEhEKCXNpZ25hbF9pZBgDIAEoBUIJ", - "Cgd2YXJpYW50QgkKB3ZhcmlhbnQiDAoKRG9EZXNjcmliZSKpAQoHRG9RdWVy", - "eRI4CgxyZXBvcnRfc3RhdGUYASABKAsyIC50ZW1wb3JhbC5hcGkuY29tbW9u", - "LnYxLlBheWxvYWRzSAASPwoGY3VzdG9tGAIgASgLMi0udGVtcG9yYWwub21l", - "cy5raXRjaGVuX3NpbmsuSGFuZGxlckludm9jYXRpb25IABIYChBmYWlsdXJl", - "X2V4cGVjdGVkGAogASgIQgkKB3ZhcmlhbnQixwEKCERvVXBkYXRlEkEKCmRv", - "X2FjdGlvbnMYASABKAsyKy50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5E", - "b0FjdGlvbnNVcGRhdGVIABI/CgZjdXN0b20YAiABKAsyLS50ZW1wb3JhbC5v", - "bWVzLmtpdGNoZW5fc2luay5IYW5kbGVySW52b2NhdGlvbkgAEhIKCndpdGhf", - "c3RhcnQYAyABKAgSGAoQZmFpbHVyZV9leHBlY3RlZBgKIAEoCEIJCgd2YXJp", - "YW50IoYBCg9Eb0FjdGlvbnNVcGRhdGUSOwoKZG9fYWN0aW9ucxgBIAEoCzIl", - "LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldEgAEisKCXJl", - "amVjdF9tZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAQgkKB3Zh", - "cmlhbnQiUAoRSGFuZGxlckludm9jYXRpb24SDAoEbmFtZRgBIAEoCRItCgRh", - "cmdzGAIgAygLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkInwK", - "DVdvcmtmbG93U3RhdGUSPwoDa3ZzGAEgAygLMjIudGVtcG9yYWwub21lcy5r", - "aXRjaGVuX3NpbmsuV29ya2Zsb3dTdGF0ZS5LdnNFbnRyeRoqCghLdnNFbnRy", - "eRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIqgBCg1Xb3JrZmxv", - "d0lucHV0Ej4KD2luaXRpYWxfYWN0aW9ucxgBIAMoCzIlLnRlbXBvcmFsLm9t", - "ZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldBIdChVleHBlY3RlZF9zaWduYWxf", - "Y291bnQYAiABKAUSGwoTZXhwZWN0ZWRfc2lnbmFsX2lkcxgDIAMoBRIbChNy", - "ZWNlaXZlZF9zaWduYWxfaWRzGAQgAygFIlQKCUFjdGlvblNldBIzCgdhY3Rp", - "b25zGAEgAygLMiIudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQWN0aW9u", - "EhIKCmNvbmN1cnJlbnQYAiABKAgi+ggKBkFjdGlvbhI4CgV0aW1lchgBIAEo", - "CzInLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLlRpbWVyQWN0aW9uSAAS", - "SgoNZXhlY19hY3Rpdml0eRgCIAEoCzIxLnRlbXBvcmFsLm9tZXMua2l0Y2hl", - "bl9zaW5rLkV4ZWN1dGVBY3Rpdml0eUFjdGlvbkgAElUKE2V4ZWNfY2hpbGRf", - "d29ya2Zsb3cYAyABKAsyNi50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5F", - "eGVjdXRlQ2hpbGRXb3JrZmxvd0FjdGlvbkgAEk4KFGF3YWl0X3dvcmtmbG93", - "X3N0YXRlGAQgASgLMi4udGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQXdh", - "aXRXb3JrZmxvd1N0YXRlSAASQwoLc2VuZF9zaWduYWwYBSABKAsyLC50ZW1w", - "b3JhbC5vbWVzLmtpdGNoZW5fc2luay5TZW5kU2lnbmFsQWN0aW9uSAASSwoP", - "Y2FuY2VsX3dvcmtmbG93GAYgASgLMjAudGVtcG9yYWwub21lcy5raXRjaGVu", - "X3NpbmsuQ2FuY2VsV29ya2Zsb3dBY3Rpb25IABJMChBzZXRfcGF0Y2hfbWFy", - "a2VyGAcgASgLMjAudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuU2V0UGF0", - "Y2hNYXJrZXJBY3Rpb25IABJcChh1cHNlcnRfc2VhcmNoX2F0dHJpYnV0ZXMY", - "CCABKAsyOC50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5VcHNlcnRTZWFy", - "Y2hBdHRyaWJ1dGVzQWN0aW9uSAASQwoLdXBzZXJ0X21lbW8YCSABKAsyLC50", - "ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5VcHNlcnRNZW1vQWN0aW9uSAAS", - "RwoSc2V0X3dvcmtmbG93X3N0YXRlGAogASgLMikudGVtcG9yYWwub21lcy5r", - "aXRjaGVuX3NpbmsuV29ya2Zsb3dTdGF0ZUgAEkcKDXJldHVybl9yZXN1bHQY", - "CyABKAsyLi50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5SZXR1cm5SZXN1", - "bHRBY3Rpb25IABJFCgxyZXR1cm5fZXJyb3IYDCABKAsyLS50ZW1wb3JhbC5v", - "bWVzLmtpdGNoZW5fc2luay5SZXR1cm5FcnJvckFjdGlvbkgAEkoKD2NvbnRp", - "bnVlX2FzX25ldxgNIAEoCzIvLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5r", - "LkNvbnRpbnVlQXNOZXdBY3Rpb25IABJCChFuZXN0ZWRfYWN0aW9uX3NldBgO", - "IAEoCzIlLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldEgA", - "EkwKD25leHVzX29wZXJhdGlvbhgPIAEoCzIxLnRlbXBvcmFsLm9tZXMua2l0", - "Y2hlbl9zaW5rLkV4ZWN1dGVOZXh1c09wZXJhdGlvbkgAQgkKB3ZhcmlhbnQi", - "owIKD0F3YWl0YWJsZUNob2ljZRItCgt3YWl0X2ZpbmlzaBgBIAEoCzIWLmdv", - "b2dsZS5wcm90b2J1Zi5FbXB0eUgAEikKB2FiYW5kb24YAiABKAsyFi5nb29n", - "bGUucHJvdG9idWYuRW1wdHlIABI3ChVjYW5jZWxfYmVmb3JlX3N0YXJ0ZWQY", - "AyABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI2ChRjYW5jZWxfYWZ0", - "ZXJfc3RhcnRlZBgEIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjgK", - "FmNhbmNlbF9hZnRlcl9jb21wbGV0ZWQYBSABKAsyFi5nb29nbGUucHJvdG9i", - "dWYuRW1wdHlIAEILCgljb25kaXRpb24iagoLVGltZXJBY3Rpb24SFAoMbWls", - "bGlzZWNvbmRzGAEgASgEEkUKEGF3YWl0YWJsZV9jaG9pY2UYAiABKAsyKy50", - "ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5Bd2FpdGFibGVDaG9pY2Ui6hEK", - "FUV4ZWN1dGVBY3Rpdml0eUFjdGlvbhJUCgdnZW5lcmljGAEgASgLMkEudGVt", - "cG9yYWwub21lcy5raXRjaGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9u", - "LkdlbmVyaWNBY3Rpdml0eUgAEioKBWRlbGF5GAIgASgLMhkuZ29vZ2xlLnBy", - "b3RvYnVmLkR1cmF0aW9uSAASJgoEbm9vcBgDIAEoCzIWLmdvb2dsZS5wcm90", - "b2J1Zi5FbXB0eUgAElgKCXJlc291cmNlcxgOIAEoCzJDLnRlbXBvcmFsLm9t", - "ZXMua2l0Y2hlbl9zaW5rLkV4ZWN1dGVBY3Rpdml0eUFjdGlvbi5SZXNvdXJj", - "ZXNBY3Rpdml0eUgAElQKB3BheWxvYWQYEiABKAsyQS50ZW1wb3JhbC5vbWVz", - "LmtpdGNoZW5fc2luay5FeGVjdXRlQWN0aXZpdHlBY3Rpb24uUGF5bG9hZEFj", - "dGl2aXR5SAASUgoGY2xpZW50GBMgASgLMkAudGVtcG9yYWwub21lcy5raXRj", - "aGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLkNsaWVudEFjdGl2aXR5", - "SAASYwoPcmV0cnlhYmxlX2Vycm9yGBQgASgLMkgudGVtcG9yYWwub21lcy5r", - "aXRjaGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLlJldHJ5YWJsZUVy", - "cm9yQWN0aXZpdHlIABJUCgd0aW1lb3V0GBUgASgLMkEudGVtcG9yYWwub21l", - "cy5raXRjaGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLlRpbWVvdXRB", - "Y3Rpdml0eUgAEl8KCWhlYXJ0YmVhdBgWIAEoCzJKLnRlbXBvcmFsLm9tZXMu", - "a2l0Y2hlbl9zaW5rLkV4ZWN1dGVBY3Rpdml0eUFjdGlvbi5IZWFydGJlYXRU", - "aW1lb3V0QWN0aXZpdHlIABISCgp0YXNrX3F1ZXVlGAQgASgJEk8KB2hlYWRl", - "cnMYBSADKAsyPi50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5FeGVjdXRl", - "QWN0aXZpdHlBY3Rpb24uSGVhZGVyc0VudHJ5EjwKGXNjaGVkdWxlX3RvX2Ns", - "b3NlX3RpbWVvdXQYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24S", - "PAoZc2NoZWR1bGVfdG9fc3RhcnRfdGltZW91dBgHIAEoCzIZLmdvb2dsZS5w", - "cm90b2J1Zi5EdXJhdGlvbhI5ChZzdGFydF90b19jbG9zZV90aW1lb3V0GAgg", - "ASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjQKEWhlYXJ0YmVhdF90", - "aW1lb3V0GAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjkKDHJl", - "dHJ5X3BvbGljeRgKIAEoCzIjLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUmV0", - "cnlQb2xpY3kSKgoIaXNfbG9jYWwYCyABKAsyFi5nb29nbGUucHJvdG9idWYu", - "RW1wdHlIARJDCgZyZW1vdGUYDCABKAsyMS50ZW1wb3JhbC5vbWVzLmtpdGNo", - "ZW5fc2luay5SZW1vdGVBY3Rpdml0eU9wdGlvbnNIARJFChBhd2FpdGFibGVf", - "Y2hvaWNlGA0gASgLMisudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQXdh", - "aXRhYmxlQ2hvaWNlEjIKCHByaW9yaXR5GA8gASgLMiAudGVtcG9yYWwuYXBp", - "LmNvbW1vbi52MS5Qcmlvcml0eRIUCgxmYWlybmVzc19rZXkYECABKAkSFwoP", - "ZmFpcm5lc3Nfd2VpZ2h0GBEgASgCGlMKD0dlbmVyaWNBY3Rpdml0eRIMCgR0", - "eXBlGAEgASgJEjIKCWFyZ3VtZW50cxgCIAMoCzIfLnRlbXBvcmFsLmFwaS5j", - "b21tb24udjEuUGF5bG9hZBqaAQoRUmVzb3VyY2VzQWN0aXZpdHkSKgoHcnVu", - "X2ZvchgBIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIZChFieXRl", - "c190b19hbGxvY2F0ZRgCIAEoBBIkChxjcHVfeWllbGRfZXZlcnlfbl9pdGVy", - "YXRpb25zGAMgASgNEhgKEGNwdV95aWVsZF9mb3JfbXMYBCABKA0aRAoPUGF5", - "bG9hZEFjdGl2aXR5EhgKEGJ5dGVzX3RvX3JlY2VpdmUYASABKAUSFwoPYnl0", - "ZXNfdG9fcmV0dXJuGAIgASgFGlUKDkNsaWVudEFjdGl2aXR5EkMKD2NsaWVu", - "dF9zZXF1ZW5jZRgBIAEoCzIqLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5r", - "LkNsaWVudFNlcXVlbmNlGi8KFlJldHJ5YWJsZUVycm9yQWN0aXZpdHkSFQoN", - "ZmFpbF9hdHRlbXB0cxgBIAEoBRqSAQoPVGltZW91dEFjdGl2aXR5EhUKDWZh", - "aWxfYXR0ZW1wdHMYASABKAUSMwoQc3VjY2Vzc19kdXJhdGlvbhgCIAEoCzIZ", - "Lmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIzChBmYWlsdXJlX2R1cmF0aW9u", - "GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uGpsBChhIZWFydGJl", - "YXRUaW1lb3V0QWN0aXZpdHkSFQoNZmFpbF9hdHRlbXB0cxgBIAEoBRIzChBz", - "dWNjZXNzX2R1cmF0aW9uGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0", - "aW9uEjMKEGZhaWx1cmVfZHVyYXRpb24YAyABKAsyGS5nb29nbGUucHJvdG9i", - "dWYuRHVyYXRpb24aTwoMSGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRIuCgV2", - "YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9hZDoC", - "OAFCDwoNYWN0aXZpdHlfdHlwZUIKCghsb2NhbGl0eSKtCgoaRXhlY3V0ZUNo", - "aWxkV29ya2Zsb3dBY3Rpb24SEQoJbmFtZXNwYWNlGAIgASgJEhMKC3dvcmtm", - "bG93X2lkGAMgASgJEhUKDXdvcmtmbG93X3R5cGUYBCABKAkSEgoKdGFza19x", - "dWV1ZRgFIAEoCRIuCgVpbnB1dBgGIAMoCzIfLnRlbXBvcmFsLmFwaS5jb21t", - "b24udjEuUGF5bG9hZBI9Chp3b3JrZmxvd19leGVjdXRpb25fdGltZW91dBgH", - "IAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI3ChR3b3JrZmxvd19y", - "dW5fdGltZW91dBgIIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI4", - "ChV3b3JrZmxvd190YXNrX3RpbWVvdXQYCSABKAsyGS5nb29nbGUucHJvdG9i", - "dWYuRHVyYXRpb24SSgoTcGFyZW50X2Nsb3NlX3BvbGljeRgKIAEoDjItLnRl", - "bXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLlBhcmVudENsb3NlUG9saWN5Ek4K", - "GHdvcmtmbG93X2lkX3JldXNlX3BvbGljeRgMIAEoDjIsLnRlbXBvcmFsLmFw", - "aS5lbnVtcy52MS5Xb3JrZmxvd0lkUmV1c2VQb2xpY3kSOQoMcmV0cnlfcG9s", - "aWN5GA0gASgLMiMudGVtcG9yYWwuYXBpLmNvbW1vbi52MS5SZXRyeVBvbGlj", - "eRIVCg1jcm9uX3NjaGVkdWxlGA4gASgJElQKB2hlYWRlcnMYDyADKAsyQy50", - "ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5FeGVjdXRlQ2hpbGRXb3JrZmxv", - "d0FjdGlvbi5IZWFkZXJzRW50cnkSTgoEbWVtbxgQIAMoCzJALnRlbXBvcmFs", + "bkgAElIKFmRvX3N0YW5kYWxvbmVfYWN0aXZpdHkYByABKAsyMC50ZW1wb3Jh", + "bC5vbWVzLmtpdGNoZW5fc2luay5Eb1N0YW5kYWxvbmVBY3Rpdml0eUgAQgkK", + "B3ZhcmlhbnQiUgoaRG9TdGFuZGFsb25lTmV4dXNPcGVyYXRpb24SEAoIZW5k", + "cG9pbnQYASABKAkSDwoHc2VydmljZRgCIAEoCRIRCglvcGVyYXRpb24YAyAB", + "KAkiWwoURG9TdGFuZGFsb25lQWN0aXZpdHkSQwoIYWN0aXZpdHkYASABKAsy", + "MS50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5FeGVjdXRlQWN0aXZpdHlB", + "Y3Rpb24i8QIKCERvU2lnbmFsElEKEWRvX3NpZ25hbF9hY3Rpb25zGAEgASgL", + "MjQudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuRG9TaWduYWwuRG9TaWdu", + "YWxBY3Rpb25zSAASPwoGY3VzdG9tGAIgASgLMi0udGVtcG9yYWwub21lcy5r", + "aXRjaGVuX3NpbmsuSGFuZGxlckludm9jYXRpb25IABISCgp3aXRoX3N0YXJ0", + "GAMgASgIGrEBCg9Eb1NpZ25hbEFjdGlvbnMSOwoKZG9fYWN0aW9ucxgBIAEo", + "CzIlLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldEgAEkMK", + "EmRvX2FjdGlvbnNfaW5fbWFpbhgCIAEoCzIlLnRlbXBvcmFsLm9tZXMua2l0", + "Y2hlbl9zaW5rLkFjdGlvblNldEgAEhEKCXNpZ25hbF9pZBgDIAEoBUIJCgd2", + "YXJpYW50QgkKB3ZhcmlhbnQiDAoKRG9EZXNjcmliZSKpAQoHRG9RdWVyeRI4", + "CgxyZXBvcnRfc3RhdGUYASABKAsyIC50ZW1wb3JhbC5hcGkuY29tbW9uLnYx", + "LlBheWxvYWRzSAASPwoGY3VzdG9tGAIgASgLMi0udGVtcG9yYWwub21lcy5r", + "aXRjaGVuX3NpbmsuSGFuZGxlckludm9jYXRpb25IABIYChBmYWlsdXJlX2V4", + "cGVjdGVkGAogASgIQgkKB3ZhcmlhbnQixwEKCERvVXBkYXRlEkEKCmRvX2Fj", + "dGlvbnMYASABKAsyKy50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5Eb0Fj", + "dGlvbnNVcGRhdGVIABI/CgZjdXN0b20YAiABKAsyLS50ZW1wb3JhbC5vbWVz", + "LmtpdGNoZW5fc2luay5IYW5kbGVySW52b2NhdGlvbkgAEhIKCndpdGhfc3Rh", + "cnQYAyABKAgSGAoQZmFpbHVyZV9leHBlY3RlZBgKIAEoCEIJCgd2YXJpYW50", + "IoYBCg9Eb0FjdGlvbnNVcGRhdGUSOwoKZG9fYWN0aW9ucxgBIAEoCzIlLnRl", + "bXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldEgAEisKCXJlamVj", + "dF9tZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAQgkKB3Zhcmlh", + "bnQiUAoRSGFuZGxlckludm9jYXRpb24SDAoEbmFtZRgBIAEoCRItCgRhcmdz", + "GAIgAygLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkInwKDVdv", + "cmtmbG93U3RhdGUSPwoDa3ZzGAEgAygLMjIudGVtcG9yYWwub21lcy5raXRj", + "aGVuX3NpbmsuV29ya2Zsb3dTdGF0ZS5LdnNFbnRyeRoqCghLdnNFbnRyeRIL", + "CgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIqgBCg1Xb3JrZmxvd0lu", + "cHV0Ej4KD2luaXRpYWxfYWN0aW9ucxgBIAMoCzIlLnRlbXBvcmFsLm9tZXMu", + "a2l0Y2hlbl9zaW5rLkFjdGlvblNldBIdChVleHBlY3RlZF9zaWduYWxfY291", + "bnQYAiABKAUSGwoTZXhwZWN0ZWRfc2lnbmFsX2lkcxgDIAMoBRIbChNyZWNl", + "aXZlZF9zaWduYWxfaWRzGAQgAygFIlQKCUFjdGlvblNldBIzCgdhY3Rpb25z", + "GAEgAygLMiIudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQWN0aW9uEhIK", + "CmNvbmN1cnJlbnQYAiABKAgi+ggKBkFjdGlvbhI4CgV0aW1lchgBIAEoCzIn", + "LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLlRpbWVyQWN0aW9uSAASSgoN", + "ZXhlY19hY3Rpdml0eRgCIAEoCzIxLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9z", + "aW5rLkV4ZWN1dGVBY3Rpdml0eUFjdGlvbkgAElUKE2V4ZWNfY2hpbGRfd29y", + "a2Zsb3cYAyABKAsyNi50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5FeGVj", + "dXRlQ2hpbGRXb3JrZmxvd0FjdGlvbkgAEk4KFGF3YWl0X3dvcmtmbG93X3N0", + "YXRlGAQgASgLMi4udGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQXdhaXRX", + "b3JrZmxvd1N0YXRlSAASQwoLc2VuZF9zaWduYWwYBSABKAsyLC50ZW1wb3Jh", + "bC5vbWVzLmtpdGNoZW5fc2luay5TZW5kU2lnbmFsQWN0aW9uSAASSwoPY2Fu", + "Y2VsX3dvcmtmbG93GAYgASgLMjAudGVtcG9yYWwub21lcy5raXRjaGVuX3Np", + "bmsuQ2FuY2VsV29ya2Zsb3dBY3Rpb25IABJMChBzZXRfcGF0Y2hfbWFya2Vy", + "GAcgASgLMjAudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuU2V0UGF0Y2hN", + "YXJrZXJBY3Rpb25IABJcChh1cHNlcnRfc2VhcmNoX2F0dHJpYnV0ZXMYCCAB", + "KAsyOC50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5VcHNlcnRTZWFyY2hB", + "dHRyaWJ1dGVzQWN0aW9uSAASQwoLdXBzZXJ0X21lbW8YCSABKAsyLC50ZW1w", + "b3JhbC5vbWVzLmtpdGNoZW5fc2luay5VcHNlcnRNZW1vQWN0aW9uSAASRwoS", + "c2V0X3dvcmtmbG93X3N0YXRlGAogASgLMikudGVtcG9yYWwub21lcy5raXRj", + "aGVuX3NpbmsuV29ya2Zsb3dTdGF0ZUgAEkcKDXJldHVybl9yZXN1bHQYCyAB", + "KAsyLi50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5SZXR1cm5SZXN1bHRB", + "Y3Rpb25IABJFCgxyZXR1cm5fZXJyb3IYDCABKAsyLS50ZW1wb3JhbC5vbWVz", + "LmtpdGNoZW5fc2luay5SZXR1cm5FcnJvckFjdGlvbkgAEkoKD2NvbnRpbnVl", + "X2FzX25ldxgNIAEoCzIvLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkNv", + "bnRpbnVlQXNOZXdBY3Rpb25IABJCChFuZXN0ZWRfYWN0aW9uX3NldBgOIAEo", + "CzIlLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFjdGlvblNldEgAEkwK", + "D25leHVzX29wZXJhdGlvbhgPIAEoCzIxLnRlbXBvcmFsLm9tZXMua2l0Y2hl", + "bl9zaW5rLkV4ZWN1dGVOZXh1c09wZXJhdGlvbkgAQgkKB3ZhcmlhbnQiowIK", + "D0F3YWl0YWJsZUNob2ljZRItCgt3YWl0X2ZpbmlzaBgBIAEoCzIWLmdvb2ds", + "ZS5wcm90b2J1Zi5FbXB0eUgAEikKB2FiYW5kb24YAiABKAsyFi5nb29nbGUu", + "cHJvdG9idWYuRW1wdHlIABI3ChVjYW5jZWxfYmVmb3JlX3N0YXJ0ZWQYAyAB", + "KAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI2ChRjYW5jZWxfYWZ0ZXJf", + "c3RhcnRlZBgEIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjgKFmNh", + "bmNlbF9hZnRlcl9jb21wbGV0ZWQYBSABKAsyFi5nb29nbGUucHJvdG9idWYu", + "RW1wdHlIAEILCgljb25kaXRpb24iagoLVGltZXJBY3Rpb24SFAoMbWlsbGlz", + "ZWNvbmRzGAEgASgEEkUKEGF3YWl0YWJsZV9jaG9pY2UYAiABKAsyKy50ZW1w", + "b3JhbC5vbWVzLmtpdGNoZW5fc2luay5Bd2FpdGFibGVDaG9pY2Ui6hEKFUV4", + "ZWN1dGVBY3Rpdml0eUFjdGlvbhJUCgdnZW5lcmljGAEgASgLMkEudGVtcG9y", + "YWwub21lcy5raXRjaGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLkdl", + "bmVyaWNBY3Rpdml0eUgAEioKBWRlbGF5GAIgASgLMhkuZ29vZ2xlLnByb3Rv", + "YnVmLkR1cmF0aW9uSAASJgoEbm9vcBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1", + "Zi5FbXB0eUgAElgKCXJlc291cmNlcxgOIAEoCzJDLnRlbXBvcmFsLm9tZXMu", + "a2l0Y2hlbl9zaW5rLkV4ZWN1dGVBY3Rpdml0eUFjdGlvbi5SZXNvdXJjZXNB", + "Y3Rpdml0eUgAElQKB3BheWxvYWQYEiABKAsyQS50ZW1wb3JhbC5vbWVzLmtp", + "dGNoZW5fc2luay5FeGVjdXRlQWN0aXZpdHlBY3Rpb24uUGF5bG9hZEFjdGl2", + "aXR5SAASUgoGY2xpZW50GBMgASgLMkAudGVtcG9yYWwub21lcy5raXRjaGVu", + "X3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLkNsaWVudEFjdGl2aXR5SAAS", + "YwoPcmV0cnlhYmxlX2Vycm9yGBQgASgLMkgudGVtcG9yYWwub21lcy5raXRj", + "aGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLlJldHJ5YWJsZUVycm9y", + "QWN0aXZpdHlIABJUCgd0aW1lb3V0GBUgASgLMkEudGVtcG9yYWwub21lcy5r", + "aXRjaGVuX3NpbmsuRXhlY3V0ZUFjdGl2aXR5QWN0aW9uLlRpbWVvdXRBY3Rp", + "dml0eUgAEl8KCWhlYXJ0YmVhdBgWIAEoCzJKLnRlbXBvcmFsLm9tZXMua2l0", + "Y2hlbl9zaW5rLkV4ZWN1dGVBY3Rpdml0eUFjdGlvbi5IZWFydGJlYXRUaW1l", + "b3V0QWN0aXZpdHlIABISCgp0YXNrX3F1ZXVlGAQgASgJEk8KB2hlYWRlcnMY", + "BSADKAsyPi50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5FeGVjdXRlQWN0", + "aXZpdHlBY3Rpb24uSGVhZGVyc0VudHJ5EjwKGXNjaGVkdWxlX3RvX2Nsb3Nl", + "X3RpbWVvdXQYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SPAoZ", + "c2NoZWR1bGVfdG9fc3RhcnRfdGltZW91dBgHIAEoCzIZLmdvb2dsZS5wcm90", + "b2J1Zi5EdXJhdGlvbhI5ChZzdGFydF90b19jbG9zZV90aW1lb3V0GAggASgL", + "MhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjQKEWhlYXJ0YmVhdF90aW1l", + "b3V0GAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjkKDHJldHJ5", + "X3BvbGljeRgKIAEoCzIjLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUmV0cnlQ", + "b2xpY3kSKgoIaXNfbG9jYWwYCyABKAsyFi5nb29nbGUucHJvdG9idWYuRW1w", + "dHlIARJDCgZyZW1vdGUYDCABKAsyMS50ZW1wb3JhbC5vbWVzLmtpdGNoZW5f", + "c2luay5SZW1vdGVBY3Rpdml0eU9wdGlvbnNIARJFChBhd2FpdGFibGVfY2hv", + "aWNlGA0gASgLMisudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQXdhaXRh", + "YmxlQ2hvaWNlEjIKCHByaW9yaXR5GA8gASgLMiAudGVtcG9yYWwuYXBpLmNv", + "bW1vbi52MS5Qcmlvcml0eRIUCgxmYWlybmVzc19rZXkYECABKAkSFwoPZmFp", + "cm5lc3Nfd2VpZ2h0GBEgASgCGlMKD0dlbmVyaWNBY3Rpdml0eRIMCgR0eXBl", + "GAEgASgJEjIKCWFyZ3VtZW50cxgCIAMoCzIfLnRlbXBvcmFsLmFwaS5jb21t", + "b24udjEuUGF5bG9hZBqaAQoRUmVzb3VyY2VzQWN0aXZpdHkSKgoHcnVuX2Zv", + "chgBIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIZChFieXRlc190", + "b19hbGxvY2F0ZRgCIAEoBBIkChxjcHVfeWllbGRfZXZlcnlfbl9pdGVyYXRp", + "b25zGAMgASgNEhgKEGNwdV95aWVsZF9mb3JfbXMYBCABKA0aRAoPUGF5bG9h", + "ZEFjdGl2aXR5EhgKEGJ5dGVzX3RvX3JlY2VpdmUYASABKAUSFwoPYnl0ZXNf", + "dG9fcmV0dXJuGAIgASgFGlUKDkNsaWVudEFjdGl2aXR5EkMKD2NsaWVudF9z", + "ZXF1ZW5jZRgBIAEoCzIqLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkNs", + "aWVudFNlcXVlbmNlGi8KFlJldHJ5YWJsZUVycm9yQWN0aXZpdHkSFQoNZmFp", + "bF9hdHRlbXB0cxgBIAEoBRqSAQoPVGltZW91dEFjdGl2aXR5EhUKDWZhaWxf", + "YXR0ZW1wdHMYASABKAUSMwoQc3VjY2Vzc19kdXJhdGlvbhgCIAEoCzIZLmdv", + "b2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIzChBmYWlsdXJlX2R1cmF0aW9uGAMg", + "ASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uGpsBChhIZWFydGJlYXRU", + "aW1lb3V0QWN0aXZpdHkSFQoNZmFpbF9hdHRlbXB0cxgBIAEoBRIzChBzdWNj", + "ZXNzX2R1cmF0aW9uGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9u", + "EjMKEGZhaWx1cmVfZHVyYXRpb24YAyABKAsyGS5nb29nbGUucHJvdG9idWYu", + "RHVyYXRpb24aTwoMSGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRIuCgV2YWx1", + "ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9hZDoCOAFC", + "DwoNYWN0aXZpdHlfdHlwZUIKCghsb2NhbGl0eSKtCgoaRXhlY3V0ZUNoaWxk", + "V29ya2Zsb3dBY3Rpb24SEQoJbmFtZXNwYWNlGAIgASgJEhMKC3dvcmtmbG93", + "X2lkGAMgASgJEhUKDXdvcmtmbG93X3R5cGUYBCABKAkSEgoKdGFza19xdWV1", + "ZRgFIAEoCRIuCgVpbnB1dBgGIAMoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24u", + "djEuUGF5bG9hZBI9Chp3b3JrZmxvd19leGVjdXRpb25fdGltZW91dBgHIAEo", + "CzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI3ChR3b3JrZmxvd19ydW5f", + "dGltZW91dBgIIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI4ChV3", + "b3JrZmxvd190YXNrX3RpbWVvdXQYCSABKAsyGS5nb29nbGUucHJvdG9idWYu", + "RHVyYXRpb24SSgoTcGFyZW50X2Nsb3NlX3BvbGljeRgKIAEoDjItLnRlbXBv", + "cmFsLm9tZXMua2l0Y2hlbl9zaW5rLlBhcmVudENsb3NlUG9saWN5Ek4KGHdv", + "cmtmbG93X2lkX3JldXNlX3BvbGljeRgMIAEoDjIsLnRlbXBvcmFsLmFwaS5l", + "bnVtcy52MS5Xb3JrZmxvd0lkUmV1c2VQb2xpY3kSOQoMcmV0cnlfcG9saWN5", + "GA0gASgLMiMudGVtcG9yYWwuYXBpLmNvbW1vbi52MS5SZXRyeVBvbGljeRIV", + "Cg1jcm9uX3NjaGVkdWxlGA4gASgJElQKB2hlYWRlcnMYDyADKAsyQy50ZW1w", + "b3JhbC5vbWVzLmtpdGNoZW5fc2luay5FeGVjdXRlQ2hpbGRXb3JrZmxvd0Fj", + "dGlvbi5IZWFkZXJzRW50cnkSTgoEbWVtbxgQIAMoCzJALnRlbXBvcmFsLm9t", + "ZXMua2l0Y2hlbl9zaW5rLkV4ZWN1dGVDaGlsZFdvcmtmbG93QWN0aW9uLk1l", + "bW9FbnRyeRJnChFzZWFyY2hfYXR0cmlidXRlcxgRIAMoCzJMLnRlbXBvcmFs", "Lm9tZXMua2l0Y2hlbl9zaW5rLkV4ZWN1dGVDaGlsZFdvcmtmbG93QWN0aW9u", - "Lk1lbW9FbnRyeRJnChFzZWFyY2hfYXR0cmlidXRlcxgRIAMoCzJMLnRlbXBv", - "cmFsLm9tZXMua2l0Y2hlbl9zaW5rLkV4ZWN1dGVDaGlsZFdvcmtmbG93QWN0", - "aW9uLlNlYXJjaEF0dHJpYnV0ZXNFbnRyeRJUChFjYW5jZWxsYXRpb25fdHlw", - "ZRgSIAEoDjI5LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkNoaWxkV29y", - "a2Zsb3dDYW5jZWxsYXRpb25UeXBlEkcKEXZlcnNpb25pbmdfaW50ZW50GBMg", + "LlNlYXJjaEF0dHJpYnV0ZXNFbnRyeRJUChFjYW5jZWxsYXRpb25fdHlwZRgS", + "IAEoDjI5LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkNoaWxkV29ya2Zs", + "b3dDYW5jZWxsYXRpb25UeXBlEkcKEXZlcnNpb25pbmdfaW50ZW50GBMgASgO", + "MiwudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuVmVyc2lvbmluZ0ludGVu", + "dBJFChBhd2FpdGFibGVfY2hvaWNlGBQgASgLMisudGVtcG9yYWwub21lcy5r", + "aXRjaGVuX3NpbmsuQXdhaXRhYmxlQ2hvaWNlGk8KDEhlYWRlcnNFbnRyeRIL", + "CgNrZXkYASABKAkSLgoFdmFsdWUYAiABKAsyHy50ZW1wb3JhbC5hcGkuY29t", + "bW9uLnYxLlBheWxvYWQ6AjgBGkwKCU1lbW9FbnRyeRILCgNrZXkYASABKAkS", + "LgoFdmFsdWUYAiABKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBheWxv", + "YWQ6AjgBGlgKFVNlYXJjaEF0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkS", + "LgoFdmFsdWUYAiABKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBheWxv", + "YWQ6AjgBIjAKEkF3YWl0V29ya2Zsb3dTdGF0ZRILCgNrZXkYASABKAkSDQoF", + "dmFsdWUYAiABKAki3wIKEFNlbmRTaWduYWxBY3Rpb24SEwoLd29ya2Zsb3df", + "aWQYASABKAkSDgoGcnVuX2lkGAIgASgJEhMKC3NpZ25hbF9uYW1lGAMgASgJ", + "Ei0KBGFyZ3MYBCADKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBheWxv", + "YWQSSgoHaGVhZGVycxgFIAMoCzI5LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9z", + "aW5rLlNlbmRTaWduYWxBY3Rpb24uSGVhZGVyc0VudHJ5EkUKEGF3YWl0YWJs", + "ZV9jaG9pY2UYBiABKAsyKy50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2luay5B", + "d2FpdGFibGVDaG9pY2UaTwoMSGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRIu", + "CgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9h", + "ZDoCOAEiOwoUQ2FuY2VsV29ya2Zsb3dBY3Rpb24SEwoLd29ya2Zsb3dfaWQY", + "ASABKAkSDgoGcnVuX2lkGAIgASgJInYKFFNldFBhdGNoTWFya2VyQWN0aW9u", + "EhAKCHBhdGNoX2lkGAEgASgJEhIKCmRlcHJlY2F0ZWQYAiABKAgSOAoMaW5u", + "ZXJfYWN0aW9uGAMgASgLMiIudGVtcG9yYWwub21lcy5raXRjaGVuX3Npbmsu", + "QWN0aW9uIuMBChxVcHNlcnRTZWFyY2hBdHRyaWJ1dGVzQWN0aW9uEmkKEXNl", + "YXJjaF9hdHRyaWJ1dGVzGAEgAygLMk4udGVtcG9yYWwub21lcy5raXRjaGVu", + "X3NpbmsuVXBzZXJ0U2VhcmNoQXR0cmlidXRlc0FjdGlvbi5TZWFyY2hBdHRy", + "aWJ1dGVzRW50cnkaWAoVU2VhcmNoQXR0cmlidXRlc0VudHJ5EgsKA2tleRgB", + "IAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEu", + "UGF5bG9hZDoCOAEiRwoQVXBzZXJ0TWVtb0FjdGlvbhIzCg11cHNlcnRlZF9t", + "ZW1vGAEgASgLMhwudGVtcG9yYWwuYXBpLmNvbW1vbi52MS5NZW1vIkoKElJl", + "dHVyblJlc3VsdEFjdGlvbhI0CgtyZXR1cm5fdGhpcxgBIAEoCzIfLnRlbXBv", + "cmFsLmFwaS5jb21tb24udjEuUGF5bG9hZCJGChFSZXR1cm5FcnJvckFjdGlv", + "bhIxCgdmYWlsdXJlGAEgASgLMiAudGVtcG9yYWwuYXBpLmZhaWx1cmUudjEu", + "RmFpbHVyZSLeBgoTQ29udGludWVBc05ld0FjdGlvbhIVCg13b3JrZmxvd190", + "eXBlGAEgASgJEhIKCnRhc2tfcXVldWUYAiABKAkSMgoJYXJndW1lbnRzGAMg", + "AygLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkEjcKFHdvcmtm", + "bG93X3J1bl90aW1lb3V0GAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0", + "aW9uEjgKFXdvcmtmbG93X3Rhc2tfdGltZW91dBgFIAEoCzIZLmdvb2dsZS5w", + "cm90b2J1Zi5EdXJhdGlvbhJHCgRtZW1vGAYgAygLMjkudGVtcG9yYWwub21l", + "cy5raXRjaGVuX3NpbmsuQ29udGludWVBc05ld0FjdGlvbi5NZW1vRW50cnkS", + "TQoHaGVhZGVycxgHIAMoCzI8LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5r", + "LkNvbnRpbnVlQXNOZXdBY3Rpb24uSGVhZGVyc0VudHJ5EmAKEXNlYXJjaF9h", + "dHRyaWJ1dGVzGAggAygLMkUudGVtcG9yYWwub21lcy5raXRjaGVuX3Npbmsu", + "Q29udGludWVBc05ld0FjdGlvbi5TZWFyY2hBdHRyaWJ1dGVzRW50cnkSOQoM", + "cmV0cnlfcG9saWN5GAkgASgLMiMudGVtcG9yYWwuYXBpLmNvbW1vbi52MS5S", + "ZXRyeVBvbGljeRJHChF2ZXJzaW9uaW5nX2ludGVudBgKIAEoDjIsLnRlbXBv", + "cmFsLm9tZXMua2l0Y2hlbl9zaW5rLlZlcnNpb25pbmdJbnRlbnQaTAoJTWVt", + "b0VudHJ5EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFs", + "LmFwaS5jb21tb24udjEuUGF5bG9hZDoCOAEaTwoMSGVhZGVyc0VudHJ5EgsK", + "A2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21t", + "b24udjEuUGF5bG9hZDoCOAEaWAoVU2VhcmNoQXR0cmlidXRlc0VudHJ5EgsK", + "A2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21t", + "b24udjEuUGF5bG9hZDoCOAEi0QEKFVJlbW90ZUFjdGl2aXR5T3B0aW9ucxJP", + "ChFjYW5jZWxsYXRpb25fdHlwZRgBIAEoDjI0LnRlbXBvcmFsLm9tZXMua2l0", + "Y2hlbl9zaW5rLkFjdGl2aXR5Q2FuY2VsbGF0aW9uVHlwZRIeChZkb19ub3Rf", + "ZWFnZXJseV9leGVjdXRlGAIgASgIEkcKEXZlcnNpb25pbmdfaW50ZW50GAMg", "ASgOMiwudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuVmVyc2lvbmluZ0lu", - "dGVudBJFChBhd2FpdGFibGVfY2hvaWNlGBQgASgLMisudGVtcG9yYWwub21l", - "cy5raXRjaGVuX3NpbmsuQXdhaXRhYmxlQ2hvaWNlGk8KDEhlYWRlcnNFbnRy", - "eRILCgNrZXkYASABKAkSLgoFdmFsdWUYAiABKAsyHy50ZW1wb3JhbC5hcGku", - "Y29tbW9uLnYxLlBheWxvYWQ6AjgBGkwKCU1lbW9FbnRyeRILCgNrZXkYASAB", - "KAkSLgoFdmFsdWUYAiABKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBh", - "eWxvYWQ6AjgBGlgKFVNlYXJjaEF0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASAB", - "KAkSLgoFdmFsdWUYAiABKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBh", - "eWxvYWQ6AjgBIjAKEkF3YWl0V29ya2Zsb3dTdGF0ZRILCgNrZXkYASABKAkS", - "DQoFdmFsdWUYAiABKAki3wIKEFNlbmRTaWduYWxBY3Rpb24SEwoLd29ya2Zs", - "b3dfaWQYASABKAkSDgoGcnVuX2lkGAIgASgJEhMKC3NpZ25hbF9uYW1lGAMg", - "ASgJEi0KBGFyZ3MYBCADKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBh", - "eWxvYWQSSgoHaGVhZGVycxgFIAMoCzI5LnRlbXBvcmFsLm9tZXMua2l0Y2hl", - "bl9zaW5rLlNlbmRTaWduYWxBY3Rpb24uSGVhZGVyc0VudHJ5EkUKEGF3YWl0", - "YWJsZV9jaG9pY2UYBiABKAsyKy50ZW1wb3JhbC5vbWVzLmtpdGNoZW5fc2lu", - "ay5Bd2FpdGFibGVDaG9pY2UaTwoMSGVhZGVyc0VudHJ5EgsKA2tleRgBIAEo", - "CRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUGF5", - "bG9hZDoCOAEiOwoUQ2FuY2VsV29ya2Zsb3dBY3Rpb24SEwoLd29ya2Zsb3df", - "aWQYASABKAkSDgoGcnVuX2lkGAIgASgJInYKFFNldFBhdGNoTWFya2VyQWN0", - "aW9uEhAKCHBhdGNoX2lkGAEgASgJEhIKCmRlcHJlY2F0ZWQYAiABKAgSOAoM", - "aW5uZXJfYWN0aW9uGAMgASgLMiIudGVtcG9yYWwub21lcy5raXRjaGVuX3Np", - "bmsuQWN0aW9uIuMBChxVcHNlcnRTZWFyY2hBdHRyaWJ1dGVzQWN0aW9uEmkK", - "EXNlYXJjaF9hdHRyaWJ1dGVzGAEgAygLMk4udGVtcG9yYWwub21lcy5raXRj", - "aGVuX3NpbmsuVXBzZXJ0U2VhcmNoQXR0cmlidXRlc0FjdGlvbi5TZWFyY2hB", - "dHRyaWJ1dGVzRW50cnkaWAoVU2VhcmNoQXR0cmlidXRlc0VudHJ5EgsKA2tl", - "eRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24u", - "djEuUGF5bG9hZDoCOAEiRwoQVXBzZXJ0TWVtb0FjdGlvbhIzCg11cHNlcnRl", - "ZF9tZW1vGAEgASgLMhwudGVtcG9yYWwuYXBpLmNvbW1vbi52MS5NZW1vIkoK", - "ElJldHVyblJlc3VsdEFjdGlvbhI0CgtyZXR1cm5fdGhpcxgBIAEoCzIfLnRl", - "bXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9hZCJGChFSZXR1cm5FcnJvckFj", - "dGlvbhIxCgdmYWlsdXJlGAEgASgLMiAudGVtcG9yYWwuYXBpLmZhaWx1cmUu", - "djEuRmFpbHVyZSLeBgoTQ29udGludWVBc05ld0FjdGlvbhIVCg13b3JrZmxv", - "d190eXBlGAEgASgJEhIKCnRhc2tfcXVldWUYAiABKAkSMgoJYXJndW1lbnRz", - "GAMgAygLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkEjcKFHdv", - "cmtmbG93X3J1bl90aW1lb3V0GAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1", - "cmF0aW9uEjgKFXdvcmtmbG93X3Rhc2tfdGltZW91dBgFIAEoCzIZLmdvb2ds", - "ZS5wcm90b2J1Zi5EdXJhdGlvbhJHCgRtZW1vGAYgAygLMjkudGVtcG9yYWwu", - "b21lcy5raXRjaGVuX3NpbmsuQ29udGludWVBc05ld0FjdGlvbi5NZW1vRW50", - "cnkSTQoHaGVhZGVycxgHIAMoCzI8LnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9z", - "aW5rLkNvbnRpbnVlQXNOZXdBY3Rpb24uSGVhZGVyc0VudHJ5EmAKEXNlYXJj", - "aF9hdHRyaWJ1dGVzGAggAygLMkUudGVtcG9yYWwub21lcy5raXRjaGVuX3Np", - "bmsuQ29udGludWVBc05ld0FjdGlvbi5TZWFyY2hBdHRyaWJ1dGVzRW50cnkS", - "OQoMcmV0cnlfcG9saWN5GAkgASgLMiMudGVtcG9yYWwuYXBpLmNvbW1vbi52", - "MS5SZXRyeVBvbGljeRJHChF2ZXJzaW9uaW5nX2ludGVudBgKIAEoDjIsLnRl", - "bXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLlZlcnNpb25pbmdJbnRlbnQaTAoJ", - "TWVtb0VudHJ5EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBv", - "cmFsLmFwaS5jb21tb24udjEuUGF5bG9hZDoCOAEaTwoMSGVhZGVyc0VudHJ5", - "EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5j", - "b21tb24udjEuUGF5bG9hZDoCOAEaWAoVU2VhcmNoQXR0cmlidXRlc0VudHJ5", - "EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5j", - "b21tb24udjEuUGF5bG9hZDoCOAEi0QEKFVJlbW90ZUFjdGl2aXR5T3B0aW9u", - "cxJPChFjYW5jZWxsYXRpb25fdHlwZRgBIAEoDjI0LnRlbXBvcmFsLm9tZXMu", - "a2l0Y2hlbl9zaW5rLkFjdGl2aXR5Q2FuY2VsbGF0aW9uVHlwZRIeChZkb19u", - "b3RfZWFnZXJseV9leGVjdXRlGAIgASgIEkcKEXZlcnNpb25pbmdfaW50ZW50", - "GAMgASgOMiwudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuVmVyc2lvbmlu", - "Z0ludGVudCLrAgoVRXhlY3V0ZU5leHVzT3BlcmF0aW9uEhAKCGVuZHBvaW50", - "GAEgASgJEhEKCW9wZXJhdGlvbhgCIAEoCRINCgVpbnB1dBgDIAEoCRJPCgdo", - "ZWFkZXJzGAQgAygLMj4udGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuRXhl", - "Y3V0ZU5leHVzT3BlcmF0aW9uLkhlYWRlcnNFbnRyeRJFChBhd2FpdGFibGVf", - "Y2hvaWNlGAUgASgLMisudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQXdh", - "aXRhYmxlQ2hvaWNlEhcKD2V4cGVjdGVkX291dHB1dBgGIAEoCRI9Cg5iZWZv", - "cmVfYWN0aW9ucxgHIAMoCzIlLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5r", - "LkFjdGlvblNldBouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZh", - "bHVlGAIgASgJOgI4ASJhChFOZXh1c0hhbmRsZXJJbnB1dBINCgVpbnB1dBgB", - "IAEoCRI9Cg5iZWZvcmVfYWN0aW9ucxgCIAMoCzIlLnRlbXBvcmFsLm9tZXMu", - "a2l0Y2hlbl9zaW5rLkFjdGlvblNldCqkAQoRUGFyZW50Q2xvc2VQb2xpY3kS", - "IwofUEFSRU5UX0NMT1NFX1BPTElDWV9VTlNQRUNJRklFRBAAEiEKHVBBUkVO", - "VF9DTE9TRV9QT0xJQ1lfVEVSTUlOQVRFEAESHwobUEFSRU5UX0NMT1NFX1BP", - "TElDWV9BQkFORE9OEAISJgoiUEFSRU5UX0NMT1NFX1BPTElDWV9SRVFVRVNU", - "X0NBTkNFTBADKkAKEFZlcnNpb25pbmdJbnRlbnQSDwoLVU5TUEVDSUZJRUQQ", - "ABIOCgpDT01QQVRJQkxFEAESCwoHREVGQVVMVBACKqIBCh1DaGlsZFdvcmtm", - "bG93Q2FuY2VsbGF0aW9uVHlwZRIUChBDSElMRF9XRl9BQkFORE9OEAASFwoT", - "Q0hJTERfV0ZfVFJZX0NBTkNFTBABEigKJENISUxEX1dGX1dBSVRfQ0FOQ0VM", - "TEFUSU9OX0NPTVBMRVRFRBACEigKJENISUxEX1dGX1dBSVRfQ0FOQ0VMTEFU", - "SU9OX1JFUVVFU1RFRBADKlgKGEFjdGl2aXR5Q2FuY2VsbGF0aW9uVHlwZRIO", - "CgpUUllfQ0FOQ0VMEAASHwobV0FJVF9DQU5DRUxMQVRJT05fQ09NUExFVEVE", - "EAESCwoHQUJBTkRPThACQkIKEGlvLnRlbXBvcmFsLm9tZXNaLmdpdGh1Yi5j", - "b20vdGVtcG9yYWxpby9vbWVzL2xvYWRnZW4va2l0Y2hlbnNpbmtiBnByb3Rv", - "Mw==")); + "dGVudCLrAgoVRXhlY3V0ZU5leHVzT3BlcmF0aW9uEhAKCGVuZHBvaW50GAEg", + "ASgJEhEKCW9wZXJhdGlvbhgCIAEoCRINCgVpbnB1dBgDIAEoCRJPCgdoZWFk", + "ZXJzGAQgAygLMj4udGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuRXhlY3V0", + "ZU5leHVzT3BlcmF0aW9uLkhlYWRlcnNFbnRyeRJFChBhd2FpdGFibGVfY2hv", + "aWNlGAUgASgLMisudGVtcG9yYWwub21lcy5raXRjaGVuX3NpbmsuQXdhaXRh", + "YmxlQ2hvaWNlEhcKD2V4cGVjdGVkX291dHB1dBgGIAEoCRI9Cg5iZWZvcmVf", + "YWN0aW9ucxgHIAMoCzIlLnRlbXBvcmFsLm9tZXMua2l0Y2hlbl9zaW5rLkFj", + "dGlvblNldBouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVl", + "GAIgASgJOgI4ASJhChFOZXh1c0hhbmRsZXJJbnB1dBINCgVpbnB1dBgBIAEo", + "CRI9Cg5iZWZvcmVfYWN0aW9ucxgCIAMoCzIlLnRlbXBvcmFsLm9tZXMua2l0", + "Y2hlbl9zaW5rLkFjdGlvblNldCqkAQoRUGFyZW50Q2xvc2VQb2xpY3kSIwof", + "UEFSRU5UX0NMT1NFX1BPTElDWV9VTlNQRUNJRklFRBAAEiEKHVBBUkVOVF9D", + "TE9TRV9QT0xJQ1lfVEVSTUlOQVRFEAESHwobUEFSRU5UX0NMT1NFX1BPTElD", + "WV9BQkFORE9OEAISJgoiUEFSRU5UX0NMT1NFX1BPTElDWV9SRVFVRVNUX0NB", + "TkNFTBADKkAKEFZlcnNpb25pbmdJbnRlbnQSDwoLVU5TUEVDSUZJRUQQABIO", + "CgpDT01QQVRJQkxFEAESCwoHREVGQVVMVBACKqIBCh1DaGlsZFdvcmtmbG93", + "Q2FuY2VsbGF0aW9uVHlwZRIUChBDSElMRF9XRl9BQkFORE9OEAASFwoTQ0hJ", + "TERfV0ZfVFJZX0NBTkNFTBABEigKJENISUxEX1dGX1dBSVRfQ0FOQ0VMTEFU", + "SU9OX0NPTVBMRVRFRBACEigKJENISUxEX1dGX1dBSVRfQ0FOQ0VMTEFUSU9O", + "X1JFUVVFU1RFRBADKlgKGEFjdGl2aXR5Q2FuY2VsbGF0aW9uVHlwZRIOCgpU", + "UllfQ0FOQ0VMEAASHwobV0FJVF9DQU5DRUxMQVRJT05fQ09NUExFVEVEEAES", + "CwoHQUJBTkRPThACQkIKEGlvLnRlbXBvcmFsLm9tZXNaLmdpdGh1Yi5jb20v", + "dGVtcG9yYWxpby9vbWVzL2xvYWRnZW4va2l0Y2hlbnNpbmtiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Temporalio.Api.Common.V1.MessageReflection.Descriptor, global::Temporalio.Api.Failure.V1.MessageReflection.Descriptor, global::Temporalio.Api.Enums.V1.WorkflowReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Temporal.Omes.KitchenSink.ParentClosePolicy), typeof(global::Temporal.Omes.KitchenSink.VersioningIntent), typeof(global::Temporal.Omes.KitchenSink.ChildWorkflowCancellationType), typeof(global::Temporal.Omes.KitchenSink.ActivityCancellationType), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -278,8 +281,9 @@ static KitchenSinkReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.ClientSequence), global::Temporal.Omes.KitchenSink.ClientSequence.Parser, new[]{ "ActionSets" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.ClientActionSet), global::Temporal.Omes.KitchenSink.ClientActionSet.Parser, new[]{ "Actions", "Concurrent", "WaitAtEnd", "WaitForCurrentRunToFinishAtEnd" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.WithStartClientAction), global::Temporal.Omes.KitchenSink.WithStartClientAction.Parser, new[]{ "DoSignal", "DoUpdate" }, new[]{ "Variant" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.ClientAction), global::Temporal.Omes.KitchenSink.ClientAction.Parser, new[]{ "DoSignal", "DoQuery", "DoUpdate", "NestedActions", "DoDescribe", "DoStandaloneNexusOperation" }, new[]{ "Variant" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.ClientAction), global::Temporal.Omes.KitchenSink.ClientAction.Parser, new[]{ "DoSignal", "DoQuery", "DoUpdate", "NestedActions", "DoDescribe", "DoStandaloneNexusOperation", "DoStandaloneActivity" }, new[]{ "Variant" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.DoStandaloneNexusOperation), global::Temporal.Omes.KitchenSink.DoStandaloneNexusOperation.Parser, new[]{ "Endpoint", "Service", "Operation" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.DoStandaloneActivity), global::Temporal.Omes.KitchenSink.DoStandaloneActivity.Parser, new[]{ "Activity" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.DoSignal), global::Temporal.Omes.KitchenSink.DoSignal.Parser, new[]{ "DoSignalActions", "Custom", "WithStart" }, new[]{ "Variant" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.DoSignal.Types.DoSignalActions), global::Temporal.Omes.KitchenSink.DoSignal.Types.DoSignalActions.Parser, new[]{ "DoActions", "DoActionsInMain", "SignalId" }, new[]{ "Variant" }, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.DoDescribe), global::Temporal.Omes.KitchenSink.DoDescribe.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Temporal.Omes.KitchenSink.DoQuery), global::Temporal.Omes.KitchenSink.DoQuery.Parser, new[]{ "ReportState", "Custom", "FailureExpected" }, new[]{ "Variant" }, null, null, null), @@ -1541,6 +1545,9 @@ public ClientAction(ClientAction other) : this() { case VariantOneofCase.DoStandaloneNexusOperation: DoStandaloneNexusOperation = other.DoStandaloneNexusOperation.Clone(); break; + case VariantOneofCase.DoStandaloneActivity: + DoStandaloneActivity = other.DoStandaloneActivity.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -1624,6 +1631,18 @@ public ClientAction Clone() { } } + /// Field number for the "do_standalone_activity" field. + public const int DoStandaloneActivityFieldNumber = 7; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Temporal.Omes.KitchenSink.DoStandaloneActivity DoStandaloneActivity { + get { return variantCase_ == VariantOneofCase.DoStandaloneActivity ? (global::Temporal.Omes.KitchenSink.DoStandaloneActivity) variant_ : null; } + set { + variant_ = value; + variantCase_ = value == null ? VariantOneofCase.None : VariantOneofCase.DoStandaloneActivity; + } + } + private object variant_; /// Enum of possible cases for the "variant" oneof. public enum VariantOneofCase { @@ -1634,6 +1653,7 @@ public enum VariantOneofCase { NestedActions = 4, DoDescribe = 5, DoStandaloneNexusOperation = 6, + DoStandaloneActivity = 7, } private VariantOneofCase variantCase_ = VariantOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1670,6 +1690,7 @@ public bool Equals(ClientAction other) { if (!object.Equals(NestedActions, other.NestedActions)) return false; if (!object.Equals(DoDescribe, other.DoDescribe)) return false; if (!object.Equals(DoStandaloneNexusOperation, other.DoStandaloneNexusOperation)) return false; + if (!object.Equals(DoStandaloneActivity, other.DoStandaloneActivity)) return false; if (VariantCase != other.VariantCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1684,6 +1705,7 @@ public override int GetHashCode() { if (variantCase_ == VariantOneofCase.NestedActions) hash ^= NestedActions.GetHashCode(); if (variantCase_ == VariantOneofCase.DoDescribe) hash ^= DoDescribe.GetHashCode(); if (variantCase_ == VariantOneofCase.DoStandaloneNexusOperation) hash ^= DoStandaloneNexusOperation.GetHashCode(); + if (variantCase_ == VariantOneofCase.DoStandaloneActivity) hash ^= DoStandaloneActivity.GetHashCode(); hash ^= (int) variantCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -1727,6 +1749,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(50); output.WriteMessage(DoStandaloneNexusOperation); } + if (variantCase_ == VariantOneofCase.DoStandaloneActivity) { + output.WriteRawTag(58); + output.WriteMessage(DoStandaloneActivity); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -1761,6 +1787,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(50); output.WriteMessage(DoStandaloneNexusOperation); } + if (variantCase_ == VariantOneofCase.DoStandaloneActivity) { + output.WriteRawTag(58); + output.WriteMessage(DoStandaloneActivity); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -1789,6 +1819,9 @@ public int CalculateSize() { if (variantCase_ == VariantOneofCase.DoStandaloneNexusOperation) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(DoStandaloneNexusOperation); } + if (variantCase_ == VariantOneofCase.DoStandaloneActivity) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(DoStandaloneActivity); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -1838,6 +1871,12 @@ public void MergeFrom(ClientAction other) { } DoStandaloneNexusOperation.MergeFrom(other.DoStandaloneNexusOperation); break; + case VariantOneofCase.DoStandaloneActivity: + if (DoStandaloneActivity == null) { + DoStandaloneActivity = new global::Temporal.Omes.KitchenSink.DoStandaloneActivity(); + } + DoStandaloneActivity.MergeFrom(other.DoStandaloneActivity); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -1909,6 +1948,15 @@ public void MergeFrom(pb::CodedInputStream input) { DoStandaloneNexusOperation = subBuilder; break; } + case 58: { + global::Temporal.Omes.KitchenSink.DoStandaloneActivity subBuilder = new global::Temporal.Omes.KitchenSink.DoStandaloneActivity(); + if (variantCase_ == VariantOneofCase.DoStandaloneActivity) { + subBuilder.MergeFrom(DoStandaloneActivity); + } + input.ReadMessage(subBuilder); + DoStandaloneActivity = subBuilder; + break; + } } } #endif @@ -1978,6 +2026,15 @@ public void MergeFrom(pb::CodedInputStream input) { DoStandaloneNexusOperation = subBuilder; break; } + case 58: { + global::Temporal.Omes.KitchenSink.DoStandaloneActivity subBuilder = new global::Temporal.Omes.KitchenSink.DoStandaloneActivity(); + if (variantCase_ == VariantOneofCase.DoStandaloneActivity) { + subBuilder.MergeFrom(DoStandaloneActivity); + } + input.ReadMessage(subBuilder); + DoStandaloneActivity = subBuilder; + break; + } } } } @@ -2253,6 +2310,212 @@ public void MergeFrom(pb::CodedInputStream input) { } + /// + /// DoStandaloneActivity starts an activity outside of any workflow context using + /// StartActivityExecution and polls for its outcome with PollActivityExecution. + /// Reuses ExecuteActivityAction so the activity variant, task queue, timeouts, and + /// retry policy are all configurable. Requires server-side support for + /// workflow-independent activities. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DoStandaloneActivity : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DoStandaloneActivity()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DoStandaloneActivity() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DoStandaloneActivity(DoStandaloneActivity other) : this() { + activity_ = other.activity_ != null ? other.activity_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DoStandaloneActivity Clone() { + return new DoStandaloneActivity(this); + } + + /// Field number for the "activity" field. + public const int ActivityFieldNumber = 1; + private global::Temporal.Omes.KitchenSink.ExecuteActivityAction activity_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Temporal.Omes.KitchenSink.ExecuteActivityAction Activity { + get { return activity_; } + set { + activity_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DoStandaloneActivity); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DoStandaloneActivity other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Activity, other.Activity)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (activity_ != null) hash ^= Activity.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (activity_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Activity); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (activity_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Activity); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (activity_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Activity); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DoStandaloneActivity other) { + if (other == null) { + return; + } + if (other.activity_ != null) { + if (activity_ == null) { + Activity = new global::Temporal.Omes.KitchenSink.ExecuteActivityAction(); + } + Activity.MergeFrom(other.Activity); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (activity_ == null) { + Activity = new global::Temporal.Omes.KitchenSink.ExecuteActivityAction(); + } + input.ReadMessage(Activity); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (activity_ == null) { + Activity = new global::Temporal.Omes.KitchenSink.ExecuteActivityAction(); + } + input.ReadMessage(Activity); + break; + } + } + } + } + #endif + + } + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] public sealed partial class DoSignal : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE @@ -2268,7 +2531,7 @@ public sealed partial class DoSignal : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[6]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2944,7 +3207,7 @@ public sealed partial class DoDescribe : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[7]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3097,7 +3360,7 @@ public sealed partial class DoQuery : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[8]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3430,7 +3693,7 @@ public sealed partial class DoUpdate : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[9]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3803,7 +4066,7 @@ public sealed partial class DoActionsUpdate : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[10]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4097,7 +4360,7 @@ public sealed partial class HandlerInvocation : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[11]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4316,7 +4579,7 @@ public sealed partial class WorkflowState : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[12]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4495,7 +4758,7 @@ public sealed partial class WorkflowInput : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[13]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4781,7 +5044,7 @@ public sealed partial class ActionSet : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[14]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4997,7 +5260,7 @@ public sealed partial class Action : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[15]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5978,7 +6241,7 @@ public sealed partial class AwaitableChoice : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[16]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6441,7 +6704,7 @@ public sealed partial class TimerAction : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[17]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6677,7 +6940,7 @@ public sealed partial class ExecuteActivityAction : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[21]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[22]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -11183,7 +11446,7 @@ public sealed partial class CancelWorkflowAction : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[25]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[26]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -12087,7 +12350,7 @@ public sealed partial class ReturnResultAction : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[27]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[28]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -12485,7 +12748,7 @@ public sealed partial class ContinueAsNewAction : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[31]; } + get { return global::Temporal.Omes.KitchenSink.KitchenSinkReflection.Descriptor.MessageTypes[32]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] diff --git a/workers/dotnet/WorkerLib/KitchenSink/ActivityDispatch.cs b/workers/dotnet/WorkerLib/KitchenSink/ActivityDispatch.cs new file mode 100644 index 000000000..7ceef490d --- /dev/null +++ b/workers/dotnet/WorkerLib/KitchenSink/ActivityDispatch.cs @@ -0,0 +1,58 @@ +using Google.Protobuf.WellKnownTypes; +using Temporal.Omes.KitchenSink; + +namespace Temporalio.Omes.WorkerLib.KitchenSink; + +// Maps an ExecuteActivityAction to its registered activity name and args. +// Shared by the workflow-scheduled path and the standalone-activity path. +public static class ActivityDispatch +{ + public static (string, IReadOnlyCollection) NameAndArgs(ExecuteActivityAction act) + { + if (act.Delay is { } delay) + { + return ("delay", new object[] { delay }); + } + if (act.Payload is { } payload) + { + var inputData = new byte[payload.BytesToReceive]; + for (int i = 0; i < inputData.Length; i++) + { + inputData[i] = (byte)(i % 256); + } + return ("payload", new object[] { inputData, payload.BytesToReturn }); + } + if (act.Client is { } client) + { + return ("client", new object[] { client }); + } + if (act.RetryableError is { } retryableError) + { + return ("retryable_error", new object[] { retryableError }); + } + if (act.Timeout is { } timeout) + { + return ("timeout", new object[] { timeout }); + } + if (act.Heartbeat is { } heartbeat) + { + return ("heartbeat", new object[] { heartbeat }); + } + return ("noop", Array.Empty()); + } + + public static Temporalio.Common.RetryPolicy RetryPolicyFromProto( + Temporalio.Api.Common.V1.RetryPolicy proto) + { + return new() + { + InitialInterval = proto.InitialInterval.ToTimeSpan(), + BackoffCoefficient = (float)proto.BackoffCoefficient, + MaximumInterval = proto.MaximumInterval?.ToTimeSpan(), + MaximumAttempts = proto.MaximumAttempts, + NonRetryableErrorTypes = proto.NonRetryableErrorTypes.Count == 0 + ? null + : proto.NonRetryableErrorTypes + }; + } +} diff --git a/workers/dotnet/WorkerLib/KitchenSink/ClientActionsExecutor.cs b/workers/dotnet/WorkerLib/KitchenSink/ClientActionsExecutor.cs index e3539c6cf..2d9d7bbee 100644 --- a/workers/dotnet/WorkerLib/KitchenSink/ClientActionsExecutor.cs +++ b/workers/dotnet/WorkerLib/KitchenSink/ClientActionsExecutor.cs @@ -76,8 +76,17 @@ private async Task ExecuteClientAction(ClientAction action) } else if (action.DoStandaloneNexusOperation != null) { - throw new ApplicationFailureException( - "DoStandaloneNexusOperation is not supported", "UnsupportedOperation", nonRetryable: true); + if (_errOnUnimplemented) + { + throw new ApplicationFailureException( + "DoStandaloneNexusOperation is not supported", "UnsupportedOperation", nonRetryable: true); + } + // Skip standalone nexus operations when not erroring on unimplemented + Console.WriteLine("Skipping standalone nexus operation (not implemented)"); + } + else if (action.DoStandaloneActivity != null) + { + await ExecuteStandaloneActivity(action.DoStandaloneActivity); } else { @@ -182,6 +191,31 @@ await _client.ExecuteUpdateWithStartWorkflowAsync( } } + private async Task ExecuteStandaloneActivity(DoStandaloneActivity sa) + { + var act = sa.Activity; + if (act == null) + { + throw new ArgumentException("DoStandaloneActivity.activity is required"); + } + var (actType, args) = ActivityDispatch.NameAndArgs(act); + await _client.ExecuteActivityAsync( + actType, + args, + new StartActivityOptions( + id: $"standalone-{WorkflowId}-{Guid.NewGuid():N}", + taskQueue: act.TaskQueue) + { + ScheduleToCloseTimeout = act.ScheduleToCloseTimeout?.ToTimeSpan(), + ScheduleToStartTimeout = act.ScheduleToStartTimeout?.ToTimeSpan(), + StartToCloseTimeout = act.StartToCloseTimeout?.ToTimeSpan(), + HeartbeatTimeout = act.HeartbeatTimeout?.ToTimeSpan(), + RetryPolicy = act.RetryPolicy != null + ? ActivityDispatch.RetryPolicyFromProto(act.RetryPolicy) + : null, + }); + } + private async Task ExecuteQueryAction(DoQuery query) { try diff --git a/workers/dotnet/WorkerLib/KitchenSink/KitchenSinkWorkflow.cs b/workers/dotnet/WorkerLib/KitchenSink/KitchenSinkWorkflow.cs index 684cb6ef8..c459cfa1a 100644 --- a/workers/dotnet/WorkerLib/KitchenSink/KitchenSinkWorkflow.cs +++ b/workers/dotnet/WorkerLib/KitchenSink/KitchenSinkWorkflow.cs @@ -7,7 +7,6 @@ using Temporalio.Exceptions; using Temporalio.Workflows; using Priority = Temporalio.Api.Common.V1.Priority; -using RetryPolicy = Temporalio.Api.Common.V1.RetryPolicy; namespace Temporalio.Omes.WorkerLib.KitchenSink; @@ -340,44 +339,7 @@ private async Task HandleAwaitableChoiceAsync( private Task LaunchActivity(ExecuteActivityAction eaa, CancellationTokenSource tokenSrc) { - var actType = "noop"; - var args = new List(); - if (eaa.Delay is { } delay) - { - actType = "delay"; - args.Add(delay); - } - else if (eaa.Payload is { } payload) - { - actType = "payload"; - var inputData = new byte[payload.BytesToReceive]; - for (int i = 0; i < inputData.Length; i++) - { - inputData[i] = (byte)(i % 256); - } - args.Add(inputData); - args.Add(payload.BytesToReturn); - } - else if (eaa.Client is { } client) - { - actType = "client"; - args.Add(client); - } - else if (eaa.RetryableError is { } retryableError) - { - actType = "retryable_error"; - args.Add(retryableError); - } - else if (eaa.Timeout is { } timeout) - { - actType = "timeout"; - args.Add(timeout); - } - else if (eaa.Heartbeat is { } heartbeat) - { - actType = "heartbeat"; - args.Add(heartbeat); - } + var (actType, args) = ActivityDispatch.NameAndArgs(eaa); if (eaa.IsLocal != null) { @@ -388,7 +350,7 @@ private Task LaunchActivity(ExecuteActivityAction eaa, CancellationTokenSource t StartToCloseTimeout = eaa.StartToCloseTimeout?.ToTimeSpan(), CancellationToken = tokenSrc.Token, RetryPolicy = - eaa.RetryPolicy != null ? RetryPolicyFromProto(eaa.RetryPolicy) : null + eaa.RetryPolicy != null ? ActivityDispatch.RetryPolicyFromProto(eaa.RetryPolicy) : null }; return Workflow.ExecuteLocalActivityAsync(actType, args, opts); } @@ -404,7 +366,7 @@ private Task LaunchActivity(ExecuteActivityAction eaa, CancellationTokenSource t Priority = eaa.Priority != null ? PriorityFromProto(eaa) : null, RetryPolicy = - eaa.RetryPolicy != null ? RetryPolicyFromProto(eaa.RetryPolicy) : null + eaa.RetryPolicy != null ? ActivityDispatch.RetryPolicyFromProto(eaa.RetryPolicy) : null }; return Workflow.ExecuteActivityAsync(actType, args, opts); } @@ -416,21 +378,6 @@ private static async Task ToBool(Task task) return true; } - // Duped for now, if exposed by SDK use it from there. - private static Temporalio.Common.RetryPolicy RetryPolicyFromProto(RetryPolicy proto) - { - return new() - { - InitialInterval = proto.InitialInterval.ToTimeSpan(), - BackoffCoefficient = (float)proto.BackoffCoefficient, - MaximumInterval = proto.MaximumInterval?.ToTimeSpan(), - MaximumAttempts = proto.MaximumAttempts, - NonRetryableErrorTypes = proto.NonRetryableErrorTypes.Count == 0 - ? null - : proto.NonRetryableErrorTypes - }; - } - private static Temporalio.Common.Priority PriorityFromProto(ExecuteActivityAction eaa) { if (eaa.FairnessKey != null) diff --git a/workers/go/workerlib/kitchensink/kitchen_sink.go b/workers/go/workerlib/kitchensink/kitchen_sink.go index 90a08c397..024a89670 100644 --- a/workers/go/workerlib/kitchensink/kitchen_sink.go +++ b/workers/go/workerlib/kitchensink/kitchen_sink.go @@ -347,36 +347,12 @@ func (ws *KSWorkflowState) handleAction( } func launchActivity(ctx workflow.Context, act *kitchensink.ExecuteActivityAction) error { - actType := "noop" - args := make([]interface{}, 0) - if delay := act.GetDelay(); delay != nil { - actType = "delay" - args = append(args, delay.AsDuration()) - } else if payload := act.GetPayload(); payload != nil { - actType = "payload" - inputData := make([]byte, payload.BytesToReceive) - for i := range inputData { - inputData[i] = byte(i % 256) - } - args = append(args, inputData, payload.BytesToReturn) - } else if client := act.GetClient(); client != nil { - actType = "client" - args = append(args, client) - } else if retryable := act.GetRetryableError(); retryable != nil { - actType = "retryable_error" - args = append(args, retryable) - } else if timeout := act.GetTimeout(); timeout != nil { - actType = "timeout" - args = append(args, timeout) - } else if heartbeat := act.GetHeartbeat(); heartbeat != nil { - actType = "heartbeat" - args = append(args, heartbeat) - } + actType, args := kitchensink.ActivityNameAndArgs(act) if act.GetIsLocal() != nil { opts := workflow.LocalActivityOptions{ ScheduleToCloseTimeout: act.ScheduleToCloseTimeout.AsDuration(), StartToCloseTimeout: act.StartToCloseTimeout.AsDuration(), - RetryPolicy: convertFromPBRetryPolicy(act.GetRetryPolicy()), + RetryPolicy: kitchensink.ConvertFromPBRetryPolicy(act.GetRetryPolicy()), } actCtx := workflow.WithLocalActivityOptions(ctx, opts) @@ -409,7 +385,7 @@ func launchActivity(ctx workflow.Context, act *kitchensink.ExecuteActivityAction ScheduleToStartTimeout: act.ScheduleToStartTimeout.AsDuration(), WaitForCancellation: waitForCancel, HeartbeatTimeout: act.HeartbeatTimeout.AsDuration(), - RetryPolicy: convertFromPBRetryPolicy(act.GetRetryPolicy()), + RetryPolicy: kitchensink.ConvertFromPBRetryPolicy(act.GetRetryPolicy()), Priority: priority, } actCtx := workflow.WithActivityOptions(ctx, opts) @@ -565,27 +541,6 @@ func Heartbeat(ctx context.Context, config *kitchensink.ExecuteActivityAction_He return nil } -func convertFromPBRetryPolicy(retryPolicy *common.RetryPolicy) *temporal.RetryPolicy { - if retryPolicy == nil { - return nil - } - - p := temporal.RetryPolicy{ - BackoffCoefficient: retryPolicy.BackoffCoefficient, - MaximumAttempts: retryPolicy.MaximumAttempts, - NonRetryableErrorTypes: retryPolicy.NonRetryableErrorTypes, - } - - if v := retryPolicy.MaximumInterval; v != nil { - p.MaximumInterval = v.AsDuration() - } - if v := retryPolicy.InitialInterval; v != nil { - p.InitialInterval = v.AsDuration() - } - - return &p -} - type ReturnOrErr struct { retme *common.Payload err error diff --git a/workers/java/build.gradle b/workers/java/build.gradle index d9a89af6d..c9e97c456 100644 --- a/workers/java/build.gradle +++ b/workers/java/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'com.google.guava:guava:31.0.1-jre' implementation 'com.google.code.gson:gson:2.8.9' implementation 'com.jayway.jsonpath:json-path:2.6.0' - implementation 'io.temporal:temporal-sdk:1.34.0' + implementation 'io.temporal:temporal-sdk:1.35.0' implementation 'org.reflections:reflections:0.10.2' implementation 'ch.qos.logback:logback-classic:1.2.13' implementation 'info.picocli:picocli:4.6.2' @@ -51,7 +51,7 @@ dependencies { implementation 'com.google.protobuf:protobuf-java:3.25.5' compileOnly 'javax.annotation:javax.annotation-api:1.3.2' - testImplementation 'io.temporal:temporal-testing:1.34.0' + testImplementation 'io.temporal:temporal-testing:1.35.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } diff --git a/workers/java/io/temporal/omes/KitchenSink.java b/workers/java/io/temporal/omes/KitchenSink.java index 6cf24b5b1..5ddd15855 100644 --- a/workers/java/io/temporal/omes/KitchenSink.java +++ b/workers/java/io/temporal/omes/KitchenSink.java @@ -4811,6 +4811,21 @@ public interface ClientActionOrBuilder extends */ io.temporal.omes.KitchenSink.DoStandaloneNexusOperationOrBuilder getDoStandaloneNexusOperationOrBuilder(); + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + * @return Whether the doStandaloneActivity field is set. + */ + boolean hasDoStandaloneActivity(); + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + * @return The doStandaloneActivity. + */ + io.temporal.omes.KitchenSink.DoStandaloneActivity getDoStandaloneActivity(); + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder getDoStandaloneActivityOrBuilder(); + io.temporal.omes.KitchenSink.ClientAction.VariantCase getVariantCase(); } /** @@ -4860,6 +4875,7 @@ public enum VariantCase NESTED_ACTIONS(4), DO_DESCRIBE(5), DO_STANDALONE_NEXUS_OPERATION(6), + DO_STANDALONE_ACTIVITY(7), VARIANT_NOT_SET(0); private final int value; private VariantCase(int value) { @@ -4883,6 +4899,7 @@ public static VariantCase forNumber(int value) { case 4: return NESTED_ACTIONS; case 5: return DO_DESCRIBE; case 6: return DO_STANDALONE_NEXUS_OPERATION; + case 7: return DO_STANDALONE_ACTIVITY; case 0: return VARIANT_NOT_SET; default: return null; } @@ -5084,6 +5101,37 @@ public io.temporal.omes.KitchenSink.DoStandaloneNexusOperationOrBuilder getDoSta return io.temporal.omes.KitchenSink.DoStandaloneNexusOperation.getDefaultInstance(); } + public static final int DO_STANDALONE_ACTIVITY_FIELD_NUMBER = 7; + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + * @return Whether the doStandaloneActivity field is set. + */ + @java.lang.Override + public boolean hasDoStandaloneActivity() { + return variantCase_ == 7; + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + * @return The doStandaloneActivity. + */ + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivity getDoStandaloneActivity() { + if (variantCase_ == 7) { + return (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_; + } + return io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder getDoStandaloneActivityOrBuilder() { + if (variantCase_ == 7) { + return (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_; + } + return io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -5116,6 +5164,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (variantCase_ == 6) { output.writeMessage(6, (io.temporal.omes.KitchenSink.DoStandaloneNexusOperation) variant_); } + if (variantCase_ == 7) { + output.writeMessage(7, (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_); + } getUnknownFields().writeTo(output); } @@ -5149,6 +5200,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, (io.temporal.omes.KitchenSink.DoStandaloneNexusOperation) variant_); } + if (variantCase_ == 7) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -5190,6 +5245,10 @@ public boolean equals(final java.lang.Object obj) { if (!getDoStandaloneNexusOperation() .equals(other.getDoStandaloneNexusOperation())) return false; break; + case 7: + if (!getDoStandaloneActivity() + .equals(other.getDoStandaloneActivity())) return false; + break; case 0: default: } @@ -5229,6 +5288,10 @@ public int hashCode() { hash = (37 * hash) + DO_STANDALONE_NEXUS_OPERATION_FIELD_NUMBER; hash = (53 * hash) + getDoStandaloneNexusOperation().hashCode(); break; + case 7: + hash = (37 * hash) + DO_STANDALONE_ACTIVITY_FIELD_NUMBER; + hash = (53 * hash) + getDoStandaloneActivity().hashCode(); + break; case 0: default: } @@ -5381,6 +5444,9 @@ public Builder clear() { if (doStandaloneNexusOperationBuilder_ != null) { doStandaloneNexusOperationBuilder_.clear(); } + if (doStandaloneActivityBuilder_ != null) { + doStandaloneActivityBuilder_.clear(); + } variantCase_ = 0; variant_ = null; return this; @@ -5446,6 +5512,10 @@ private void buildPartialOneofs(io.temporal.omes.KitchenSink.ClientAction result doStandaloneNexusOperationBuilder_ != null) { result.variant_ = doStandaloneNexusOperationBuilder_.build(); } + if (variantCase_ == 7 && + doStandaloneActivityBuilder_ != null) { + result.variant_ = doStandaloneActivityBuilder_.build(); + } } @java.lang.Override @@ -5517,6 +5587,10 @@ public Builder mergeFrom(io.temporal.omes.KitchenSink.ClientAction other) { mergeDoStandaloneNexusOperation(other.getDoStandaloneNexusOperation()); break; } + case DO_STANDALONE_ACTIVITY: { + mergeDoStandaloneActivity(other.getDoStandaloneActivity()); + break; + } case VARIANT_NOT_SET: { break; } @@ -5589,6 +5663,13 @@ public Builder mergeFrom( variantCase_ = 6; break; } // case 50 + case 58: { + input.readMessage( + getDoStandaloneActivityFieldBuilder().getBuilder(), + extensionRegistry); + variantCase_ = 7; + break; + } // case 58 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -6472,6 +6553,148 @@ public io.temporal.omes.KitchenSink.DoStandaloneNexusOperationOrBuilder getDoSta onChanged(); return doStandaloneNexusOperationBuilder_; } + + private com.google.protobuf.SingleFieldBuilderV3< + io.temporal.omes.KitchenSink.DoStandaloneActivity, io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder, io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder> doStandaloneActivityBuilder_; + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + * @return Whether the doStandaloneActivity field is set. + */ + @java.lang.Override + public boolean hasDoStandaloneActivity() { + return variantCase_ == 7; + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + * @return The doStandaloneActivity. + */ + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivity getDoStandaloneActivity() { + if (doStandaloneActivityBuilder_ == null) { + if (variantCase_ == 7) { + return (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_; + } + return io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } else { + if (variantCase_ == 7) { + return doStandaloneActivityBuilder_.getMessage(); + } + return io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + public Builder setDoStandaloneActivity(io.temporal.omes.KitchenSink.DoStandaloneActivity value) { + if (doStandaloneActivityBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + variant_ = value; + onChanged(); + } else { + doStandaloneActivityBuilder_.setMessage(value); + } + variantCase_ = 7; + return this; + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + public Builder setDoStandaloneActivity( + io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder builderForValue) { + if (doStandaloneActivityBuilder_ == null) { + variant_ = builderForValue.build(); + onChanged(); + } else { + doStandaloneActivityBuilder_.setMessage(builderForValue.build()); + } + variantCase_ = 7; + return this; + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + public Builder mergeDoStandaloneActivity(io.temporal.omes.KitchenSink.DoStandaloneActivity value) { + if (doStandaloneActivityBuilder_ == null) { + if (variantCase_ == 7 && + variant_ != io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance()) { + variant_ = io.temporal.omes.KitchenSink.DoStandaloneActivity.newBuilder((io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_) + .mergeFrom(value).buildPartial(); + } else { + variant_ = value; + } + onChanged(); + } else { + if (variantCase_ == 7) { + doStandaloneActivityBuilder_.mergeFrom(value); + } else { + doStandaloneActivityBuilder_.setMessage(value); + } + } + variantCase_ = 7; + return this; + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + public Builder clearDoStandaloneActivity() { + if (doStandaloneActivityBuilder_ == null) { + if (variantCase_ == 7) { + variantCase_ = 0; + variant_ = null; + onChanged(); + } + } else { + if (variantCase_ == 7) { + variantCase_ = 0; + variant_ = null; + } + doStandaloneActivityBuilder_.clear(); + } + return this; + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + public io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder getDoStandaloneActivityBuilder() { + return getDoStandaloneActivityFieldBuilder().getBuilder(); + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder getDoStandaloneActivityOrBuilder() { + if ((variantCase_ == 7) && (doStandaloneActivityBuilder_ != null)) { + return doStandaloneActivityBuilder_.getMessageOrBuilder(); + } else { + if (variantCase_ == 7) { + return (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_; + } + return io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } + } + /** + * .temporal.omes.kitchen_sink.DoStandaloneActivity do_standalone_activity = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + io.temporal.omes.KitchenSink.DoStandaloneActivity, io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder, io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder> + getDoStandaloneActivityFieldBuilder() { + if (doStandaloneActivityBuilder_ == null) { + if (!(variantCase_ == 7)) { + variant_ = io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } + doStandaloneActivityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + io.temporal.omes.KitchenSink.DoStandaloneActivity, io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder, io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder>( + (io.temporal.omes.KitchenSink.DoStandaloneActivity) variant_, + getParentForChildren(), + isClean()); + variant_ = null; + } + variantCase_ = 7; + onChanged(); + return doStandaloneActivityBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -7084,20 +7307,743 @@ public Builder mergeFrom( done = true; break; case 10: { - endpoint_ = input.readStringRequireUtf8(); + endpoint_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + service_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + operation_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object endpoint_ = ""; + /** + * string endpoint = 1; + * @return The endpoint. + */ + public java.lang.String getEndpoint() { + java.lang.Object ref = endpoint_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + endpoint_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string endpoint = 1; + * @return The bytes for endpoint. + */ + public com.google.protobuf.ByteString + getEndpointBytes() { + java.lang.Object ref = endpoint_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + endpoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string endpoint = 1; + * @param value The endpoint to set. + * @return This builder for chaining. + */ + public Builder setEndpoint( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + endpoint_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string endpoint = 1; + * @return This builder for chaining. + */ + public Builder clearEndpoint() { + endpoint_ = getDefaultInstance().getEndpoint(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string endpoint = 1; + * @param value The bytes for endpoint to set. + * @return This builder for chaining. + */ + public Builder setEndpointBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + endpoint_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object service_ = ""; + /** + * string service = 2; + * @return The service. + */ + public java.lang.String getService() { + java.lang.Object ref = service_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + service_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string service = 2; + * @return The bytes for service. + */ + public com.google.protobuf.ByteString + getServiceBytes() { + java.lang.Object ref = service_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + service_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string service = 2; + * @param value The service to set. + * @return This builder for chaining. + */ + public Builder setService( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + service_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string service = 2; + * @return This builder for chaining. + */ + public Builder clearService() { + service_ = getDefaultInstance().getService(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string service = 2; + * @param value The bytes for service to set. + * @return This builder for chaining. + */ + public Builder setServiceBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + service_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object operation_ = ""; + /** + * string operation = 3; + * @return The operation. + */ + public java.lang.String getOperation() { + java.lang.Object ref = operation_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operation_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string operation = 3; + * @return The bytes for operation. + */ + public com.google.protobuf.ByteString + getOperationBytes() { + java.lang.Object ref = operation_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operation_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string operation = 3; + * @param value The operation to set. + * @return This builder for chaining. + */ + public Builder setOperation( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + operation_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * string operation = 3; + * @return This builder for chaining. + */ + public Builder clearOperation() { + operation_ = getDefaultInstance().getOperation(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + * string operation = 3; + * @param value The bytes for operation to set. + * @return This builder for chaining. + */ + public Builder setOperationBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + operation_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:temporal.omes.kitchen_sink.DoStandaloneNexusOperation) + } + + // @@protoc_insertion_point(class_scope:temporal.omes.kitchen_sink.DoStandaloneNexusOperation) + private static final io.temporal.omes.KitchenSink.DoStandaloneNexusOperation DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new io.temporal.omes.KitchenSink.DoStandaloneNexusOperation(); + } + + public static io.temporal.omes.KitchenSink.DoStandaloneNexusOperation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DoStandaloneNexusOperation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneNexusOperation getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DoStandaloneActivityOrBuilder extends + // @@protoc_insertion_point(interface_extends:temporal.omes.kitchen_sink.DoStandaloneActivity) + com.google.protobuf.MessageOrBuilder { + + /** + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + * @return Whether the activity field is set. + */ + boolean hasActivity(); + /** + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + * @return The activity. + */ + io.temporal.omes.KitchenSink.ExecuteActivityAction getActivity(); + /** + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + */ + io.temporal.omes.KitchenSink.ExecuteActivityActionOrBuilder getActivityOrBuilder(); + } + /** + *
+   * DoStandaloneActivity starts an activity outside of any workflow context using
+   * StartActivityExecution and polls for its outcome with PollActivityExecution.
+   * Reuses ExecuteActivityAction so the activity variant, task queue, timeouts, and
+   * retry policy are all configurable. Requires server-side support for
+   * workflow-independent activities.
+   * 
+ * + * Protobuf type {@code temporal.omes.kitchen_sink.DoStandaloneActivity} + */ + public static final class DoStandaloneActivity extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:temporal.omes.kitchen_sink.DoStandaloneActivity) + DoStandaloneActivityOrBuilder { + private static final long serialVersionUID = 0L; + // Use DoStandaloneActivity.newBuilder() to construct. + private DoStandaloneActivity(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DoStandaloneActivity() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DoStandaloneActivity(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.temporal.omes.KitchenSink.internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.temporal.omes.KitchenSink.internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.temporal.omes.KitchenSink.DoStandaloneActivity.class, io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder.class); + } + + private int bitField0_; + public static final int ACTIVITY_FIELD_NUMBER = 1; + private io.temporal.omes.KitchenSink.ExecuteActivityAction activity_; + /** + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + * @return Whether the activity field is set. + */ + @java.lang.Override + public boolean hasActivity() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + * @return The activity. + */ + @java.lang.Override + public io.temporal.omes.KitchenSink.ExecuteActivityAction getActivity() { + return activity_ == null ? io.temporal.omes.KitchenSink.ExecuteActivityAction.getDefaultInstance() : activity_; + } + /** + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + */ + @java.lang.Override + public io.temporal.omes.KitchenSink.ExecuteActivityActionOrBuilder getActivityOrBuilder() { + return activity_ == null ? io.temporal.omes.KitchenSink.ExecuteActivityAction.getDefaultInstance() : activity_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getActivity()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getActivity()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof io.temporal.omes.KitchenSink.DoStandaloneActivity)) { + return super.equals(obj); + } + io.temporal.omes.KitchenSink.DoStandaloneActivity other = (io.temporal.omes.KitchenSink.DoStandaloneActivity) obj; + + if (hasActivity() != other.hasActivity()) return false; + if (hasActivity()) { + if (!getActivity() + .equals(other.getActivity())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasActivity()) { + hash = (37 * hash) + ACTIVITY_FIELD_NUMBER; + hash = (53 * hash) + getActivity().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static io.temporal.omes.KitchenSink.DoStandaloneActivity parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(io.temporal.omes.KitchenSink.DoStandaloneActivity prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * DoStandaloneActivity starts an activity outside of any workflow context using
+     * StartActivityExecution and polls for its outcome with PollActivityExecution.
+     * Reuses ExecuteActivityAction so the activity variant, task queue, timeouts, and
+     * retry policy are all configurable. Requires server-side support for
+     * workflow-independent activities.
+     * 
+ * + * Protobuf type {@code temporal.omes.kitchen_sink.DoStandaloneActivity} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:temporal.omes.kitchen_sink.DoStandaloneActivity) + io.temporal.omes.KitchenSink.DoStandaloneActivityOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.temporal.omes.KitchenSink.internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.temporal.omes.KitchenSink.internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.temporal.omes.KitchenSink.DoStandaloneActivity.class, io.temporal.omes.KitchenSink.DoStandaloneActivity.Builder.class); + } + + // Construct using io.temporal.omes.KitchenSink.DoStandaloneActivity.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getActivityFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + activity_ = null; + if (activityBuilder_ != null) { + activityBuilder_.dispose(); + activityBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return io.temporal.omes.KitchenSink.internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_descriptor; + } + + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivity getDefaultInstanceForType() { + return io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance(); + } + + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivity build() { + io.temporal.omes.KitchenSink.DoStandaloneActivity result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public io.temporal.omes.KitchenSink.DoStandaloneActivity buildPartial() { + io.temporal.omes.KitchenSink.DoStandaloneActivity result = new io.temporal.omes.KitchenSink.DoStandaloneActivity(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(io.temporal.omes.KitchenSink.DoStandaloneActivity result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.activity_ = activityBuilder_ == null + ? activity_ + : activityBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof io.temporal.omes.KitchenSink.DoStandaloneActivity) { + return mergeFrom((io.temporal.omes.KitchenSink.DoStandaloneActivity)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(io.temporal.omes.KitchenSink.DoStandaloneActivity other) { + if (other == io.temporal.omes.KitchenSink.DoStandaloneActivity.getDefaultInstance()) return this; + if (other.hasActivity()) { + mergeActivity(other.getActivity()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getActivityFieldBuilder().getBuilder(), + extensionRegistry); bitField0_ |= 0x00000001; break; } // case 10 - case 18: { - service_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000002; - break; - } // case 18 - case 26: { - operation_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000004; - break; - } // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -7115,220 +8061,125 @@ public Builder mergeFrom( } private int bitField0_; - private java.lang.Object endpoint_ = ""; + private io.temporal.omes.KitchenSink.ExecuteActivityAction activity_; + private com.google.protobuf.SingleFieldBuilderV3< + io.temporal.omes.KitchenSink.ExecuteActivityAction, io.temporal.omes.KitchenSink.ExecuteActivityAction.Builder, io.temporal.omes.KitchenSink.ExecuteActivityActionOrBuilder> activityBuilder_; /** - * string endpoint = 1; - * @return The endpoint. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + * @return Whether the activity field is set. */ - public java.lang.String getEndpoint() { - java.lang.Object ref = endpoint_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - endpoint_ = s; - return s; - } else { - return (java.lang.String) ref; - } + public boolean hasActivity() { + return ((bitField0_ & 0x00000001) != 0); } /** - * string endpoint = 1; - * @return The bytes for endpoint. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; + * @return The activity. */ - public com.google.protobuf.ByteString - getEndpointBytes() { - java.lang.Object ref = endpoint_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - endpoint_ = b; - return b; + public io.temporal.omes.KitchenSink.ExecuteActivityAction getActivity() { + if (activityBuilder_ == null) { + return activity_ == null ? io.temporal.omes.KitchenSink.ExecuteActivityAction.getDefaultInstance() : activity_; } else { - return (com.google.protobuf.ByteString) ref; + return activityBuilder_.getMessage(); } } /** - * string endpoint = 1; - * @param value The endpoint to set. - * @return This builder for chaining. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public Builder setEndpoint( - java.lang.String value) { - if (value == null) { throw new NullPointerException(); } - endpoint_ = value; + public Builder setActivity(io.temporal.omes.KitchenSink.ExecuteActivityAction value) { + if (activityBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + activity_ = value; + } else { + activityBuilder_.setMessage(value); + } bitField0_ |= 0x00000001; onChanged(); return this; } /** - * string endpoint = 1; - * @return This builder for chaining. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public Builder clearEndpoint() { - endpoint_ = getDefaultInstance().getEndpoint(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - return this; - } - /** - * string endpoint = 1; - * @param value The bytes for endpoint to set. - * @return This builder for chaining. - */ - public Builder setEndpointBytes( - com.google.protobuf.ByteString value) { - if (value == null) { throw new NullPointerException(); } - checkByteStringIsUtf8(value); - endpoint_ = value; + public Builder setActivity( + io.temporal.omes.KitchenSink.ExecuteActivityAction.Builder builderForValue) { + if (activityBuilder_ == null) { + activity_ = builderForValue.build(); + } else { + activityBuilder_.setMessage(builderForValue.build()); + } bitField0_ |= 0x00000001; onChanged(); return this; } - - private java.lang.Object service_ = ""; /** - * string service = 2; - * @return The service. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public java.lang.String getService() { - java.lang.Object ref = service_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - service_ = s; - return s; + public Builder mergeActivity(io.temporal.omes.KitchenSink.ExecuteActivityAction value) { + if (activityBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && + activity_ != null && + activity_ != io.temporal.omes.KitchenSink.ExecuteActivityAction.getDefaultInstance()) { + getActivityBuilder().mergeFrom(value); + } else { + activity_ = value; + } } else { - return (java.lang.String) ref; + activityBuilder_.mergeFrom(value); } - } - /** - * string service = 2; - * @return The bytes for service. - */ - public com.google.protobuf.ByteString - getServiceBytes() { - java.lang.Object ref = service_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - service_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; + if (activity_ != null) { + bitField0_ |= 0x00000001; + onChanged(); } - } - /** - * string service = 2; - * @param value The service to set. - * @return This builder for chaining. - */ - public Builder setService( - java.lang.String value) { - if (value == null) { throw new NullPointerException(); } - service_ = value; - bitField0_ |= 0x00000002; - onChanged(); return this; } /** - * string service = 2; - * @return This builder for chaining. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public Builder clearService() { - service_ = getDefaultInstance().getService(); - bitField0_ = (bitField0_ & ~0x00000002); + public Builder clearActivity() { + bitField0_ = (bitField0_ & ~0x00000001); + activity_ = null; + if (activityBuilder_ != null) { + activityBuilder_.dispose(); + activityBuilder_ = null; + } onChanged(); return this; } /** - * string service = 2; - * @param value The bytes for service to set. - * @return This builder for chaining. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public Builder setServiceBytes( - com.google.protobuf.ByteString value) { - if (value == null) { throw new NullPointerException(); } - checkByteStringIsUtf8(value); - service_ = value; - bitField0_ |= 0x00000002; + public io.temporal.omes.KitchenSink.ExecuteActivityAction.Builder getActivityBuilder() { + bitField0_ |= 0x00000001; onChanged(); - return this; + return getActivityFieldBuilder().getBuilder(); } - - private java.lang.Object operation_ = ""; /** - * string operation = 3; - * @return The operation. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public java.lang.String getOperation() { - java.lang.Object ref = operation_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - operation_ = s; - return s; + public io.temporal.omes.KitchenSink.ExecuteActivityActionOrBuilder getActivityOrBuilder() { + if (activityBuilder_ != null) { + return activityBuilder_.getMessageOrBuilder(); } else { - return (java.lang.String) ref; + return activity_ == null ? + io.temporal.omes.KitchenSink.ExecuteActivityAction.getDefaultInstance() : activity_; } } /** - * string operation = 3; - * @return The bytes for operation. + * .temporal.omes.kitchen_sink.ExecuteActivityAction activity = 1; */ - public com.google.protobuf.ByteString - getOperationBytes() { - java.lang.Object ref = operation_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - operation_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; + private com.google.protobuf.SingleFieldBuilderV3< + io.temporal.omes.KitchenSink.ExecuteActivityAction, io.temporal.omes.KitchenSink.ExecuteActivityAction.Builder, io.temporal.omes.KitchenSink.ExecuteActivityActionOrBuilder> + getActivityFieldBuilder() { + if (activityBuilder_ == null) { + activityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + io.temporal.omes.KitchenSink.ExecuteActivityAction, io.temporal.omes.KitchenSink.ExecuteActivityAction.Builder, io.temporal.omes.KitchenSink.ExecuteActivityActionOrBuilder>( + getActivity(), + getParentForChildren(), + isClean()); + activity_ = null; } - } - /** - * string operation = 3; - * @param value The operation to set. - * @return This builder for chaining. - */ - public Builder setOperation( - java.lang.String value) { - if (value == null) { throw new NullPointerException(); } - operation_ = value; - bitField0_ |= 0x00000004; - onChanged(); - return this; - } - /** - * string operation = 3; - * @return This builder for chaining. - */ - public Builder clearOperation() { - operation_ = getDefaultInstance().getOperation(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - return this; - } - /** - * string operation = 3; - * @param value The bytes for operation to set. - * @return This builder for chaining. - */ - public Builder setOperationBytes( - com.google.protobuf.ByteString value) { - if (value == null) { throw new NullPointerException(); } - checkByteStringIsUtf8(value); - operation_ = value; - bitField0_ |= 0x00000004; - onChanged(); - return this; + return activityBuilder_; } @java.lang.Override public final Builder setUnknownFields( @@ -7343,23 +8194,23 @@ public final Builder mergeUnknownFields( } - // @@protoc_insertion_point(builder_scope:temporal.omes.kitchen_sink.DoStandaloneNexusOperation) + // @@protoc_insertion_point(builder_scope:temporal.omes.kitchen_sink.DoStandaloneActivity) } - // @@protoc_insertion_point(class_scope:temporal.omes.kitchen_sink.DoStandaloneNexusOperation) - private static final io.temporal.omes.KitchenSink.DoStandaloneNexusOperation DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:temporal.omes.kitchen_sink.DoStandaloneActivity) + private static final io.temporal.omes.KitchenSink.DoStandaloneActivity DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.temporal.omes.KitchenSink.DoStandaloneNexusOperation(); + DEFAULT_INSTANCE = new io.temporal.omes.KitchenSink.DoStandaloneActivity(); } - public static io.temporal.omes.KitchenSink.DoStandaloneNexusOperation getDefaultInstance() { + public static io.temporal.omes.KitchenSink.DoStandaloneActivity getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public DoStandaloneNexusOperation parsePartialFrom( + public DoStandaloneActivity parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -7378,17 +8229,17 @@ public DoStandaloneNexusOperation parsePartialFrom( } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public io.temporal.omes.KitchenSink.DoStandaloneNexusOperation getDefaultInstanceForType() { + public io.temporal.omes.KitchenSink.DoStandaloneActivity getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -54573,6 +55424,11 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_temporal_omes_kitchen_sink_DoStandaloneNexusOperation_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_temporal_omes_kitchen_sink_DoSignal_descriptor; private static final @@ -54829,7 +55685,7 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( "do_signal\030\001 \001(\0132$.temporal.omes.kitchen_" + "sink.DoSignalH\000\0229\n\tdo_update\030\002 \001(\0132$.tem" + "poral.omes.kitchen_sink.DoUpdateH\000B\t\n\007va" + - "riant\"\257\003\n\014ClientAction\0229\n\tdo_signal\030\001 \001(" + + "riant\"\203\004\n\014ClientAction\0229\n\tdo_signal\030\001 \001(" + "\0132$.temporal.omes.kitchen_sink.DoSignalH" + "\000\0227\n\010do_query\030\002 \001(\0132#.temporal.omes.kitc" + "hen_sink.DoQueryH\000\0229\n\tdo_update\030\003 \001(\0132$." + @@ -54839,251 +55695,256 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( "ibe\030\005 \001(\0132&.temporal.omes.kitchen_sink.D" + "oDescribeH\000\022_\n\035do_standalone_nexus_opera" + "tion\030\006 \001(\01326.temporal.omes.kitchen_sink." + - "DoStandaloneNexusOperationH\000B\t\n\007variant\"" + - "R\n\032DoStandaloneNexusOperation\022\020\n\010endpoin" + - "t\030\001 \001(\t\022\017\n\007service\030\002 \001(\t\022\021\n\toperation\030\003 " + - "\001(\t\"\361\002\n\010DoSignal\022Q\n\021do_signal_actions\030\001 " + - "\001(\01324.temporal.omes.kitchen_sink.DoSigna" + - "l.DoSignalActionsH\000\022?\n\006custom\030\002 \001(\0132-.te" + - "mporal.omes.kitchen_sink.HandlerInvocati" + - "onH\000\022\022\n\nwith_start\030\003 \001(\010\032\261\001\n\017DoSignalAct" + - "ions\022;\n\ndo_actions\030\001 \001(\0132%.temporal.omes" + - ".kitchen_sink.ActionSetH\000\022C\n\022do_actions_" + - "in_main\030\002 \001(\0132%.temporal.omes.kitchen_si" + - "nk.ActionSetH\000\022\021\n\tsignal_id\030\003 \001(\005B\t\n\007var" + - "iantB\t\n\007variant\"\014\n\nDoDescribe\"\251\001\n\007DoQuer" + - "y\0228\n\014report_state\030\001 \001(\0132 .temporal.api.c" + - "ommon.v1.PayloadsH\000\022?\n\006custom\030\002 \001(\0132-.te" + - "mporal.omes.kitchen_sink.HandlerInvocati" + - "onH\000\022\030\n\020failure_expected\030\n \001(\010B\t\n\007varian" + - "t\"\307\001\n\010DoUpdate\022A\n\ndo_actions\030\001 \001(\0132+.tem" + - "poral.omes.kitchen_sink.DoActionsUpdateH" + - "\000\022?\n\006custom\030\002 \001(\0132-.temporal.omes.kitche" + - "n_sink.HandlerInvocationH\000\022\022\n\nwith_start" + - "\030\003 \001(\010\022\030\n\020failure_expected\030\n \001(\010B\t\n\007vari" + - "ant\"\206\001\n\017DoActionsUpdate\022;\n\ndo_actions\030\001 " + - "\001(\0132%.temporal.omes.kitchen_sink.ActionS" + - "etH\000\022+\n\treject_me\030\002 \001(\0132\026.google.protobu" + - "f.EmptyH\000B\t\n\007variant\"P\n\021HandlerInvocatio" + - "n\022\014\n\004name\030\001 \001(\t\022-\n\004args\030\002 \003(\0132\037.temporal" + - ".api.common.v1.Payload\"|\n\rWorkflowState\022" + - "?\n\003kvs\030\001 \003(\01322.temporal.omes.kitchen_sin" + - "k.WorkflowState.KvsEntry\032*\n\010KvsEntry\022\013\n\003" + - "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\250\001\n\rWorkflo" + - "wInput\022>\n\017initial_actions\030\001 \003(\0132%.tempor" + - "al.omes.kitchen_sink.ActionSet\022\035\n\025expect" + - "ed_signal_count\030\002 \001(\005\022\033\n\023expected_signal" + - "_ids\030\003 \003(\005\022\033\n\023received_signal_ids\030\004 \003(\005\"" + - "T\n\tActionSet\0223\n\007actions\030\001 \003(\0132\".temporal" + - ".omes.kitchen_sink.Action\022\022\n\nconcurrent\030" + - "\002 \001(\010\"\372\010\n\006Action\0228\n\005timer\030\001 \001(\0132\'.tempor" + - "al.omes.kitchen_sink.TimerActionH\000\022J\n\rex" + - "ec_activity\030\002 \001(\01321.temporal.omes.kitche" + - "n_sink.ExecuteActivityActionH\000\022U\n\023exec_c" + - "hild_workflow\030\003 \001(\01326.temporal.omes.kitc" + - "hen_sink.ExecuteChildWorkflowActionH\000\022N\n" + - "\024await_workflow_state\030\004 \001(\0132..temporal.o" + - "mes.kitchen_sink.AwaitWorkflowStateH\000\022C\n" + - "\013send_signal\030\005 \001(\0132,.temporal.omes.kitch" + - "en_sink.SendSignalActionH\000\022K\n\017cancel_wor" + - "kflow\030\006 \001(\01320.temporal.omes.kitchen_sink" + - ".CancelWorkflowActionH\000\022L\n\020set_patch_mar" + - "ker\030\007 \001(\01320.temporal.omes.kitchen_sink.S" + - "etPatchMarkerActionH\000\022\\\n\030upsert_search_a" + - "ttributes\030\010 \001(\01328.temporal.omes.kitchen_" + - "sink.UpsertSearchAttributesActionH\000\022C\n\013u" + - "psert_memo\030\t \001(\0132,.temporal.omes.kitchen" + - "_sink.UpsertMemoActionH\000\022G\n\022set_workflow" + - "_state\030\n \001(\0132).temporal.omes.kitchen_sin" + - "k.WorkflowStateH\000\022G\n\rreturn_result\030\013 \001(\013" + - "2..temporal.omes.kitchen_sink.ReturnResu" + - "ltActionH\000\022E\n\014return_error\030\014 \001(\0132-.tempo" + - "ral.omes.kitchen_sink.ReturnErrorActionH" + - "\000\022J\n\017continue_as_new\030\r \001(\0132/.temporal.om" + - "es.kitchen_sink.ContinueAsNewActionH\000\022B\n" + - "\021nested_action_set\030\016 \001(\0132%.temporal.omes" + - ".kitchen_sink.ActionSetH\000\022L\n\017nexus_opera" + - "tion\030\017 \001(\01321.temporal.omes.kitchen_sink." + - "ExecuteNexusOperationH\000B\t\n\007variant\"\243\002\n\017A" + - "waitableChoice\022-\n\013wait_finish\030\001 \001(\0132\026.go" + - "ogle.protobuf.EmptyH\000\022)\n\007abandon\030\002 \001(\0132\026" + - ".google.protobuf.EmptyH\000\0227\n\025cancel_befor" + - "e_started\030\003 \001(\0132\026.google.protobuf.EmptyH" + - "\000\0226\n\024cancel_after_started\030\004 \001(\0132\026.google" + - ".protobuf.EmptyH\000\0228\n\026cancel_after_comple" + - "ted\030\005 \001(\0132\026.google.protobuf.EmptyH\000B\013\n\tc" + - "ondition\"j\n\013TimerAction\022\024\n\014milliseconds\030" + - "\001 \001(\004\022E\n\020awaitable_choice\030\002 \001(\0132+.tempor" + - "al.omes.kitchen_sink.AwaitableChoice\"\352\021\n" + - "\025ExecuteActivityAction\022T\n\007generic\030\001 \001(\0132" + - "A.temporal.omes.kitchen_sink.ExecuteActi" + - "vityAction.GenericActivityH\000\022*\n\005delay\030\002 " + - "\001(\0132\031.google.protobuf.DurationH\000\022&\n\004noop" + - "\030\003 \001(\0132\026.google.protobuf.EmptyH\000\022X\n\treso" + - "urces\030\016 \001(\0132C.temporal.omes.kitchen_sink" + - ".ExecuteActivityAction.ResourcesActivity" + - "H\000\022T\n\007payload\030\022 \001(\0132A.temporal.omes.kitc" + - "hen_sink.ExecuteActivityAction.PayloadAc" + - "tivityH\000\022R\n\006client\030\023 \001(\0132@.temporal.omes" + - ".kitchen_sink.ExecuteActivityAction.Clie" + - "ntActivityH\000\022c\n\017retryable_error\030\024 \001(\0132H." + - "temporal.omes.kitchen_sink.ExecuteActivi" + - "tyAction.RetryableErrorActivityH\000\022T\n\007tim" + - "eout\030\025 \001(\0132A.temporal.omes.kitchen_sink." + - "ExecuteActivityAction.TimeoutActivityH\000\022" + - "_\n\theartbeat\030\026 \001(\0132J.temporal.omes.kitch" + - "en_sink.ExecuteActivityAction.HeartbeatT" + - "imeoutActivityH\000\022\022\n\ntask_queue\030\004 \001(\t\022O\n\007" + - "headers\030\005 \003(\0132>.temporal.omes.kitchen_si" + - "nk.ExecuteActivityAction.HeadersEntry\022<\n" + - "\031schedule_to_close_timeout\030\006 \001(\0132\031.googl" + - "e.protobuf.Duration\022<\n\031schedule_to_start" + - "_timeout\030\007 \001(\0132\031.google.protobuf.Duratio" + - "n\0229\n\026start_to_close_timeout\030\010 \001(\0132\031.goog" + - "le.protobuf.Duration\0224\n\021heartbeat_timeou" + - "t\030\t \001(\0132\031.google.protobuf.Duration\0229\n\014re" + - "try_policy\030\n \001(\0132#.temporal.api.common.v" + - "1.RetryPolicy\022*\n\010is_local\030\013 \001(\0132\026.google" + - ".protobuf.EmptyH\001\022C\n\006remote\030\014 \001(\01321.temp" + - "oral.omes.kitchen_sink.RemoteActivityOpt" + - "ionsH\001\022E\n\020awaitable_choice\030\r \001(\0132+.tempo" + - "ral.omes.kitchen_sink.AwaitableChoice\0222\n" + - "\010priority\030\017 \001(\0132 .temporal.api.common.v1" + - ".Priority\022\024\n\014fairness_key\030\020 \001(\t\022\027\n\017fairn" + - "ess_weight\030\021 \001(\002\032S\n\017GenericActivity\022\014\n\004t" + - "ype\030\001 \001(\t\0222\n\targuments\030\002 \003(\0132\037.temporal." + - "api.common.v1.Payload\032\232\001\n\021ResourcesActiv" + - "ity\022*\n\007run_for\030\001 \001(\0132\031.google.protobuf.D" + - "uration\022\031\n\021bytes_to_allocate\030\002 \001(\004\022$\n\034cp" + - "u_yield_every_n_iterations\030\003 \001(\r\022\030\n\020cpu_" + - "yield_for_ms\030\004 \001(\r\032D\n\017PayloadActivity\022\030\n" + - "\020bytes_to_receive\030\001 \001(\005\022\027\n\017bytes_to_retu" + - "rn\030\002 \001(\005\032U\n\016ClientActivity\022C\n\017client_seq" + - "uence\030\001 \001(\0132*.temporal.omes.kitchen_sink" + - ".ClientSequence\032/\n\026RetryableErrorActivit" + - "y\022\025\n\rfail_attempts\030\001 \001(\005\032\222\001\n\017TimeoutActi" + - "vity\022\025\n\rfail_attempts\030\001 \001(\005\0223\n\020success_d" + - "uration\030\002 \001(\0132\031.google.protobuf.Duration" + - "\0223\n\020failure_duration\030\003 \001(\0132\031.google.prot" + - "obuf.Duration\032\233\001\n\030HeartbeatTimeoutActivi" + - "ty\022\025\n\rfail_attempts\030\001 \001(\005\0223\n\020success_dur" + - "ation\030\002 \001(\0132\031.google.protobuf.Duration\0223" + - "\n\020failure_duration\030\003 \001(\0132\031.google.protob" + - "uf.Duration\032O\n\014HeadersEntry\022\013\n\003key\030\001 \001(\t" + - "\022.\n\005value\030\002 \001(\0132\037.temporal.api.common.v1" + - ".Payload:\0028\001B\017\n\ractivity_typeB\n\n\010localit" + - "y\"\255\n\n\032ExecuteChildWorkflowAction\022\021\n\tname" + - "space\030\002 \001(\t\022\023\n\013workflow_id\030\003 \001(\t\022\025\n\rwork" + - "flow_type\030\004 \001(\t\022\022\n\ntask_queue\030\005 \001(\t\022.\n\005i" + - "nput\030\006 \003(\0132\037.temporal.api.common.v1.Payl" + - "oad\022=\n\032workflow_execution_timeout\030\007 \001(\0132" + - "\031.google.protobuf.Duration\0227\n\024workflow_r" + - "un_timeout\030\010 \001(\0132\031.google.protobuf.Durat" + - "ion\0228\n\025workflow_task_timeout\030\t \001(\0132\031.goo" + - "gle.protobuf.Duration\022J\n\023parent_close_po" + - "licy\030\n \001(\0162-.temporal.omes.kitchen_sink." + - "ParentClosePolicy\022N\n\030workflow_id_reuse_p" + - "olicy\030\014 \001(\0162,.temporal.api.enums.v1.Work" + - "flowIdReusePolicy\0229\n\014retry_policy\030\r \001(\0132" + - "#.temporal.api.common.v1.RetryPolicy\022\025\n\r" + - "cron_schedule\030\016 \001(\t\022T\n\007headers\030\017 \003(\0132C.t" + + "DoStandaloneNexusOperationH\000\022R\n\026do_stand" + + "alone_activity\030\007 \001(\01320.temporal.omes.kit" + + "chen_sink.DoStandaloneActivityH\000B\t\n\007vari" + + "ant\"R\n\032DoStandaloneNexusOperation\022\020\n\010end" + + "point\030\001 \001(\t\022\017\n\007service\030\002 \001(\t\022\021\n\toperatio" + + "n\030\003 \001(\t\"[\n\024DoStandaloneActivity\022C\n\010activ" + + "ity\030\001 \001(\01321.temporal.omes.kitchen_sink.E" + + "xecuteActivityAction\"\361\002\n\010DoSignal\022Q\n\021do_" + + "signal_actions\030\001 \001(\01324.temporal.omes.kit" + + "chen_sink.DoSignal.DoSignalActionsH\000\022?\n\006" + + "custom\030\002 \001(\0132-.temporal.omes.kitchen_sin" + + "k.HandlerInvocationH\000\022\022\n\nwith_start\030\003 \001(" + + "\010\032\261\001\n\017DoSignalActions\022;\n\ndo_actions\030\001 \001(" + + "\0132%.temporal.omes.kitchen_sink.ActionSet" + + "H\000\022C\n\022do_actions_in_main\030\002 \001(\0132%.tempora" + + "l.omes.kitchen_sink.ActionSetH\000\022\021\n\tsigna" + + "l_id\030\003 \001(\005B\t\n\007variantB\t\n\007variant\"\014\n\nDoDe" + + "scribe\"\251\001\n\007DoQuery\0228\n\014report_state\030\001 \001(\013" + + "2 .temporal.api.common.v1.PayloadsH\000\022?\n\006" + + "custom\030\002 \001(\0132-.temporal.omes.kitchen_sin" + + "k.HandlerInvocationH\000\022\030\n\020failure_expecte" + + "d\030\n \001(\010B\t\n\007variant\"\307\001\n\010DoUpdate\022A\n\ndo_ac" + + "tions\030\001 \001(\0132+.temporal.omes.kitchen_sink" + + ".DoActionsUpdateH\000\022?\n\006custom\030\002 \001(\0132-.tem" + + "poral.omes.kitchen_sink.HandlerInvocatio" + + "nH\000\022\022\n\nwith_start\030\003 \001(\010\022\030\n\020failure_expec" + + "ted\030\n \001(\010B\t\n\007variant\"\206\001\n\017DoActionsUpdate" + + "\022;\n\ndo_actions\030\001 \001(\0132%.temporal.omes.kit" + + "chen_sink.ActionSetH\000\022+\n\treject_me\030\002 \001(\013" + + "2\026.google.protobuf.EmptyH\000B\t\n\007variant\"P\n" + + "\021HandlerInvocation\022\014\n\004name\030\001 \001(\t\022-\n\004args" + + "\030\002 \003(\0132\037.temporal.api.common.v1.Payload\"" + + "|\n\rWorkflowState\022?\n\003kvs\030\001 \003(\01322.temporal" + + ".omes.kitchen_sink.WorkflowState.KvsEntr" + + "y\032*\n\010KvsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(" + + "\t:\0028\001\"\250\001\n\rWorkflowInput\022>\n\017initial_actio" + + "ns\030\001 \003(\0132%.temporal.omes.kitchen_sink.Ac" + + "tionSet\022\035\n\025expected_signal_count\030\002 \001(\005\022\033" + + "\n\023expected_signal_ids\030\003 \003(\005\022\033\n\023received_" + + "signal_ids\030\004 \003(\005\"T\n\tActionSet\0223\n\007actions" + + "\030\001 \003(\0132\".temporal.omes.kitchen_sink.Acti" + + "on\022\022\n\nconcurrent\030\002 \001(\010\"\372\010\n\006Action\0228\n\005tim" + + "er\030\001 \001(\0132\'.temporal.omes.kitchen_sink.Ti" + + "merActionH\000\022J\n\rexec_activity\030\002 \001(\01321.tem" + + "poral.omes.kitchen_sink.ExecuteActivityA" + + "ctionH\000\022U\n\023exec_child_workflow\030\003 \001(\01326.t" + "emporal.omes.kitchen_sink.ExecuteChildWo" + - "rkflowAction.HeadersEntry\022N\n\004memo\030\020 \003(\0132" + - "@.temporal.omes.kitchen_sink.ExecuteChil" + - "dWorkflowAction.MemoEntry\022g\n\021search_attr" + - "ibutes\030\021 \003(\0132L.temporal.omes.kitchen_sin" + - "k.ExecuteChildWorkflowAction.SearchAttri" + - "butesEntry\022T\n\021cancellation_type\030\022 \001(\01629." + - "temporal.omes.kitchen_sink.ChildWorkflow" + - "CancellationType\022G\n\021versioning_intent\030\023 " + - "\001(\0162,.temporal.omes.kitchen_sink.Version" + - "ingIntent\022E\n\020awaitable_choice\030\024 \001(\0132+.te" + - "mporal.omes.kitchen_sink.AwaitableChoice" + - "\032O\n\014HeadersEntry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002" + - " \001(\0132\037.temporal.api.common.v1.Payload:\0028" + - "\001\032L\n\tMemoEntry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001" + - "(\0132\037.temporal.api.common.v1.Payload:\0028\001\032" + - "X\n\025SearchAttributesEntry\022\013\n\003key\030\001 \001(\t\022.\n" + - "\005value\030\002 \001(\0132\037.temporal.api.common.v1.Pa" + - "yload:\0028\001\"0\n\022AwaitWorkflowState\022\013\n\003key\030\001" + - " \001(\t\022\r\n\005value\030\002 \001(\t\"\337\002\n\020SendSignalAction" + - "\022\023\n\013workflow_id\030\001 \001(\t\022\016\n\006run_id\030\002 \001(\t\022\023\n" + - "\013signal_name\030\003 \001(\t\022-\n\004args\030\004 \003(\0132\037.tempo" + - "ral.api.common.v1.Payload\022J\n\007headers\030\005 \003" + - "(\01329.temporal.omes.kitchen_sink.SendSign" + - "alAction.HeadersEntry\022E\n\020awaitable_choic" + - "e\030\006 \001(\0132+.temporal.omes.kitchen_sink.Awa" + - "itableChoice\032O\n\014HeadersEntry\022\013\n\003key\030\001 \001(" + - "\t\022.\n\005value\030\002 \001(\0132\037.temporal.api.common.v" + - "1.Payload:\0028\001\";\n\024CancelWorkflowAction\022\023\n" + - "\013workflow_id\030\001 \001(\t\022\016\n\006run_id\030\002 \001(\t\"v\n\024Se" + - "tPatchMarkerAction\022\020\n\010patch_id\030\001 \001(\t\022\022\n\n" + - "deprecated\030\002 \001(\010\0228\n\014inner_action\030\003 \001(\0132\"" + - ".temporal.omes.kitchen_sink.Action\"\343\001\n\034U" + - "psertSearchAttributesAction\022i\n\021search_at" + - "tributes\030\001 \003(\0132N.temporal.omes.kitchen_s" + - "ink.UpsertSearchAttributesAction.SearchA" + - "ttributesEntry\032X\n\025SearchAttributesEntry\022" + - "\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temporal.a" + - "pi.common.v1.Payload:\0028\001\"G\n\020UpsertMemoAc" + - "tion\0223\n\rupserted_memo\030\001 \001(\0132\034.temporal.a" + - "pi.common.v1.Memo\"J\n\022ReturnResultAction\022" + - "4\n\013return_this\030\001 \001(\0132\037.temporal.api.comm" + - "on.v1.Payload\"F\n\021ReturnErrorAction\0221\n\007fa" + - "ilure\030\001 \001(\0132 .temporal.api.failure.v1.Fa" + - "ilure\"\336\006\n\023ContinueAsNewAction\022\025\n\rworkflo" + - "w_type\030\001 \001(\t\022\022\n\ntask_queue\030\002 \001(\t\0222\n\targu" + - "ments\030\003 \003(\0132\037.temporal.api.common.v1.Pay" + - "load\0227\n\024workflow_run_timeout\030\004 \001(\0132\031.goo" + - "gle.protobuf.Duration\0228\n\025workflow_task_t" + - "imeout\030\005 \001(\0132\031.google.protobuf.Duration\022" + - "G\n\004memo\030\006 \003(\01329.temporal.omes.kitchen_si" + - "nk.ContinueAsNewAction.MemoEntry\022M\n\007head" + - "ers\030\007 \003(\0132<.temporal.omes.kitchen_sink.C" + - "ontinueAsNewAction.HeadersEntry\022`\n\021searc" + - "h_attributes\030\010 \003(\0132E.temporal.omes.kitch" + - "en_sink.ContinueAsNewAction.SearchAttrib" + - "utesEntry\0229\n\014retry_policy\030\t \001(\0132#.tempor" + - "al.api.common.v1.RetryPolicy\022G\n\021versioni" + - "ng_intent\030\n \001(\0162,.temporal.omes.kitchen_" + - "sink.VersioningIntent\032L\n\tMemoEntry\022\013\n\003ke" + - "y\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temporal.api.co" + - "mmon.v1.Payload:\0028\001\032O\n\014HeadersEntry\022\013\n\003k" + - "ey\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temporal.api.c" + - "ommon.v1.Payload:\0028\001\032X\n\025SearchAttributes" + - "Entry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temp" + - "oral.api.common.v1.Payload:\0028\001\"\321\001\n\025Remot" + - "eActivityOptions\022O\n\021cancellation_type\030\001 " + - "\001(\01624.temporal.omes.kitchen_sink.Activit" + - "yCancellationType\022\036\n\026do_not_eagerly_exec" + - "ute\030\002 \001(\010\022G\n\021versioning_intent\030\003 \001(\0162,.t" + - "emporal.omes.kitchen_sink.VersioningInte" + - "nt\"\353\002\n\025ExecuteNexusOperation\022\020\n\010endpoint" + - "\030\001 \001(\t\022\021\n\toperation\030\002 \001(\t\022\r\n\005input\030\003 \001(\t" + - "\022O\n\007headers\030\004 \003(\0132>.temporal.omes.kitche" + - "n_sink.ExecuteNexusOperation.HeadersEntr" + - "y\022E\n\020awaitable_choice\030\005 \001(\0132+.temporal.o" + - "mes.kitchen_sink.AwaitableChoice\022\027\n\017expe" + - "cted_output\030\006 \001(\t\022=\n\016before_actions\030\007 \003(" + + "rkflowActionH\000\022N\n\024await_workflow_state\030\004" + + " \001(\0132..temporal.omes.kitchen_sink.AwaitW" + + "orkflowStateH\000\022C\n\013send_signal\030\005 \001(\0132,.te" + + "mporal.omes.kitchen_sink.SendSignalActio" + + "nH\000\022K\n\017cancel_workflow\030\006 \001(\01320.temporal." + + "omes.kitchen_sink.CancelWorkflowActionH\000" + + "\022L\n\020set_patch_marker\030\007 \001(\01320.temporal.om" + + "es.kitchen_sink.SetPatchMarkerActionH\000\022\\" + + "\n\030upsert_search_attributes\030\010 \001(\01328.tempo" + + "ral.omes.kitchen_sink.UpsertSearchAttrib" + + "utesActionH\000\022C\n\013upsert_memo\030\t \001(\0132,.temp" + + "oral.omes.kitchen_sink.UpsertMemoActionH" + + "\000\022G\n\022set_workflow_state\030\n \001(\0132).temporal" + + ".omes.kitchen_sink.WorkflowStateH\000\022G\n\rre" + + "turn_result\030\013 \001(\0132..temporal.omes.kitche" + + "n_sink.ReturnResultActionH\000\022E\n\014return_er" + + "ror\030\014 \001(\0132-.temporal.omes.kitchen_sink.R" + + "eturnErrorActionH\000\022J\n\017continue_as_new\030\r " + + "\001(\0132/.temporal.omes.kitchen_sink.Continu" + + "eAsNewActionH\000\022B\n\021nested_action_set\030\016 \001(" + "\0132%.temporal.omes.kitchen_sink.ActionSet" + - "\032.\n\014HeadersEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002" + - " \001(\t:\0028\001\"a\n\021NexusHandlerInput\022\r\n\005input\030\001" + - " \001(\t\022=\n\016before_actions\030\002 \003(\0132%.temporal." + - "omes.kitchen_sink.ActionSet*\244\001\n\021ParentCl" + - "osePolicy\022#\n\037PARENT_CLOSE_POLICY_UNSPECI" + - "FIED\020\000\022!\n\035PARENT_CLOSE_POLICY_TERMINATE\020" + - "\001\022\037\n\033PARENT_CLOSE_POLICY_ABANDON\020\002\022&\n\"PA" + - "RENT_CLOSE_POLICY_REQUEST_CANCEL\020\003*@\n\020Ve" + - "rsioningIntent\022\017\n\013UNSPECIFIED\020\000\022\016\n\nCOMPA" + - "TIBLE\020\001\022\013\n\007DEFAULT\020\002*\242\001\n\035ChildWorkflowCa" + - "ncellationType\022\024\n\020CHILD_WF_ABANDON\020\000\022\027\n\023" + - "CHILD_WF_TRY_CANCEL\020\001\022(\n$CHILD_WF_WAIT_C" + - "ANCELLATION_COMPLETED\020\002\022(\n$CHILD_WF_WAIT" + - "_CANCELLATION_REQUESTED\020\003*X\n\030ActivityCan" + - "cellationType\022\016\n\nTRY_CANCEL\020\000\022\037\n\033WAIT_CA" + - "NCELLATION_COMPLETED\020\001\022\013\n\007ABANDON\020\002BB\n\020i" + - "o.temporal.omesZ.github.com/temporalio/o" + - "mes/loadgen/kitchensinkb\006proto3" + "H\000\022L\n\017nexus_operation\030\017 \001(\01321.temporal.o" + + "mes.kitchen_sink.ExecuteNexusOperationH\000" + + "B\t\n\007variant\"\243\002\n\017AwaitableChoice\022-\n\013wait_" + + "finish\030\001 \001(\0132\026.google.protobuf.EmptyH\000\022)" + + "\n\007abandon\030\002 \001(\0132\026.google.protobuf.EmptyH" + + "\000\0227\n\025cancel_before_started\030\003 \001(\0132\026.googl" + + "e.protobuf.EmptyH\000\0226\n\024cancel_after_start" + + "ed\030\004 \001(\0132\026.google.protobuf.EmptyH\000\0228\n\026ca" + + "ncel_after_completed\030\005 \001(\0132\026.google.prot" + + "obuf.EmptyH\000B\013\n\tcondition\"j\n\013TimerAction" + + "\022\024\n\014milliseconds\030\001 \001(\004\022E\n\020awaitable_choi" + + "ce\030\002 \001(\0132+.temporal.omes.kitchen_sink.Aw" + + "aitableChoice\"\352\021\n\025ExecuteActivityAction\022" + + "T\n\007generic\030\001 \001(\0132A.temporal.omes.kitchen" + + "_sink.ExecuteActivityAction.GenericActiv" + + "ityH\000\022*\n\005delay\030\002 \001(\0132\031.google.protobuf.D" + + "urationH\000\022&\n\004noop\030\003 \001(\0132\026.google.protobu" + + "f.EmptyH\000\022X\n\tresources\030\016 \001(\0132C.temporal." + + "omes.kitchen_sink.ExecuteActivityAction." + + "ResourcesActivityH\000\022T\n\007payload\030\022 \001(\0132A.t" + + "emporal.omes.kitchen_sink.ExecuteActivit" + + "yAction.PayloadActivityH\000\022R\n\006client\030\023 \001(" + + "\0132@.temporal.omes.kitchen_sink.ExecuteAc" + + "tivityAction.ClientActivityH\000\022c\n\017retryab" + + "le_error\030\024 \001(\0132H.temporal.omes.kitchen_s" + + "ink.ExecuteActivityAction.RetryableError" + + "ActivityH\000\022T\n\007timeout\030\025 \001(\0132A.temporal.o" + + "mes.kitchen_sink.ExecuteActivityAction.T" + + "imeoutActivityH\000\022_\n\theartbeat\030\026 \001(\0132J.te" + + "mporal.omes.kitchen_sink.ExecuteActivity" + + "Action.HeartbeatTimeoutActivityH\000\022\022\n\ntas" + + "k_queue\030\004 \001(\t\022O\n\007headers\030\005 \003(\0132>.tempora" + + "l.omes.kitchen_sink.ExecuteActivityActio" + + "n.HeadersEntry\022<\n\031schedule_to_close_time" + + "out\030\006 \001(\0132\031.google.protobuf.Duration\022<\n\031" + + "schedule_to_start_timeout\030\007 \001(\0132\031.google" + + ".protobuf.Duration\0229\n\026start_to_close_tim" + + "eout\030\010 \001(\0132\031.google.protobuf.Duration\0224\n" + + "\021heartbeat_timeout\030\t \001(\0132\031.google.protob" + + "uf.Duration\0229\n\014retry_policy\030\n \001(\0132#.temp" + + "oral.api.common.v1.RetryPolicy\022*\n\010is_loc" + + "al\030\013 \001(\0132\026.google.protobuf.EmptyH\001\022C\n\006re" + + "mote\030\014 \001(\01321.temporal.omes.kitchen_sink." + + "RemoteActivityOptionsH\001\022E\n\020awaitable_cho" + + "ice\030\r \001(\0132+.temporal.omes.kitchen_sink.A" + + "waitableChoice\0222\n\010priority\030\017 \001(\0132 .tempo" + + "ral.api.common.v1.Priority\022\024\n\014fairness_k" + + "ey\030\020 \001(\t\022\027\n\017fairness_weight\030\021 \001(\002\032S\n\017Gen" + + "ericActivity\022\014\n\004type\030\001 \001(\t\0222\n\targuments\030" + + "\002 \003(\0132\037.temporal.api.common.v1.Payload\032\232" + + "\001\n\021ResourcesActivity\022*\n\007run_for\030\001 \001(\0132\031." + + "google.protobuf.Duration\022\031\n\021bytes_to_all" + + "ocate\030\002 \001(\004\022$\n\034cpu_yield_every_n_iterati" + + "ons\030\003 \001(\r\022\030\n\020cpu_yield_for_ms\030\004 \001(\r\032D\n\017P" + + "ayloadActivity\022\030\n\020bytes_to_receive\030\001 \001(\005" + + "\022\027\n\017bytes_to_return\030\002 \001(\005\032U\n\016ClientActiv" + + "ity\022C\n\017client_sequence\030\001 \001(\0132*.temporal." + + "omes.kitchen_sink.ClientSequence\032/\n\026Retr" + + "yableErrorActivity\022\025\n\rfail_attempts\030\001 \001(" + + "\005\032\222\001\n\017TimeoutActivity\022\025\n\rfail_attempts\030\001" + + " \001(\005\0223\n\020success_duration\030\002 \001(\0132\031.google." + + "protobuf.Duration\0223\n\020failure_duration\030\003 " + + "\001(\0132\031.google.protobuf.Duration\032\233\001\n\030Heart" + + "beatTimeoutActivity\022\025\n\rfail_attempts\030\001 \001" + + "(\005\0223\n\020success_duration\030\002 \001(\0132\031.google.pr" + + "otobuf.Duration\0223\n\020failure_duration\030\003 \001(" + + "\0132\031.google.protobuf.Duration\032O\n\014HeadersE" + + "ntry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.tempo" + + "ral.api.common.v1.Payload:\0028\001B\017\n\ractivit" + + "y_typeB\n\n\010locality\"\255\n\n\032ExecuteChildWorkf" + + "lowAction\022\021\n\tnamespace\030\002 \001(\t\022\023\n\013workflow" + + "_id\030\003 \001(\t\022\025\n\rworkflow_type\030\004 \001(\t\022\022\n\ntask" + + "_queue\030\005 \001(\t\022.\n\005input\030\006 \003(\0132\037.temporal.a" + + "pi.common.v1.Payload\022=\n\032workflow_executi" + + "on_timeout\030\007 \001(\0132\031.google.protobuf.Durat" + + "ion\0227\n\024workflow_run_timeout\030\010 \001(\0132\031.goog" + + "le.protobuf.Duration\0228\n\025workflow_task_ti" + + "meout\030\t \001(\0132\031.google.protobuf.Duration\022J" + + "\n\023parent_close_policy\030\n \001(\0162-.temporal.o" + + "mes.kitchen_sink.ParentClosePolicy\022N\n\030wo" + + "rkflow_id_reuse_policy\030\014 \001(\0162,.temporal." + + "api.enums.v1.WorkflowIdReusePolicy\0229\n\014re" + + "try_policy\030\r \001(\0132#.temporal.api.common.v" + + "1.RetryPolicy\022\025\n\rcron_schedule\030\016 \001(\t\022T\n\007" + + "headers\030\017 \003(\0132C.temporal.omes.kitchen_si" + + "nk.ExecuteChildWorkflowAction.HeadersEnt" + + "ry\022N\n\004memo\030\020 \003(\0132@.temporal.omes.kitchen" + + "_sink.ExecuteChildWorkflowAction.MemoEnt" + + "ry\022g\n\021search_attributes\030\021 \003(\0132L.temporal" + + ".omes.kitchen_sink.ExecuteChildWorkflowA" + + "ction.SearchAttributesEntry\022T\n\021cancellat" + + "ion_type\030\022 \001(\01629.temporal.omes.kitchen_s" + + "ink.ChildWorkflowCancellationType\022G\n\021ver" + + "sioning_intent\030\023 \001(\0162,.temporal.omes.kit" + + "chen_sink.VersioningIntent\022E\n\020awaitable_" + + "choice\030\024 \001(\0132+.temporal.omes.kitchen_sin" + + "k.AwaitableChoice\032O\n\014HeadersEntry\022\013\n\003key" + + "\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temporal.api.com" + + "mon.v1.Payload:\0028\001\032L\n\tMemoEntry\022\013\n\003key\030\001" + + " \001(\t\022.\n\005value\030\002 \001(\0132\037.temporal.api.commo" + + "n.v1.Payload:\0028\001\032X\n\025SearchAttributesEntr" + + "y\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temporal" + + ".api.common.v1.Payload:\0028\001\"0\n\022AwaitWorkf" + + "lowState\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\337\002\n" + + "\020SendSignalAction\022\023\n\013workflow_id\030\001 \001(\t\022\016" + + "\n\006run_id\030\002 \001(\t\022\023\n\013signal_name\030\003 \001(\t\022-\n\004a" + + "rgs\030\004 \003(\0132\037.temporal.api.common.v1.Paylo" + + "ad\022J\n\007headers\030\005 \003(\01329.temporal.omes.kitc" + + "hen_sink.SendSignalAction.HeadersEntry\022E" + + "\n\020awaitable_choice\030\006 \001(\0132+.temporal.omes" + + ".kitchen_sink.AwaitableChoice\032O\n\014Headers" + + "Entry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.temp" + + "oral.api.common.v1.Payload:\0028\001\";\n\024Cancel" + + "WorkflowAction\022\023\n\013workflow_id\030\001 \001(\t\022\016\n\006r" + + "un_id\030\002 \001(\t\"v\n\024SetPatchMarkerAction\022\020\n\010p" + + "atch_id\030\001 \001(\t\022\022\n\ndeprecated\030\002 \001(\010\0228\n\014inn" + + "er_action\030\003 \001(\0132\".temporal.omes.kitchen_" + + "sink.Action\"\343\001\n\034UpsertSearchAttributesAc" + + "tion\022i\n\021search_attributes\030\001 \003(\0132N.tempor" + + "al.omes.kitchen_sink.UpsertSearchAttribu" + + "tesAction.SearchAttributesEntry\032X\n\025Searc" + + "hAttributesEntry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002" + + " \001(\0132\037.temporal.api.common.v1.Payload:\0028" + + "\001\"G\n\020UpsertMemoAction\0223\n\rupserted_memo\030\001" + + " \001(\0132\034.temporal.api.common.v1.Memo\"J\n\022Re" + + "turnResultAction\0224\n\013return_this\030\001 \001(\0132\037." + + "temporal.api.common.v1.Payload\"F\n\021Return" + + "ErrorAction\0221\n\007failure\030\001 \001(\0132 .temporal." + + "api.failure.v1.Failure\"\336\006\n\023ContinueAsNew" + + "Action\022\025\n\rworkflow_type\030\001 \001(\t\022\022\n\ntask_qu" + + "eue\030\002 \001(\t\0222\n\targuments\030\003 \003(\0132\037.temporal." + + "api.common.v1.Payload\0227\n\024workflow_run_ti" + + "meout\030\004 \001(\0132\031.google.protobuf.Duration\0228" + + "\n\025workflow_task_timeout\030\005 \001(\0132\031.google.p" + + "rotobuf.Duration\022G\n\004memo\030\006 \003(\01329.tempora" + + "l.omes.kitchen_sink.ContinueAsNewAction." + + "MemoEntry\022M\n\007headers\030\007 \003(\0132<.temporal.om" + + "es.kitchen_sink.ContinueAsNewAction.Head" + + "ersEntry\022`\n\021search_attributes\030\010 \003(\0132E.te" + + "mporal.omes.kitchen_sink.ContinueAsNewAc" + + "tion.SearchAttributesEntry\0229\n\014retry_poli" + + "cy\030\t \001(\0132#.temporal.api.common.v1.RetryP" + + "olicy\022G\n\021versioning_intent\030\n \001(\0162,.tempo" + + "ral.omes.kitchen_sink.VersioningIntent\032L" + + "\n\tMemoEntry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132" + + "\037.temporal.api.common.v1.Payload:\0028\001\032O\n\014" + + "HeadersEntry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\013" + + "2\037.temporal.api.common.v1.Payload:\0028\001\032X\n" + + "\025SearchAttributesEntry\022\013\n\003key\030\001 \001(\t\022.\n\005v" + + "alue\030\002 \001(\0132\037.temporal.api.common.v1.Payl" + + "oad:\0028\001\"\321\001\n\025RemoteActivityOptions\022O\n\021can" + + "cellation_type\030\001 \001(\01624.temporal.omes.kit" + + "chen_sink.ActivityCancellationType\022\036\n\026do" + + "_not_eagerly_execute\030\002 \001(\010\022G\n\021versioning" + + "_intent\030\003 \001(\0162,.temporal.omes.kitchen_si" + + "nk.VersioningIntent\"\353\002\n\025ExecuteNexusOper" + + "ation\022\020\n\010endpoint\030\001 \001(\t\022\021\n\toperation\030\002 \001" + + "(\t\022\r\n\005input\030\003 \001(\t\022O\n\007headers\030\004 \003(\0132>.tem" + + "poral.omes.kitchen_sink.ExecuteNexusOper" + + "ation.HeadersEntry\022E\n\020awaitable_choice\030\005" + + " \001(\0132+.temporal.omes.kitchen_sink.Awaita" + + "bleChoice\022\027\n\017expected_output\030\006 \001(\t\022=\n\016be" + + "fore_actions\030\007 \003(\0132%.temporal.omes.kitch" + + "en_sink.ActionSet\032.\n\014HeadersEntry\022\013\n\003key" + + "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"a\n\021NexusHandle" + + "rInput\022\r\n\005input\030\001 \001(\t\022=\n\016before_actions\030" + + "\002 \003(\0132%.temporal.omes.kitchen_sink.Actio" + + "nSet*\244\001\n\021ParentClosePolicy\022#\n\037PARENT_CLO" + + "SE_POLICY_UNSPECIFIED\020\000\022!\n\035PARENT_CLOSE_" + + "POLICY_TERMINATE\020\001\022\037\n\033PARENT_CLOSE_POLIC" + + "Y_ABANDON\020\002\022&\n\"PARENT_CLOSE_POLICY_REQUE" + + "ST_CANCEL\020\003*@\n\020VersioningIntent\022\017\n\013UNSPE" + + "CIFIED\020\000\022\016\n\nCOMPATIBLE\020\001\022\013\n\007DEFAULT\020\002*\242\001" + + "\n\035ChildWorkflowCancellationType\022\024\n\020CHILD" + + "_WF_ABANDON\020\000\022\027\n\023CHILD_WF_TRY_CANCEL\020\001\022(" + + "\n$CHILD_WF_WAIT_CANCELLATION_COMPLETED\020\002" + + "\022(\n$CHILD_WF_WAIT_CANCELLATION_REQUESTED" + + "\020\003*X\n\030ActivityCancellationType\022\016\n\nTRY_CA" + + "NCEL\020\000\022\037\n\033WAIT_CANCELLATION_COMPLETED\020\001\022" + + "\013\n\007ABANDON\020\002BB\n\020io.temporal.omesZ.github" + + ".com/temporalio/omes/loadgen/kitchensink" + + "b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -55123,15 +55984,21 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_ClientAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ClientAction_descriptor, - new java.lang.String[] { "DoSignal", "DoQuery", "DoUpdate", "NestedActions", "DoDescribe", "DoStandaloneNexusOperation", "Variant", }); + new java.lang.String[] { "DoSignal", "DoQuery", "DoUpdate", "NestedActions", "DoDescribe", "DoStandaloneNexusOperation", "DoStandaloneActivity", "Variant", }); internal_static_temporal_omes_kitchen_sink_DoStandaloneNexusOperation_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_temporal_omes_kitchen_sink_DoStandaloneNexusOperation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_DoStandaloneNexusOperation_descriptor, new java.lang.String[] { "Endpoint", "Service", "Operation", }); - internal_static_temporal_omes_kitchen_sink_DoSignal_descriptor = + internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_descriptor = getDescriptor().getMessageTypes().get(6); + internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_temporal_omes_kitchen_sink_DoStandaloneActivity_descriptor, + new java.lang.String[] { "Activity", }); + internal_static_temporal_omes_kitchen_sink_DoSignal_descriptor = + getDescriptor().getMessageTypes().get(7); internal_static_temporal_omes_kitchen_sink_DoSignal_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_DoSignal_descriptor, @@ -55143,37 +56010,37 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_DoSignal_DoSignalActions_descriptor, new java.lang.String[] { "DoActions", "DoActionsInMain", "SignalId", "Variant", }); internal_static_temporal_omes_kitchen_sink_DoDescribe_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_temporal_omes_kitchen_sink_DoDescribe_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_DoDescribe_descriptor, new java.lang.String[] { }); internal_static_temporal_omes_kitchen_sink_DoQuery_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_temporal_omes_kitchen_sink_DoQuery_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_DoQuery_descriptor, new java.lang.String[] { "ReportState", "Custom", "FailureExpected", "Variant", }); internal_static_temporal_omes_kitchen_sink_DoUpdate_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_temporal_omes_kitchen_sink_DoUpdate_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_DoUpdate_descriptor, new java.lang.String[] { "DoActions", "Custom", "WithStart", "FailureExpected", "Variant", }); internal_static_temporal_omes_kitchen_sink_DoActionsUpdate_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_temporal_omes_kitchen_sink_DoActionsUpdate_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_DoActionsUpdate_descriptor, new java.lang.String[] { "DoActions", "RejectMe", "Variant", }); internal_static_temporal_omes_kitchen_sink_HandlerInvocation_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_temporal_omes_kitchen_sink_HandlerInvocation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_HandlerInvocation_descriptor, new java.lang.String[] { "Name", "Args", }); internal_static_temporal_omes_kitchen_sink_WorkflowState_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); internal_static_temporal_omes_kitchen_sink_WorkflowState_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_WorkflowState_descriptor, @@ -55185,37 +56052,37 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_WorkflowState_KvsEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_WorkflowInput_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_temporal_omes_kitchen_sink_WorkflowInput_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_WorkflowInput_descriptor, new java.lang.String[] { "InitialActions", "ExpectedSignalCount", "ExpectedSignalIds", "ReceivedSignalIds", }); internal_static_temporal_omes_kitchen_sink_ActionSet_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_temporal_omes_kitchen_sink_ActionSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ActionSet_descriptor, new java.lang.String[] { "Actions", "Concurrent", }); internal_static_temporal_omes_kitchen_sink_Action_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_temporal_omes_kitchen_sink_Action_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_Action_descriptor, new java.lang.String[] { "Timer", "ExecActivity", "ExecChildWorkflow", "AwaitWorkflowState", "SendSignal", "CancelWorkflow", "SetPatchMarker", "UpsertSearchAttributes", "UpsertMemo", "SetWorkflowState", "ReturnResult", "ReturnError", "ContinueAsNew", "NestedActionSet", "NexusOperation", "Variant", }); internal_static_temporal_omes_kitchen_sink_AwaitableChoice_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(17); internal_static_temporal_omes_kitchen_sink_AwaitableChoice_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_AwaitableChoice_descriptor, new java.lang.String[] { "WaitFinish", "Abandon", "CancelBeforeStarted", "CancelAfterStarted", "CancelAfterCompleted", "Condition", }); internal_static_temporal_omes_kitchen_sink_TimerAction_descriptor = - getDescriptor().getMessageTypes().get(17); + getDescriptor().getMessageTypes().get(18); internal_static_temporal_omes_kitchen_sink_TimerAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_TimerAction_descriptor, new java.lang.String[] { "Milliseconds", "AwaitableChoice", }); internal_static_temporal_omes_kitchen_sink_ExecuteActivityAction_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(19); internal_static_temporal_omes_kitchen_sink_ExecuteActivityAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ExecuteActivityAction_descriptor, @@ -55269,7 +56136,7 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_ExecuteActivityAction_HeadersEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_ExecuteChildWorkflowAction_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(20); internal_static_temporal_omes_kitchen_sink_ExecuteChildWorkflowAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ExecuteChildWorkflowAction_descriptor, @@ -55293,13 +56160,13 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_ExecuteChildWorkflowAction_SearchAttributesEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_AwaitWorkflowState_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(21); internal_static_temporal_omes_kitchen_sink_AwaitWorkflowState_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_AwaitWorkflowState_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_SendSignalAction_descriptor = - getDescriptor().getMessageTypes().get(21); + getDescriptor().getMessageTypes().get(22); internal_static_temporal_omes_kitchen_sink_SendSignalAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_SendSignalAction_descriptor, @@ -55311,19 +56178,19 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_SendSignalAction_HeadersEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_CancelWorkflowAction_descriptor = - getDescriptor().getMessageTypes().get(22); + getDescriptor().getMessageTypes().get(23); internal_static_temporal_omes_kitchen_sink_CancelWorkflowAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_CancelWorkflowAction_descriptor, new java.lang.String[] { "WorkflowId", "RunId", }); internal_static_temporal_omes_kitchen_sink_SetPatchMarkerAction_descriptor = - getDescriptor().getMessageTypes().get(23); + getDescriptor().getMessageTypes().get(24); internal_static_temporal_omes_kitchen_sink_SetPatchMarkerAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_SetPatchMarkerAction_descriptor, new java.lang.String[] { "PatchId", "Deprecated", "InnerAction", }); internal_static_temporal_omes_kitchen_sink_UpsertSearchAttributesAction_descriptor = - getDescriptor().getMessageTypes().get(24); + getDescriptor().getMessageTypes().get(25); internal_static_temporal_omes_kitchen_sink_UpsertSearchAttributesAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_UpsertSearchAttributesAction_descriptor, @@ -55335,25 +56202,25 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_UpsertSearchAttributesAction_SearchAttributesEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_UpsertMemoAction_descriptor = - getDescriptor().getMessageTypes().get(25); + getDescriptor().getMessageTypes().get(26); internal_static_temporal_omes_kitchen_sink_UpsertMemoAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_UpsertMemoAction_descriptor, new java.lang.String[] { "UpsertedMemo", }); internal_static_temporal_omes_kitchen_sink_ReturnResultAction_descriptor = - getDescriptor().getMessageTypes().get(26); + getDescriptor().getMessageTypes().get(27); internal_static_temporal_omes_kitchen_sink_ReturnResultAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ReturnResultAction_descriptor, new java.lang.String[] { "ReturnThis", }); internal_static_temporal_omes_kitchen_sink_ReturnErrorAction_descriptor = - getDescriptor().getMessageTypes().get(27); + getDescriptor().getMessageTypes().get(28); internal_static_temporal_omes_kitchen_sink_ReturnErrorAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ReturnErrorAction_descriptor, new java.lang.String[] { "Failure", }); internal_static_temporal_omes_kitchen_sink_ContinueAsNewAction_descriptor = - getDescriptor().getMessageTypes().get(28); + getDescriptor().getMessageTypes().get(29); internal_static_temporal_omes_kitchen_sink_ContinueAsNewAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ContinueAsNewAction_descriptor, @@ -55377,13 +56244,13 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_ContinueAsNewAction_SearchAttributesEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_RemoteActivityOptions_descriptor = - getDescriptor().getMessageTypes().get(29); + getDescriptor().getMessageTypes().get(30); internal_static_temporal_omes_kitchen_sink_RemoteActivityOptions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_RemoteActivityOptions_descriptor, new java.lang.String[] { "CancellationType", "DoNotEagerlyExecute", "VersioningIntent", }); internal_static_temporal_omes_kitchen_sink_ExecuteNexusOperation_descriptor = - getDescriptor().getMessageTypes().get(30); + getDescriptor().getMessageTypes().get(31); internal_static_temporal_omes_kitchen_sink_ExecuteNexusOperation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_ExecuteNexusOperation_descriptor, @@ -55395,7 +56262,7 @@ public io.temporal.omes.KitchenSink.NexusHandlerInput getDefaultInstanceForType( internal_static_temporal_omes_kitchen_sink_ExecuteNexusOperation_HeadersEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_temporal_omes_kitchen_sink_NexusHandlerInput_descriptor = - getDescriptor().getMessageTypes().get(31); + getDescriptor().getMessageTypes().get(32); internal_static_temporal_omes_kitchen_sink_NexusHandlerInput_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_temporal_omes_kitchen_sink_NexusHandlerInput_descriptor, diff --git a/workers/java/io/temporal/omes/workerlib/kitchensink/ActivityDispatch.java b/workers/java/io/temporal/omes/workerlib/kitchensink/ActivityDispatch.java new file mode 100644 index 000000000..5b882ad07 --- /dev/null +++ b/workers/java/io/temporal/omes/workerlib/kitchensink/ActivityDispatch.java @@ -0,0 +1,50 @@ +package io.temporal.omes.workerlib.kitchensink; + +import io.temporal.omes.KitchenSink; +import java.util.ArrayList; +import java.util.List; + +// Maps an ExecuteActivityAction to its registered activity name and args. +// Shared by the workflow-scheduled path and the standalone-activity path. +public final class ActivityDispatch { + final String type; + final List args; + + private ActivityDispatch(String type, List args) { + this.type = type; + this.args = args; + } + + static ActivityDispatch nameAndArgs(KitchenSink.ExecuteActivityAction act) { + String type; + List args = new ArrayList<>(); + if (act.hasDelay()) { + type = "delay"; + args.add(act.getDelay()); + } else if (act.hasPayload()) { + type = "payload"; + KitchenSink.ExecuteActivityAction.PayloadActivity payload = act.getPayload(); + byte[] inputData = new byte[payload.getBytesToReceive()]; + for (int i = 0; i < inputData.length; i++) { + inputData[i] = (byte) (i % 256); + } + args.add(inputData); + args.add(payload.getBytesToReturn()); + } else if (act.hasClient()) { + type = "client"; + args.add(act.getClient()); + } else if (act.hasRetryableError()) { + type = "retryable_error"; + args.add(act.getRetryableError()); + } else if (act.hasTimeout()) { + type = "timeout"; + args.add(act.getTimeout()); + } else if (act.hasHeartbeat()) { + type = "heartbeat"; + args.add(act.getHeartbeat()); + } else { + type = "noop"; + } + return new ActivityDispatch(type, args); + } +} diff --git a/workers/java/io/temporal/omes/workerlib/kitchensink/ClientActionExecutor.java b/workers/java/io/temporal/omes/workerlib/kitchensink/ClientActionExecutor.java index c8f7f757b..1d3923346 100644 --- a/workers/java/io/temporal/omes/workerlib/kitchensink/ClientActionExecutor.java +++ b/workers/java/io/temporal/omes/workerlib/kitchensink/ClientActionExecutor.java @@ -3,6 +3,9 @@ import io.temporal.api.common.v1.WorkflowExecution; import io.temporal.api.enums.v1.WorkflowIdConflictPolicy; import io.temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest; +import io.temporal.client.ActivityClient; +import io.temporal.client.ActivityClientOptions; +import io.temporal.client.StartActivityOptions; import io.temporal.client.UpdateOptions; import io.temporal.client.WorkflowClient; import io.temporal.client.WorkflowOptions; @@ -72,8 +75,14 @@ private void executeClientAction(KitchenSink.ClientAction action) { } else if (action.hasNestedActions()) { executeClientActionSet(action.getNestedActions()); } else if (action.hasDoStandaloneNexusOperation()) { - throw ApplicationFailure.newNonRetryableFailure( - "DoStandaloneNexusOperation is not supported", "UnsupportedOperation"); + if (errOnUnimplemented) { + throw ApplicationFailure.newNonRetryableFailure( + "DoStandaloneNexusOperation is not supported", "UnsupportedOperation"); + } + // Skip standalone nexus operations when not erroring on unimplemented + System.out.println("Skipping standalone nexus operation (not implemented)"); + } else if (action.hasDoStandaloneActivity()) { + executeStandaloneActivity(action.getDoStandaloneActivity()); } else { throw new IllegalArgumentException("Client action must have a recognized variant"); } @@ -153,6 +162,42 @@ private void executeUpdateAction(KitchenSink.DoUpdate update) { } } + private void executeStandaloneActivity(KitchenSink.DoStandaloneActivity sa) { + if (!sa.hasActivity()) { + throw new IllegalArgumentException("DoStandaloneActivity.activity is required"); + } + KitchenSink.ExecuteActivityAction act = sa.getActivity(); + ActivityDispatch dispatch = ActivityDispatch.nameAndArgs(act); + + StartActivityOptions.Builder options = + StartActivityOptions.newBuilder() + .setId("standalone-" + workflowId + "-" + System.nanoTime()) + .setTaskQueue(act.getTaskQueue()) + .setStartToCloseTimeout( + KitchenSinkWorkflowImpl.toJavaDuration(act.getStartToCloseTimeout())) + .setRetryOptions(KitchenSinkWorkflowImpl.buildRetryOptions(act.getRetryPolicy())); + if (act.hasScheduleToCloseTimeout()) { + options.setScheduleToCloseTimeout( + KitchenSinkWorkflowImpl.toJavaDuration(act.getScheduleToCloseTimeout())); + } + if (act.hasScheduleToStartTimeout()) { + options.setScheduleToStartTimeout( + KitchenSinkWorkflowImpl.toJavaDuration(act.getScheduleToStartTimeout())); + } + if (act.hasHeartbeatTimeout()) { + options.setHeartbeatTimeout( + KitchenSinkWorkflowImpl.toJavaDuration(act.getHeartbeatTimeout())); + } + + ActivityClient activityClient = + ActivityClient.newInstance( + client.getWorkflowServiceStubs(), + ActivityClientOptions.newBuilder() + .setNamespace(client.getOptions().getNamespace()) + .build()); + activityClient.execute(dispatch.type, options.build(), dispatch.args.toArray()); + } + private void executeQueryAction(KitchenSink.DoQuery query) { try { WorkflowStub stub = client.newUntypedWorkflowStub(workflowId); diff --git a/workers/java/io/temporal/omes/workerlib/kitchensink/KitchenSinkWorkflowImpl.java b/workers/java/io/temporal/omes/workerlib/kitchensink/KitchenSinkWorkflowImpl.java index 2082e0bf9..a141a386b 100644 --- a/workers/java/io/temporal/omes/workerlib/kitchensink/KitchenSinkWorkflowImpl.java +++ b/workers/java/io/temporal/omes/workerlib/kitchensink/KitchenSinkWorkflowImpl.java @@ -304,62 +304,11 @@ private void launchChildWorkflow(KitchenSink.ExecuteChildWorkflowAction executeC } private void launchActivity(KitchenSink.ExecuteActivityAction executeActivity) { - String activityType; - List args = new ArrayList<>(); - - if (executeActivity.hasDelay()) { - activityType = "delay"; - args.add(executeActivity.getDelay()); - } else if (executeActivity.hasPayload()) { - activityType = "payload"; - KitchenSink.ExecuteActivityAction.PayloadActivity payload = executeActivity.getPayload(); - byte[] inputData = new byte[payload.getBytesToReceive()]; - for (int i = 0; i < inputData.length; i++) { - inputData[i] = (byte) (i % 256); - } - args.add(inputData); - args.add(payload.getBytesToReturn()); - } else if (executeActivity.hasClient()) { - activityType = "client"; - args.add(executeActivity.getClient()); - } else if (executeActivity.hasRetryableError()) { - activityType = "retryable_error"; - args.add(executeActivity.getRetryableError()); - } else if (executeActivity.hasTimeout()) { - activityType = "timeout"; - args.add(executeActivity.getTimeout()); - } else if (executeActivity.hasHeartbeat()) { - activityType = "heartbeat"; - args.add(executeActivity.getHeartbeat()); - } else { - activityType = "noop"; - } + ActivityDispatch dispatch = ActivityDispatch.nameAndArgs(executeActivity); + String activityType = dispatch.type; + List args = dispatch.args; - RetryOptions.Builder retryOptions = - RetryOptions.newBuilder() - .setDoNotRetry( - executeActivity - .getRetryPolicy() - .getNonRetryableErrorTypesList() - .toArray(new String[0])) - .setMaximumAttempts(executeActivity.getRetryPolicy().getMaximumAttempts()); - - Duration initialInterval = - toJavaDuration(executeActivity.getRetryPolicy().getInitialInterval()); - if (initialInterval != Duration.ZERO) { - retryOptions.setInitialInterval(initialInterval); - } - - Duration maximumInterval = - toJavaDuration(executeActivity.getRetryPolicy().getMaximumInterval()); - if (maximumInterval != Duration.ZERO) { - retryOptions.setMaximumInterval(maximumInterval); - } - - double backoff = executeActivity.getRetryPolicy().getBackoffCoefficient(); - if (backoff != 0.0) { - retryOptions.setBackoffCoefficient(backoff); - } + RetryOptions retryOptions = buildRetryOptions(executeActivity.getRetryPolicy()); Priority.Builder prio = Priority.newBuilder(); io.temporal.api.common.v1.Priority priority = executeActivity.getPriority(); @@ -377,7 +326,7 @@ private void launchActivity(KitchenSink.ExecuteActivityAction executeActivity) { LocalActivityOptions.Builder builder = LocalActivityOptions.newBuilder() .setStartToCloseTimeout(toJavaDuration(executeActivity.getStartToCloseTimeout())) - .setRetryOptions(retryOptions.build()); + .setRetryOptions(retryOptions); if (executeActivity.hasScheduleToCloseTimeout()) { builder.setScheduleToCloseTimeout( @@ -408,7 +357,7 @@ private void launchActivity(KitchenSink.ExecuteActivityAction executeActivity) { .setDisableEagerExecution(remoteOptions.getDoNotEagerlyExecute()) .setVersioningIntent(getVersioningIntent(remoteOptions.getVersioningIntent())) .setCancellationType(getActivityCancellationType(remoteOptions.getCancellationType())) - .setRetryOptions(retryOptions.build()) + .setRetryOptions(retryOptions) .setPriority(prio.build()); if (executeActivity.hasScheduleToCloseTimeout()) { @@ -530,6 +479,26 @@ public static Duration toJavaDuration(com.google.protobuf.Duration d) { return Duration.ofMillis(Durations.toMillis(d)); } + public static RetryOptions buildRetryOptions(io.temporal.api.common.v1.RetryPolicy proto) { + RetryOptions.Builder builder = + RetryOptions.newBuilder() + .setDoNotRetry(proto.getNonRetryableErrorTypesList().toArray(new String[0])) + .setMaximumAttempts(proto.getMaximumAttempts()); + Duration initialInterval = toJavaDuration(proto.getInitialInterval()); + if (initialInterval != Duration.ZERO) { + builder.setInitialInterval(initialInterval); + } + Duration maximumInterval = toJavaDuration(proto.getMaximumInterval()); + if (maximumInterval != Duration.ZERO) { + builder.setMaximumInterval(maximumInterval); + } + double backoff = proto.getBackoffCoefficient(); + if (backoff != 0.0) { + builder.setBackoffCoefficient(backoff); + } + return builder.build(); + } + public static com.google.protobuf.Duration toProtoDuration(Duration d) { if (d == null) { return Durations.ZERO; diff --git a/workers/proto/kitchen_sink/kitchen_sink.proto b/workers/proto/kitchen_sink/kitchen_sink.proto index cb32da6ff..fe0d04e19 100644 --- a/workers/proto/kitchen_sink/kitchen_sink.proto +++ b/workers/proto/kitchen_sink/kitchen_sink.proto @@ -53,6 +53,7 @@ message ClientAction { ClientActionSet nested_actions = 4; DoDescribe do_describe = 5; DoStandaloneNexusOperation do_standalone_nexus_operation = 6; + DoStandaloneActivity do_standalone_activity = 7; } } @@ -64,6 +65,15 @@ message DoStandaloneNexusOperation { string operation = 3; } +// DoStandaloneActivity starts an activity outside of any workflow context using +// StartActivityExecution and polls for its outcome with PollActivityExecution. +// Reuses ExecuteActivityAction so the activity variant, task queue, timeouts, and +// retry policy are all configurable. Requires server-side support for +// workflow-independent activities. +message DoStandaloneActivity { + ExecuteActivityAction activity = 1; +} + message DoSignal { message DoSignalActions { oneof variant { diff --git a/workers/python/activity_dispatch.py b/workers/python/activity_dispatch.py new file mode 100644 index 000000000..db9db9317 --- /dev/null +++ b/workers/python/activity_dispatch.py @@ -0,0 +1,32 @@ +from datetime import timedelta +from typing import Any, Optional + +from protos.kitchen_sink_pb2 import ExecuteActivityAction + + +def timeout_or_none(act: ExecuteActivityAction, field: str) -> Optional[timedelta]: + if act.HasField(field): + d = getattr(act, field) + return timedelta(seconds=d.seconds, microseconds=d.nanos / 1000) + return None + + +def activity_name_and_args(act: ExecuteActivityAction) -> tuple[str, list[Any]]: + """Map an ExecuteActivityAction to its registered activity name and args. + + Shared by the workflow-scheduled path and the standalone-activity path. + """ + if act.HasField("delay"): + return "delay", [act.delay] + elif act.HasField("payload"): + input_data = bytes(i % 256 for i in range(act.payload.bytes_to_receive)) + return "payload", [input_data, act.payload.bytes_to_return] + elif act.HasField("client"): + return "client", [act.client] + elif act.HasField("retryable_error"): + return "retryable_error", [act.retryable_error] + elif act.HasField("timeout"): + return "timeout", [act.timeout] + elif act.HasField("heartbeat"): + return "heartbeat", [act.heartbeat] + return "noop", [] diff --git a/workers/python/client_action_executor.py b/workers/python/client_action_executor.py index 94c8c3aba..c77a5dad0 100644 --- a/workers/python/client_action_executor.py +++ b/workers/python/client_action_executor.py @@ -1,15 +1,17 @@ -from typing import Any +import time from temporalio.client import Client, WithStartWorkflowOperation -from temporalio.common import WorkflowIDConflictPolicy +from temporalio.common import RetryPolicy, WorkflowIDConflictPolicy from temporalio.exceptions import ApplicationError +from activity_dispatch import activity_name_and_args, timeout_or_none from protos.kitchen_sink_pb2 import ( ClientAction, ClientActionSet, ClientSequence, DoQuery, DoSignal, + DoStandaloneActivity, DoUpdate, ) @@ -59,7 +61,14 @@ async def _execute_client_action(self, action: ClientAction): elif action.HasField("nested_actions"): await self._execute_client_action_set(action.nested_actions) elif action.HasField("do_standalone_nexus_operation"): - raise NotImplementedError("DoStandaloneNexusOperation is not supported") + if self.err_on_unimplemented: + raise ApplicationError( + "DoStandaloneNexusOperation is not supported", non_retryable=True + ) + # Skip standalone nexus operations when not erroring on unimplemented + print("Skipping standalone nexus operation (not implemented)") + elif action.HasField("do_standalone_activity"): + await self._execute_standalone_activity(action.do_standalone_activity) else: raise ValueError("Client action must have a recognized variant") @@ -120,6 +129,25 @@ async def _execute_update_action(self, update: DoUpdate): if not update.failure_expected: raise + async def _execute_standalone_activity(self, sa: DoStandaloneActivity): + if not sa.HasField("activity"): + raise ValueError("DoStandaloneActivity.activity is required") + act = sa.activity + act_type, args = activity_name_and_args(act) + await self.client.execute_activity( + act_type, + args=args, + id=f"standalone-{self.workflow_id}-{time.time_ns()}", + task_queue=act.task_queue, + schedule_to_close_timeout=timeout_or_none(act, "schedule_to_close_timeout"), + schedule_to_start_timeout=timeout_or_none(act, "schedule_to_start_timeout"), + start_to_close_timeout=timeout_or_none(act, "start_to_close_timeout"), + heartbeat_timeout=timeout_or_none(act, "heartbeat_timeout"), + retry_policy=RetryPolicy.from_proto(act.retry_policy) + if act.HasField("retry_policy") + else None, + ) + async def _execute_query_action(self, query: DoQuery): try: if query.HasField("report_state"): diff --git a/workers/python/kitchen_sink.py b/workers/python/kitchen_sink.py index c4d85c3d8..11319eb12 100644 --- a/workers/python/kitchen_sink.py +++ b/workers/python/kitchen_sink.py @@ -1,7 +1,6 @@ from __future__ import annotations import asyncio -from datetime import timedelta from typing import Any, Awaitable, Callable, Coroutine, Optional, TypeVar, Union import temporalio.workflow @@ -16,6 +15,7 @@ ) from temporalio.workflow import ActivityHandle, ChildWorkflowHandle +from activity_dispatch import activity_name_and_args, timeout_or_none from protos.kitchen_sink_pb2 import ( Action, ActionSet, @@ -201,31 +201,7 @@ async def handle_action(self, action: Action) -> Optional[Payload]: def launch_activity(execute_activity: ExecuteActivityAction) -> ActivityHandle: - act_type = "noop" - args: list[Any] = [] - - if execute_activity.HasField("delay"): - act_type = "delay" - args.append(execute_activity.delay) - elif execute_activity.HasField("payload"): - act_type = "payload" - input_data = bytes( - i % 256 for i in range(execute_activity.payload.bytes_to_receive) - ) - args.append(input_data) - args.append(execute_activity.payload.bytes_to_return) - elif execute_activity.HasField("client"): - act_type = "client" - args.append(execute_activity.client) - elif execute_activity.HasField("retryable_error"): - act_type = "retryable_error" - args.append(execute_activity.retryable_error) - elif execute_activity.HasField("timeout"): - act_type = "timeout" - args.append(execute_activity.timeout) - elif execute_activity.HasField("heartbeat"): - act_type = "heartbeat" - args.append(execute_activity.heartbeat) + act_type, args = activity_name_and_args(execute_activity) if execute_activity.HasField("is_local"): activity_task = workflow.start_local_activity( @@ -374,17 +350,6 @@ async def handle_awaitable_choice( # Various proto conversions below ============================================== -def timeout_or_none( - activity_action: ExecuteActivityAction, timeout_field: str -) -> Optional[timedelta]: - if activity_action.HasField(timeout_field): - return timedelta( - seconds=getattr(activity_action, timeout_field).seconds, - microseconds=getattr(activity_action, timeout_field).nanos / 1000, - ) - return None - - def convert_act_cancel_type( ctype: ActivityCancellationType, ) -> temporalio.workflow.ActivityCancellationType: diff --git a/workers/python/protos/kitchen_sink_pb2.py b/workers/python/protos/kitchen_sink_pb2.py index 7255a21d8..4da0d616a 100644 --- a/workers/python/protos/kitchen_sink_pb2.py +++ b/workers/python/protos/kitchen_sink_pb2.py @@ -19,7 +19,7 @@ from temporalio.api.enums.v1 import workflow_pb2 as temporal_dot_api_dot_enums_dot_v1_dot_workflow__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12kitchen_sink.proto\x12\x1atemporal.omes.kitchen_sink\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\"\xe1\x01\n\tTestInput\x12\x41\n\x0eworkflow_input\x18\x01 \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowInput\x12\x43\n\x0f\x63lient_sequence\x18\x02 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x12L\n\x11with_start_action\x18\x03 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.WithStartClientAction\"R\n\x0e\x43lientSequence\x12@\n\x0b\x61\x63tion_sets\x18\x01 \x03(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSet\"\xbf\x01\n\x0f\x43lientActionSet\x12\x39\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32(.temporal.omes.kitchen_sink.ClientAction\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\x12.\n\x0bwait_at_end\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n%wait_for_current_run_to_finish_at_end\x18\x04 \x01(\x08\"\x98\x01\n\x15WithStartClientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x39\n\tdo_update\x18\x02 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x42\t\n\x07variant\"\xaf\x03\n\x0c\x43lientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x37\n\x08\x64o_query\x18\x02 \x01(\x0b\x32#.temporal.omes.kitchen_sink.DoQueryH\x00\x12\x39\n\tdo_update\x18\x03 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x12\x45\n\x0enested_actions\x18\x04 \x01(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSetH\x00\x12=\n\x0b\x64o_describe\x18\x05 \x01(\x0b\x32&.temporal.omes.kitchen_sink.DoDescribeH\x00\x12_\n\x1d\x64o_standalone_nexus_operation\x18\x06 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.DoStandaloneNexusOperationH\x00\x42\t\n\x07variant\"R\n\x1a\x44oStandaloneNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x11\n\toperation\x18\x03 \x01(\t\"\xf1\x02\n\x08\x44oSignal\x12Q\n\x11\x64o_signal_actions\x18\x01 \x01(\x0b\x32\x34.temporal.omes.kitchen_sink.DoSignal.DoSignalActionsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x1a\xb1\x01\n\x0f\x44oSignalActions\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x43\n\x12\x64o_actions_in_main\x18\x02 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x11\n\tsignal_id\x18\x03 \x01(\x05\x42\t\n\x07variantB\t\n\x07variant\"\x0c\n\nDoDescribe\"\xa9\x01\n\x07\x44oQuery\x12\x38\n\x0creport_state\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.PayloadsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\xc7\x01\n\x08\x44oUpdate\x12\x41\n\ndo_actions\x18\x01 \x01(\x0b\x32+.temporal.omes.kitchen_sink.DoActionsUpdateH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\x86\x01\n\x0f\x44oActionsUpdate\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12+\n\treject_me\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\t\n\x07variant\"P\n\x11HandlerInvocation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12-\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\"|\n\rWorkflowState\x12?\n\x03kvs\x18\x01 \x03(\x0b\x32\x32.temporal.omes.kitchen_sink.WorkflowState.KvsEntry\x1a*\n\x08KvsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa8\x01\n\rWorkflowInput\x12>\n\x0finitial_actions\x18\x01 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x12\x1d\n\x15\x65xpected_signal_count\x18\x02 \x01(\x05\x12\x1b\n\x13\x65xpected_signal_ids\x18\x03 \x03(\x05\x12\x1b\n\x13received_signal_ids\x18\x04 \x03(\x05\"T\n\tActionSet\x12\x33\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\".temporal.omes.kitchen_sink.Action\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\"\xfa\x08\n\x06\x41\x63tion\x12\x38\n\x05timer\x18\x01 \x01(\x0b\x32\'.temporal.omes.kitchen_sink.TimerActionH\x00\x12J\n\rexec_activity\x18\x02 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteActivityActionH\x00\x12U\n\x13\x65xec_child_workflow\x18\x03 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.ExecuteChildWorkflowActionH\x00\x12N\n\x14\x61wait_workflow_state\x18\x04 \x01(\x0b\x32..temporal.omes.kitchen_sink.AwaitWorkflowStateH\x00\x12\x43\n\x0bsend_signal\x18\x05 \x01(\x0b\x32,.temporal.omes.kitchen_sink.SendSignalActionH\x00\x12K\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.CancelWorkflowActionH\x00\x12L\n\x10set_patch_marker\x18\x07 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.SetPatchMarkerActionH\x00\x12\\\n\x18upsert_search_attributes\x18\x08 \x01(\x0b\x32\x38.temporal.omes.kitchen_sink.UpsertSearchAttributesActionH\x00\x12\x43\n\x0bupsert_memo\x18\t \x01(\x0b\x32,.temporal.omes.kitchen_sink.UpsertMemoActionH\x00\x12G\n\x12set_workflow_state\x18\n \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowStateH\x00\x12G\n\rreturn_result\x18\x0b \x01(\x0b\x32..temporal.omes.kitchen_sink.ReturnResultActionH\x00\x12\x45\n\x0creturn_error\x18\x0c \x01(\x0b\x32-.temporal.omes.kitchen_sink.ReturnErrorActionH\x00\x12J\n\x0f\x63ontinue_as_new\x18\r \x01(\x0b\x32/.temporal.omes.kitchen_sink.ContinueAsNewActionH\x00\x12\x42\n\x11nested_action_set\x18\x0e \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12L\n\x0fnexus_operation\x18\x0f \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteNexusOperationH\x00\x42\t\n\x07variant\"\xa3\x02\n\x0f\x41waitableChoice\x12-\n\x0bwait_finish\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12)\n\x07\x61\x62\x61ndon\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x37\n\x15\x63\x61ncel_before_started\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x36\n\x14\x63\x61ncel_after_started\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x38\n\x16\x63\x61ncel_after_completed\x18\x05 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x0b\n\tcondition\"j\n\x0bTimerAction\x12\x14\n\x0cmilliseconds\x18\x01 \x01(\x04\x12\x45\n\x10\x61waitable_choice\x18\x02 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\"\xea\x11\n\x15\x45xecuteActivityAction\x12T\n\x07generic\x18\x01 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivityH\x00\x12*\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12&\n\x04noop\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12X\n\tresources\x18\x0e \x01(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivityH\x00\x12T\n\x07payload\x18\x12 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivityH\x00\x12R\n\x06\x63lient\x18\x13 \x01(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivityH\x00\x12\x63\n\x0fretryable_error\x18\x14 \x01(\x0b\x32H.temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivityH\x00\x12T\n\x07timeout\x18\x15 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivityH\x00\x12_\n\theartbeat\x18\x16 \x01(\x0b\x32J.temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivityH\x00\x12\x12\n\ntask_queue\x18\x04 \x01(\t\x12O\n\x07headers\x18\x05 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\n \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12*\n\x08is_local\x18\x0b \x01(\x0b\x32\x16.google.protobuf.EmptyH\x01\x12\x43\n\x06remote\x18\x0c \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.RemoteActivityOptionsH\x01\x12\x45\n\x10\x61waitable_choice\x18\r \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x32\n\x08priority\x18\x0f \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12\x14\n\x0c\x66\x61irness_key\x18\x10 \x01(\t\x12\x17\n\x0f\x66\x61irness_weight\x18\x11 \x01(\x02\x1aS\n\x0fGenericActivity\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x32\n\targuments\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x1a\x9a\x01\n\x11ResourcesActivity\x12*\n\x07run_for\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x11\x62ytes_to_allocate\x18\x02 \x01(\x04\x12$\n\x1c\x63pu_yield_every_n_iterations\x18\x03 \x01(\r\x12\x18\n\x10\x63pu_yield_for_ms\x18\x04 \x01(\r\x1a\x44\n\x0fPayloadActivity\x12\x18\n\x10\x62ytes_to_receive\x18\x01 \x01(\x05\x12\x17\n\x0f\x62ytes_to_return\x18\x02 \x01(\x05\x1aU\n\x0e\x43lientActivity\x12\x43\n\x0f\x63lient_sequence\x18\x01 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x1a/\n\x16RetryableErrorActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x1a\x92\x01\n\x0fTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x9b\x01\n\x18HeartbeatTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x42\x0f\n\ractivity_typeB\n\n\x08locality\"\xad\n\n\x1a\x45xecuteChildWorkflowAction\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x13parent_close_policy\x18\n \x01(\x0e\x32-.temporal.omes.kitchen_sink.ParentClosePolicy\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry\x12g\n\x11search_attributes\x18\x11 \x03(\x0b\x32L.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry\x12T\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x39.temporal.omes.kitchen_sink.ChildWorkflowCancellationType\x12G\n\x11versioning_intent\x18\x13 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x12\x45\n\x10\x61waitable_choice\x18\x14 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"0\n\x12\x41waitWorkflowState\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdf\x02\n\x10SendSignalAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0bsignal_name\x18\x03 \x01(\t\x12-\n\x04\x61rgs\x18\x04 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12J\n\x07headers\x18\x05 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x06 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\";\n\x14\x43\x61ncelWorkflowAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\"v\n\x14SetPatchMarkerAction\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\x12\x38\n\x0cinner_action\x18\x03 \x01(\x0b\x32\".temporal.omes.kitchen_sink.Action\"\xe3\x01\n\x1cUpsertSearchAttributesAction\x12i\n\x11search_attributes\x18\x01 \x03(\x0b\x32N.temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"G\n\x10UpsertMemoAction\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\"J\n\x12ReturnResultAction\x12\x34\n\x0breturn_this\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"F\n\x11ReturnErrorAction\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\"\xde\x06\n\x13\x43ontinueAsNewAction\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12G\n\x04memo\x18\x06 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry\x12M\n\x07headers\x18\x07 \x03(\x0b\x32<.temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry\x12`\n\x11search_attributes\x18\x08 \x03(\x0b\x32\x45.temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12G\n\x11versioning_intent\x18\n \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\xd1\x01\n\x15RemoteActivityOptions\x12O\n\x11\x63\x61ncellation_type\x18\x01 \x01(\x0e\x32\x34.temporal.omes.kitchen_sink.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x02 \x01(\x08\x12G\n\x11versioning_intent\x18\x03 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\"\xeb\x02\n\x15\x45xecuteNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x11\n\toperation\x18\x02 \x01(\t\x12\r\n\x05input\x18\x03 \x01(\t\x12O\n\x07headers\x18\x04 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x05 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x17\n\x0f\x65xpected_output\x18\x06 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x07 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"a\n\x11NexusHandlerInput\x12\r\n\x05input\x18\x01 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x02 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet*\xa4\x01\n\x11ParentClosePolicy\x12#\n\x1fPARENT_CLOSE_POLICY_UNSPECIFIED\x10\x00\x12!\n\x1dPARENT_CLOSE_POLICY_TERMINATE\x10\x01\x12\x1f\n\x1bPARENT_CLOSE_POLICY_ABANDON\x10\x02\x12&\n\"PARENT_CLOSE_POLICY_REQUEST_CANCEL\x10\x03*@\n\x10VersioningIntent\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCOMPATIBLE\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02*\xa2\x01\n\x1d\x43hildWorkflowCancellationType\x12\x14\n\x10\x43HILD_WF_ABANDON\x10\x00\x12\x17\n\x13\x43HILD_WF_TRY_CANCEL\x10\x01\x12(\n$CHILD_WF_WAIT_CANCELLATION_COMPLETED\x10\x02\x12(\n$CHILD_WF_WAIT_CANCELLATION_REQUESTED\x10\x03*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x42\n\x10io.temporal.omesZ.github.com/temporalio/omes/loadgen/kitchensinkb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12kitchen_sink.proto\x12\x1atemporal.omes.kitchen_sink\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\"\xe1\x01\n\tTestInput\x12\x41\n\x0eworkflow_input\x18\x01 \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowInput\x12\x43\n\x0f\x63lient_sequence\x18\x02 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x12L\n\x11with_start_action\x18\x03 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.WithStartClientAction\"R\n\x0e\x43lientSequence\x12@\n\x0b\x61\x63tion_sets\x18\x01 \x03(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSet\"\xbf\x01\n\x0f\x43lientActionSet\x12\x39\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32(.temporal.omes.kitchen_sink.ClientAction\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\x12.\n\x0bwait_at_end\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n%wait_for_current_run_to_finish_at_end\x18\x04 \x01(\x08\"\x98\x01\n\x15WithStartClientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x39\n\tdo_update\x18\x02 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x42\t\n\x07variant\"\x83\x04\n\x0c\x43lientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x37\n\x08\x64o_query\x18\x02 \x01(\x0b\x32#.temporal.omes.kitchen_sink.DoQueryH\x00\x12\x39\n\tdo_update\x18\x03 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x12\x45\n\x0enested_actions\x18\x04 \x01(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSetH\x00\x12=\n\x0b\x64o_describe\x18\x05 \x01(\x0b\x32&.temporal.omes.kitchen_sink.DoDescribeH\x00\x12_\n\x1d\x64o_standalone_nexus_operation\x18\x06 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.DoStandaloneNexusOperationH\x00\x12R\n\x16\x64o_standalone_activity\x18\x07 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.DoStandaloneActivityH\x00\x42\t\n\x07variant\"R\n\x1a\x44oStandaloneNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x11\n\toperation\x18\x03 \x01(\t\"[\n\x14\x44oStandaloneActivity\x12\x43\n\x08\x61\x63tivity\x18\x01 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteActivityAction\"\xf1\x02\n\x08\x44oSignal\x12Q\n\x11\x64o_signal_actions\x18\x01 \x01(\x0b\x32\x34.temporal.omes.kitchen_sink.DoSignal.DoSignalActionsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x1a\xb1\x01\n\x0f\x44oSignalActions\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x43\n\x12\x64o_actions_in_main\x18\x02 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x11\n\tsignal_id\x18\x03 \x01(\x05\x42\t\n\x07variantB\t\n\x07variant\"\x0c\n\nDoDescribe\"\xa9\x01\n\x07\x44oQuery\x12\x38\n\x0creport_state\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.PayloadsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\xc7\x01\n\x08\x44oUpdate\x12\x41\n\ndo_actions\x18\x01 \x01(\x0b\x32+.temporal.omes.kitchen_sink.DoActionsUpdateH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\x86\x01\n\x0f\x44oActionsUpdate\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12+\n\treject_me\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\t\n\x07variant\"P\n\x11HandlerInvocation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12-\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\"|\n\rWorkflowState\x12?\n\x03kvs\x18\x01 \x03(\x0b\x32\x32.temporal.omes.kitchen_sink.WorkflowState.KvsEntry\x1a*\n\x08KvsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa8\x01\n\rWorkflowInput\x12>\n\x0finitial_actions\x18\x01 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x12\x1d\n\x15\x65xpected_signal_count\x18\x02 \x01(\x05\x12\x1b\n\x13\x65xpected_signal_ids\x18\x03 \x03(\x05\x12\x1b\n\x13received_signal_ids\x18\x04 \x03(\x05\"T\n\tActionSet\x12\x33\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\".temporal.omes.kitchen_sink.Action\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\"\xfa\x08\n\x06\x41\x63tion\x12\x38\n\x05timer\x18\x01 \x01(\x0b\x32\'.temporal.omes.kitchen_sink.TimerActionH\x00\x12J\n\rexec_activity\x18\x02 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteActivityActionH\x00\x12U\n\x13\x65xec_child_workflow\x18\x03 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.ExecuteChildWorkflowActionH\x00\x12N\n\x14\x61wait_workflow_state\x18\x04 \x01(\x0b\x32..temporal.omes.kitchen_sink.AwaitWorkflowStateH\x00\x12\x43\n\x0bsend_signal\x18\x05 \x01(\x0b\x32,.temporal.omes.kitchen_sink.SendSignalActionH\x00\x12K\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.CancelWorkflowActionH\x00\x12L\n\x10set_patch_marker\x18\x07 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.SetPatchMarkerActionH\x00\x12\\\n\x18upsert_search_attributes\x18\x08 \x01(\x0b\x32\x38.temporal.omes.kitchen_sink.UpsertSearchAttributesActionH\x00\x12\x43\n\x0bupsert_memo\x18\t \x01(\x0b\x32,.temporal.omes.kitchen_sink.UpsertMemoActionH\x00\x12G\n\x12set_workflow_state\x18\n \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowStateH\x00\x12G\n\rreturn_result\x18\x0b \x01(\x0b\x32..temporal.omes.kitchen_sink.ReturnResultActionH\x00\x12\x45\n\x0creturn_error\x18\x0c \x01(\x0b\x32-.temporal.omes.kitchen_sink.ReturnErrorActionH\x00\x12J\n\x0f\x63ontinue_as_new\x18\r \x01(\x0b\x32/.temporal.omes.kitchen_sink.ContinueAsNewActionH\x00\x12\x42\n\x11nested_action_set\x18\x0e \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12L\n\x0fnexus_operation\x18\x0f \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteNexusOperationH\x00\x42\t\n\x07variant\"\xa3\x02\n\x0f\x41waitableChoice\x12-\n\x0bwait_finish\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12)\n\x07\x61\x62\x61ndon\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x37\n\x15\x63\x61ncel_before_started\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x36\n\x14\x63\x61ncel_after_started\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x38\n\x16\x63\x61ncel_after_completed\x18\x05 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x0b\n\tcondition\"j\n\x0bTimerAction\x12\x14\n\x0cmilliseconds\x18\x01 \x01(\x04\x12\x45\n\x10\x61waitable_choice\x18\x02 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\"\xea\x11\n\x15\x45xecuteActivityAction\x12T\n\x07generic\x18\x01 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivityH\x00\x12*\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12&\n\x04noop\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12X\n\tresources\x18\x0e \x01(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivityH\x00\x12T\n\x07payload\x18\x12 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivityH\x00\x12R\n\x06\x63lient\x18\x13 \x01(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivityH\x00\x12\x63\n\x0fretryable_error\x18\x14 \x01(\x0b\x32H.temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivityH\x00\x12T\n\x07timeout\x18\x15 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivityH\x00\x12_\n\theartbeat\x18\x16 \x01(\x0b\x32J.temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivityH\x00\x12\x12\n\ntask_queue\x18\x04 \x01(\t\x12O\n\x07headers\x18\x05 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\n \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12*\n\x08is_local\x18\x0b \x01(\x0b\x32\x16.google.protobuf.EmptyH\x01\x12\x43\n\x06remote\x18\x0c \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.RemoteActivityOptionsH\x01\x12\x45\n\x10\x61waitable_choice\x18\r \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x32\n\x08priority\x18\x0f \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12\x14\n\x0c\x66\x61irness_key\x18\x10 \x01(\t\x12\x17\n\x0f\x66\x61irness_weight\x18\x11 \x01(\x02\x1aS\n\x0fGenericActivity\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x32\n\targuments\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x1a\x9a\x01\n\x11ResourcesActivity\x12*\n\x07run_for\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x11\x62ytes_to_allocate\x18\x02 \x01(\x04\x12$\n\x1c\x63pu_yield_every_n_iterations\x18\x03 \x01(\r\x12\x18\n\x10\x63pu_yield_for_ms\x18\x04 \x01(\r\x1a\x44\n\x0fPayloadActivity\x12\x18\n\x10\x62ytes_to_receive\x18\x01 \x01(\x05\x12\x17\n\x0f\x62ytes_to_return\x18\x02 \x01(\x05\x1aU\n\x0e\x43lientActivity\x12\x43\n\x0f\x63lient_sequence\x18\x01 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x1a/\n\x16RetryableErrorActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x1a\x92\x01\n\x0fTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x9b\x01\n\x18HeartbeatTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x42\x0f\n\ractivity_typeB\n\n\x08locality\"\xad\n\n\x1a\x45xecuteChildWorkflowAction\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x13parent_close_policy\x18\n \x01(\x0e\x32-.temporal.omes.kitchen_sink.ParentClosePolicy\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry\x12g\n\x11search_attributes\x18\x11 \x03(\x0b\x32L.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry\x12T\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x39.temporal.omes.kitchen_sink.ChildWorkflowCancellationType\x12G\n\x11versioning_intent\x18\x13 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x12\x45\n\x10\x61waitable_choice\x18\x14 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"0\n\x12\x41waitWorkflowState\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdf\x02\n\x10SendSignalAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0bsignal_name\x18\x03 \x01(\t\x12-\n\x04\x61rgs\x18\x04 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12J\n\x07headers\x18\x05 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x06 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\";\n\x14\x43\x61ncelWorkflowAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\"v\n\x14SetPatchMarkerAction\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\x12\x38\n\x0cinner_action\x18\x03 \x01(\x0b\x32\".temporal.omes.kitchen_sink.Action\"\xe3\x01\n\x1cUpsertSearchAttributesAction\x12i\n\x11search_attributes\x18\x01 \x03(\x0b\x32N.temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"G\n\x10UpsertMemoAction\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\"J\n\x12ReturnResultAction\x12\x34\n\x0breturn_this\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"F\n\x11ReturnErrorAction\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\"\xde\x06\n\x13\x43ontinueAsNewAction\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12G\n\x04memo\x18\x06 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry\x12M\n\x07headers\x18\x07 \x03(\x0b\x32<.temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry\x12`\n\x11search_attributes\x18\x08 \x03(\x0b\x32\x45.temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12G\n\x11versioning_intent\x18\n \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\xd1\x01\n\x15RemoteActivityOptions\x12O\n\x11\x63\x61ncellation_type\x18\x01 \x01(\x0e\x32\x34.temporal.omes.kitchen_sink.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x02 \x01(\x08\x12G\n\x11versioning_intent\x18\x03 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\"\xeb\x02\n\x15\x45xecuteNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x11\n\toperation\x18\x02 \x01(\t\x12\r\n\x05input\x18\x03 \x01(\t\x12O\n\x07headers\x18\x04 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x05 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x17\n\x0f\x65xpected_output\x18\x06 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x07 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"a\n\x11NexusHandlerInput\x12\r\n\x05input\x18\x01 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x02 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet*\xa4\x01\n\x11ParentClosePolicy\x12#\n\x1fPARENT_CLOSE_POLICY_UNSPECIFIED\x10\x00\x12!\n\x1dPARENT_CLOSE_POLICY_TERMINATE\x10\x01\x12\x1f\n\x1bPARENT_CLOSE_POLICY_ABANDON\x10\x02\x12&\n\"PARENT_CLOSE_POLICY_REQUEST_CANCEL\x10\x03*@\n\x10VersioningIntent\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCOMPATIBLE\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02*\xa2\x01\n\x1d\x43hildWorkflowCancellationType\x12\x14\n\x10\x43HILD_WF_ABANDON\x10\x00\x12\x17\n\x13\x43HILD_WF_TRY_CANCEL\x10\x01\x12(\n$CHILD_WF_WAIT_CANCELLATION_COMPLETED\x10\x02\x12(\n$CHILD_WF_WAIT_CANCELLATION_REQUESTED\x10\x03*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x42\n\x10io.temporal.omesZ.github.com/temporalio/omes/loadgen/kitchensinkb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -49,14 +49,14 @@ _globals['_CONTINUEASNEWACTION_SEARCHATTRIBUTESENTRY']._serialized_options = b'8\001' _globals['_EXECUTENEXUSOPERATION_HEADERSENTRY']._options = None _globals['_EXECUTENEXUSOPERATION_HEADERSENTRY']._serialized_options = b'8\001' - _globals['_PARENTCLOSEPOLICY']._serialized_start=10510 - _globals['_PARENTCLOSEPOLICY']._serialized_end=10674 - _globals['_VERSIONINGINTENT']._serialized_start=10676 - _globals['_VERSIONINGINTENT']._serialized_end=10740 - _globals['_CHILDWORKFLOWCANCELLATIONTYPE']._serialized_start=10743 - _globals['_CHILDWORKFLOWCANCELLATIONTYPE']._serialized_end=10905 - _globals['_ACTIVITYCANCELLATIONTYPE']._serialized_start=10907 - _globals['_ACTIVITYCANCELLATIONTYPE']._serialized_end=10995 + _globals['_PARENTCLOSEPOLICY']._serialized_start=10687 + _globals['_PARENTCLOSEPOLICY']._serialized_end=10851 + _globals['_VERSIONINGINTENT']._serialized_start=10853 + _globals['_VERSIONINGINTENT']._serialized_end=10917 + _globals['_CHILDWORKFLOWCANCELLATIONTYPE']._serialized_start=10920 + _globals['_CHILDWORKFLOWCANCELLATIONTYPE']._serialized_end=11082 + _globals['_ACTIVITYCANCELLATIONTYPE']._serialized_start=11084 + _globals['_ACTIVITYCANCELLATIONTYPE']._serialized_end=11172 _globals['_TESTINPUT']._serialized_start=227 _globals['_TESTINPUT']._serialized_end=452 _globals['_CLIENTSEQUENCE']._serialized_start=454 @@ -66,97 +66,99 @@ _globals['_WITHSTARTCLIENTACTION']._serialized_start=733 _globals['_WITHSTARTCLIENTACTION']._serialized_end=885 _globals['_CLIENTACTION']._serialized_start=888 - _globals['_CLIENTACTION']._serialized_end=1319 - _globals['_DOSTANDALONENEXUSOPERATION']._serialized_start=1321 - _globals['_DOSTANDALONENEXUSOPERATION']._serialized_end=1403 - _globals['_DOSIGNAL']._serialized_start=1406 - _globals['_DOSIGNAL']._serialized_end=1775 - _globals['_DOSIGNAL_DOSIGNALACTIONS']._serialized_start=1587 - _globals['_DOSIGNAL_DOSIGNALACTIONS']._serialized_end=1764 - _globals['_DODESCRIBE']._serialized_start=1777 - _globals['_DODESCRIBE']._serialized_end=1789 - _globals['_DOQUERY']._serialized_start=1792 - _globals['_DOQUERY']._serialized_end=1961 - _globals['_DOUPDATE']._serialized_start=1964 - _globals['_DOUPDATE']._serialized_end=2163 - _globals['_DOACTIONSUPDATE']._serialized_start=2166 - _globals['_DOACTIONSUPDATE']._serialized_end=2300 - _globals['_HANDLERINVOCATION']._serialized_start=2302 - _globals['_HANDLERINVOCATION']._serialized_end=2382 - _globals['_WORKFLOWSTATE']._serialized_start=2384 - _globals['_WORKFLOWSTATE']._serialized_end=2508 - _globals['_WORKFLOWSTATE_KVSENTRY']._serialized_start=2466 - _globals['_WORKFLOWSTATE_KVSENTRY']._serialized_end=2508 - _globals['_WORKFLOWINPUT']._serialized_start=2511 - _globals['_WORKFLOWINPUT']._serialized_end=2679 - _globals['_ACTIONSET']._serialized_start=2681 - _globals['_ACTIONSET']._serialized_end=2765 - _globals['_ACTION']._serialized_start=2768 - _globals['_ACTION']._serialized_end=3914 - _globals['_AWAITABLECHOICE']._serialized_start=3917 - _globals['_AWAITABLECHOICE']._serialized_end=4208 - _globals['_TIMERACTION']._serialized_start=4210 - _globals['_TIMERACTION']._serialized_end=4316 - _globals['_EXECUTEACTIVITYACTION']._serialized_start=4319 - _globals['_EXECUTEACTIVITYACTION']._serialized_end=6601 - _globals['_EXECUTEACTIVITYACTION_GENERICACTIVITY']._serialized_start=5738 - _globals['_EXECUTEACTIVITYACTION_GENERICACTIVITY']._serialized_end=5821 - _globals['_EXECUTEACTIVITYACTION_RESOURCESACTIVITY']._serialized_start=5824 - _globals['_EXECUTEACTIVITYACTION_RESOURCESACTIVITY']._serialized_end=5978 - _globals['_EXECUTEACTIVITYACTION_PAYLOADACTIVITY']._serialized_start=5980 - _globals['_EXECUTEACTIVITYACTION_PAYLOADACTIVITY']._serialized_end=6048 - _globals['_EXECUTEACTIVITYACTION_CLIENTACTIVITY']._serialized_start=6050 - _globals['_EXECUTEACTIVITYACTION_CLIENTACTIVITY']._serialized_end=6135 - _globals['_EXECUTEACTIVITYACTION_RETRYABLEERRORACTIVITY']._serialized_start=6137 - _globals['_EXECUTEACTIVITYACTION_RETRYABLEERRORACTIVITY']._serialized_end=6184 - _globals['_EXECUTEACTIVITYACTION_TIMEOUTACTIVITY']._serialized_start=6187 - _globals['_EXECUTEACTIVITYACTION_TIMEOUTACTIVITY']._serialized_end=6333 - _globals['_EXECUTEACTIVITYACTION_HEARTBEATTIMEOUTACTIVITY']._serialized_start=6336 - _globals['_EXECUTEACTIVITYACTION_HEARTBEATTIMEOUTACTIVITY']._serialized_end=6491 - _globals['_EXECUTEACTIVITYACTION_HEADERSENTRY']._serialized_start=6493 - _globals['_EXECUTEACTIVITYACTION_HEADERSENTRY']._serialized_end=6572 - _globals['_EXECUTECHILDWORKFLOWACTION']._serialized_start=6604 - _globals['_EXECUTECHILDWORKFLOWACTION']._serialized_end=7929 - _globals['_EXECUTECHILDWORKFLOWACTION_HEADERSENTRY']._serialized_start=6493 - _globals['_EXECUTECHILDWORKFLOWACTION_HEADERSENTRY']._serialized_end=6572 - _globals['_EXECUTECHILDWORKFLOWACTION_MEMOENTRY']._serialized_start=7763 - _globals['_EXECUTECHILDWORKFLOWACTION_MEMOENTRY']._serialized_end=7839 - _globals['_EXECUTECHILDWORKFLOWACTION_SEARCHATTRIBUTESENTRY']._serialized_start=7841 - _globals['_EXECUTECHILDWORKFLOWACTION_SEARCHATTRIBUTESENTRY']._serialized_end=7929 - _globals['_AWAITWORKFLOWSTATE']._serialized_start=7931 - _globals['_AWAITWORKFLOWSTATE']._serialized_end=7979 - _globals['_SENDSIGNALACTION']._serialized_start=7982 - _globals['_SENDSIGNALACTION']._serialized_end=8333 - _globals['_SENDSIGNALACTION_HEADERSENTRY']._serialized_start=6493 - _globals['_SENDSIGNALACTION_HEADERSENTRY']._serialized_end=6572 - _globals['_CANCELWORKFLOWACTION']._serialized_start=8335 - _globals['_CANCELWORKFLOWACTION']._serialized_end=8394 - _globals['_SETPATCHMARKERACTION']._serialized_start=8396 - _globals['_SETPATCHMARKERACTION']._serialized_end=8514 - _globals['_UPSERTSEARCHATTRIBUTESACTION']._serialized_start=8517 - _globals['_UPSERTSEARCHATTRIBUTESACTION']._serialized_end=8744 - _globals['_UPSERTSEARCHATTRIBUTESACTION_SEARCHATTRIBUTESENTRY']._serialized_start=7841 - _globals['_UPSERTSEARCHATTRIBUTESACTION_SEARCHATTRIBUTESENTRY']._serialized_end=7929 - _globals['_UPSERTMEMOACTION']._serialized_start=8746 - _globals['_UPSERTMEMOACTION']._serialized_end=8817 - _globals['_RETURNRESULTACTION']._serialized_start=8819 - _globals['_RETURNRESULTACTION']._serialized_end=8893 - _globals['_RETURNERRORACTION']._serialized_start=8895 - _globals['_RETURNERRORACTION']._serialized_end=8965 - _globals['_CONTINUEASNEWACTION']._serialized_start=8968 - _globals['_CONTINUEASNEWACTION']._serialized_end=9830 - _globals['_CONTINUEASNEWACTION_MEMOENTRY']._serialized_start=7763 - _globals['_CONTINUEASNEWACTION_MEMOENTRY']._serialized_end=7839 - _globals['_CONTINUEASNEWACTION_HEADERSENTRY']._serialized_start=6493 - _globals['_CONTINUEASNEWACTION_HEADERSENTRY']._serialized_end=6572 - _globals['_CONTINUEASNEWACTION_SEARCHATTRIBUTESENTRY']._serialized_start=7841 - _globals['_CONTINUEASNEWACTION_SEARCHATTRIBUTESENTRY']._serialized_end=7929 - _globals['_REMOTEACTIVITYOPTIONS']._serialized_start=9833 - _globals['_REMOTEACTIVITYOPTIONS']._serialized_end=10042 - _globals['_EXECUTENEXUSOPERATION']._serialized_start=10045 - _globals['_EXECUTENEXUSOPERATION']._serialized_end=10408 - _globals['_EXECUTENEXUSOPERATION_HEADERSENTRY']._serialized_start=10362 - _globals['_EXECUTENEXUSOPERATION_HEADERSENTRY']._serialized_end=10408 - _globals['_NEXUSHANDLERINPUT']._serialized_start=10410 - _globals['_NEXUSHANDLERINPUT']._serialized_end=10507 + _globals['_CLIENTACTION']._serialized_end=1403 + _globals['_DOSTANDALONENEXUSOPERATION']._serialized_start=1405 + _globals['_DOSTANDALONENEXUSOPERATION']._serialized_end=1487 + _globals['_DOSTANDALONEACTIVITY']._serialized_start=1489 + _globals['_DOSTANDALONEACTIVITY']._serialized_end=1580 + _globals['_DOSIGNAL']._serialized_start=1583 + _globals['_DOSIGNAL']._serialized_end=1952 + _globals['_DOSIGNAL_DOSIGNALACTIONS']._serialized_start=1764 + _globals['_DOSIGNAL_DOSIGNALACTIONS']._serialized_end=1941 + _globals['_DODESCRIBE']._serialized_start=1954 + _globals['_DODESCRIBE']._serialized_end=1966 + _globals['_DOQUERY']._serialized_start=1969 + _globals['_DOQUERY']._serialized_end=2138 + _globals['_DOUPDATE']._serialized_start=2141 + _globals['_DOUPDATE']._serialized_end=2340 + _globals['_DOACTIONSUPDATE']._serialized_start=2343 + _globals['_DOACTIONSUPDATE']._serialized_end=2477 + _globals['_HANDLERINVOCATION']._serialized_start=2479 + _globals['_HANDLERINVOCATION']._serialized_end=2559 + _globals['_WORKFLOWSTATE']._serialized_start=2561 + _globals['_WORKFLOWSTATE']._serialized_end=2685 + _globals['_WORKFLOWSTATE_KVSENTRY']._serialized_start=2643 + _globals['_WORKFLOWSTATE_KVSENTRY']._serialized_end=2685 + _globals['_WORKFLOWINPUT']._serialized_start=2688 + _globals['_WORKFLOWINPUT']._serialized_end=2856 + _globals['_ACTIONSET']._serialized_start=2858 + _globals['_ACTIONSET']._serialized_end=2942 + _globals['_ACTION']._serialized_start=2945 + _globals['_ACTION']._serialized_end=4091 + _globals['_AWAITABLECHOICE']._serialized_start=4094 + _globals['_AWAITABLECHOICE']._serialized_end=4385 + _globals['_TIMERACTION']._serialized_start=4387 + _globals['_TIMERACTION']._serialized_end=4493 + _globals['_EXECUTEACTIVITYACTION']._serialized_start=4496 + _globals['_EXECUTEACTIVITYACTION']._serialized_end=6778 + _globals['_EXECUTEACTIVITYACTION_GENERICACTIVITY']._serialized_start=5915 + _globals['_EXECUTEACTIVITYACTION_GENERICACTIVITY']._serialized_end=5998 + _globals['_EXECUTEACTIVITYACTION_RESOURCESACTIVITY']._serialized_start=6001 + _globals['_EXECUTEACTIVITYACTION_RESOURCESACTIVITY']._serialized_end=6155 + _globals['_EXECUTEACTIVITYACTION_PAYLOADACTIVITY']._serialized_start=6157 + _globals['_EXECUTEACTIVITYACTION_PAYLOADACTIVITY']._serialized_end=6225 + _globals['_EXECUTEACTIVITYACTION_CLIENTACTIVITY']._serialized_start=6227 + _globals['_EXECUTEACTIVITYACTION_CLIENTACTIVITY']._serialized_end=6312 + _globals['_EXECUTEACTIVITYACTION_RETRYABLEERRORACTIVITY']._serialized_start=6314 + _globals['_EXECUTEACTIVITYACTION_RETRYABLEERRORACTIVITY']._serialized_end=6361 + _globals['_EXECUTEACTIVITYACTION_TIMEOUTACTIVITY']._serialized_start=6364 + _globals['_EXECUTEACTIVITYACTION_TIMEOUTACTIVITY']._serialized_end=6510 + _globals['_EXECUTEACTIVITYACTION_HEARTBEATTIMEOUTACTIVITY']._serialized_start=6513 + _globals['_EXECUTEACTIVITYACTION_HEARTBEATTIMEOUTACTIVITY']._serialized_end=6668 + _globals['_EXECUTEACTIVITYACTION_HEADERSENTRY']._serialized_start=6670 + _globals['_EXECUTEACTIVITYACTION_HEADERSENTRY']._serialized_end=6749 + _globals['_EXECUTECHILDWORKFLOWACTION']._serialized_start=6781 + _globals['_EXECUTECHILDWORKFLOWACTION']._serialized_end=8106 + _globals['_EXECUTECHILDWORKFLOWACTION_HEADERSENTRY']._serialized_start=6670 + _globals['_EXECUTECHILDWORKFLOWACTION_HEADERSENTRY']._serialized_end=6749 + _globals['_EXECUTECHILDWORKFLOWACTION_MEMOENTRY']._serialized_start=7940 + _globals['_EXECUTECHILDWORKFLOWACTION_MEMOENTRY']._serialized_end=8016 + _globals['_EXECUTECHILDWORKFLOWACTION_SEARCHATTRIBUTESENTRY']._serialized_start=8018 + _globals['_EXECUTECHILDWORKFLOWACTION_SEARCHATTRIBUTESENTRY']._serialized_end=8106 + _globals['_AWAITWORKFLOWSTATE']._serialized_start=8108 + _globals['_AWAITWORKFLOWSTATE']._serialized_end=8156 + _globals['_SENDSIGNALACTION']._serialized_start=8159 + _globals['_SENDSIGNALACTION']._serialized_end=8510 + _globals['_SENDSIGNALACTION_HEADERSENTRY']._serialized_start=6670 + _globals['_SENDSIGNALACTION_HEADERSENTRY']._serialized_end=6749 + _globals['_CANCELWORKFLOWACTION']._serialized_start=8512 + _globals['_CANCELWORKFLOWACTION']._serialized_end=8571 + _globals['_SETPATCHMARKERACTION']._serialized_start=8573 + _globals['_SETPATCHMARKERACTION']._serialized_end=8691 + _globals['_UPSERTSEARCHATTRIBUTESACTION']._serialized_start=8694 + _globals['_UPSERTSEARCHATTRIBUTESACTION']._serialized_end=8921 + _globals['_UPSERTSEARCHATTRIBUTESACTION_SEARCHATTRIBUTESENTRY']._serialized_start=8018 + _globals['_UPSERTSEARCHATTRIBUTESACTION_SEARCHATTRIBUTESENTRY']._serialized_end=8106 + _globals['_UPSERTMEMOACTION']._serialized_start=8923 + _globals['_UPSERTMEMOACTION']._serialized_end=8994 + _globals['_RETURNRESULTACTION']._serialized_start=8996 + _globals['_RETURNRESULTACTION']._serialized_end=9070 + _globals['_RETURNERRORACTION']._serialized_start=9072 + _globals['_RETURNERRORACTION']._serialized_end=9142 + _globals['_CONTINUEASNEWACTION']._serialized_start=9145 + _globals['_CONTINUEASNEWACTION']._serialized_end=10007 + _globals['_CONTINUEASNEWACTION_MEMOENTRY']._serialized_start=7940 + _globals['_CONTINUEASNEWACTION_MEMOENTRY']._serialized_end=8016 + _globals['_CONTINUEASNEWACTION_HEADERSENTRY']._serialized_start=6670 + _globals['_CONTINUEASNEWACTION_HEADERSENTRY']._serialized_end=6749 + _globals['_CONTINUEASNEWACTION_SEARCHATTRIBUTESENTRY']._serialized_start=8018 + _globals['_CONTINUEASNEWACTION_SEARCHATTRIBUTESENTRY']._serialized_end=8106 + _globals['_REMOTEACTIVITYOPTIONS']._serialized_start=10010 + _globals['_REMOTEACTIVITYOPTIONS']._serialized_end=10219 + _globals['_EXECUTENEXUSOPERATION']._serialized_start=10222 + _globals['_EXECUTENEXUSOPERATION']._serialized_end=10585 + _globals['_EXECUTENEXUSOPERATION_HEADERSENTRY']._serialized_start=10539 + _globals['_EXECUTENEXUSOPERATION_HEADERSENTRY']._serialized_end=10585 + _globals['_NEXUSHANDLERINPUT']._serialized_start=10587 + _globals['_NEXUSHANDLERINPUT']._serialized_end=10684 # @@protoc_insertion_point(module_scope) diff --git a/workers/python/protos/kitchen_sink_pb2.pyi b/workers/python/protos/kitchen_sink_pb2.pyi index 61b8f105c..4f5e8f3c0 100644 --- a/workers/python/protos/kitchen_sink_pb2.pyi +++ b/workers/python/protos/kitchen_sink_pb2.pyi @@ -88,20 +88,22 @@ class WithStartClientAction(_message.Message): def __init__(self, do_signal: _Optional[_Union[DoSignal, _Mapping]] = ..., do_update: _Optional[_Union[DoUpdate, _Mapping]] = ...) -> None: ... class ClientAction(_message.Message): - __slots__ = ("do_signal", "do_query", "do_update", "nested_actions", "do_describe", "do_standalone_nexus_operation") + __slots__ = ("do_signal", "do_query", "do_update", "nested_actions", "do_describe", "do_standalone_nexus_operation", "do_standalone_activity") DO_SIGNAL_FIELD_NUMBER: _ClassVar[int] DO_QUERY_FIELD_NUMBER: _ClassVar[int] DO_UPDATE_FIELD_NUMBER: _ClassVar[int] NESTED_ACTIONS_FIELD_NUMBER: _ClassVar[int] DO_DESCRIBE_FIELD_NUMBER: _ClassVar[int] DO_STANDALONE_NEXUS_OPERATION_FIELD_NUMBER: _ClassVar[int] + DO_STANDALONE_ACTIVITY_FIELD_NUMBER: _ClassVar[int] do_signal: DoSignal do_query: DoQuery do_update: DoUpdate nested_actions: ClientActionSet do_describe: DoDescribe do_standalone_nexus_operation: DoStandaloneNexusOperation - def __init__(self, do_signal: _Optional[_Union[DoSignal, _Mapping]] = ..., do_query: _Optional[_Union[DoQuery, _Mapping]] = ..., do_update: _Optional[_Union[DoUpdate, _Mapping]] = ..., nested_actions: _Optional[_Union[ClientActionSet, _Mapping]] = ..., do_describe: _Optional[_Union[DoDescribe, _Mapping]] = ..., do_standalone_nexus_operation: _Optional[_Union[DoStandaloneNexusOperation, _Mapping]] = ...) -> None: ... + do_standalone_activity: DoStandaloneActivity + def __init__(self, do_signal: _Optional[_Union[DoSignal, _Mapping]] = ..., do_query: _Optional[_Union[DoQuery, _Mapping]] = ..., do_update: _Optional[_Union[DoUpdate, _Mapping]] = ..., nested_actions: _Optional[_Union[ClientActionSet, _Mapping]] = ..., do_describe: _Optional[_Union[DoDescribe, _Mapping]] = ..., do_standalone_nexus_operation: _Optional[_Union[DoStandaloneNexusOperation, _Mapping]] = ..., do_standalone_activity: _Optional[_Union[DoStandaloneActivity, _Mapping]] = ...) -> None: ... class DoStandaloneNexusOperation(_message.Message): __slots__ = ("endpoint", "service", "operation") @@ -113,6 +115,12 @@ class DoStandaloneNexusOperation(_message.Message): operation: str def __init__(self, endpoint: _Optional[str] = ..., service: _Optional[str] = ..., operation: _Optional[str] = ...) -> None: ... +class DoStandaloneActivity(_message.Message): + __slots__ = ("activity",) + ACTIVITY_FIELD_NUMBER: _ClassVar[int] + activity: ExecuteActivityAction + def __init__(self, activity: _Optional[_Union[ExecuteActivityAction, _Mapping]] = ...) -> None: ... + class DoSignal(_message.Message): __slots__ = ("do_signal_actions", "custom", "with_start") class DoSignalActions(_message.Message): diff --git a/workers/python/pyproject.toml b/workers/python/pyproject.toml index 54128fb8b..f7924e74c 100644 --- a/workers/python/pyproject.toml +++ b/workers/python/pyproject.toml @@ -43,7 +43,7 @@ lint = [ {cmd = "isort --check-only ."}, {ref = "lint-types"}, ] -lint-types = "mypy activities.py client_action_executor.py kitchen_sink.py nexus_service.py apps" +lint-types = "mypy activities.py activity_dispatch.py client_action_executor.py kitchen_sink.py nexus_service.py apps" [tool.isort] profile = "black" diff --git a/workers/ruby/Gemfile.lock b/workers/ruby/Gemfile.lock index 126d2f979..835a99436 100644 --- a/workers/ruby/Gemfile.lock +++ b/workers/ruby/Gemfile.lock @@ -4,7 +4,7 @@ PATH omes (0.1.0) google-protobuf (~> 4.0) grpc (~> 1.80) - temporalio (~> 1.3) + temporalio (~> 1.5) GEM remote: https://rubygems.org/ @@ -168,25 +168,25 @@ GEM terminal-table (>= 2, < 5) uri (>= 0.12.0) strscan (3.1.8) - temporalio (1.3.0) + temporalio (1.5.0) google-protobuf (>= 3.25.0) logger - temporalio (1.3.0-aarch64-linux) + temporalio (1.5.0-aarch64-linux) google-protobuf (>= 3.25.0) logger - temporalio (1.3.0-aarch64-linux-musl) + temporalio (1.5.0-aarch64-linux-musl) google-protobuf (>= 3.25.0) logger - temporalio (1.3.0-arm64-darwin) + temporalio (1.5.0-arm64-darwin) google-protobuf (>= 3.25.0) logger - temporalio (1.3.0-x86_64-darwin) + temporalio (1.5.0-x86_64-darwin) google-protobuf (>= 3.25.0) logger - temporalio (1.3.0-x86_64-linux) + temporalio (1.5.0-x86_64-linux) google-protobuf (>= 3.25.0) logger - temporalio (1.3.0-x86_64-linux-musl) + temporalio (1.5.0-x86_64-linux-musl) google-protobuf (>= 3.25.0) logger terminal-table (4.0.0) @@ -289,13 +289,13 @@ CHECKSUMS securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 steep (1.10.0) sha256=1b295b55f9aaff1b8d3ee42453ee55bc2a1078fda0268f288edb2dc014f4d7d1 strscan (3.1.8) sha256=aae2db611a225559f21ffbb71765c9a4e60fd262534a9ea84f4f11c7f32f679e - temporalio (1.3.0) sha256=672260631f419d1ec01a2230cc6a72d665ef9d385c5d96351bc68f639dbdc704 - temporalio (1.3.0-aarch64-linux) sha256=1ec4230251bc1771455fa20f1d1e9006639f3da3657ce4d15d09e27970d5a248 - temporalio (1.3.0-aarch64-linux-musl) sha256=135a676e60ba8ee6f49c7fa793505fee7479b78a3c0b31298073845560a32aed - temporalio (1.3.0-arm64-darwin) sha256=22c1f0fbbbfacf7c61ddd0d75e9ffc86590ba39ccbabb87f670821c9152fff7a - temporalio (1.3.0-x86_64-darwin) sha256=f2a4b35302564b6d2969a1daf6b2d7f2b86c9d1a50c59d1620b327b2af38c124 - temporalio (1.3.0-x86_64-linux) sha256=5122f3c2bd2b540565fc9ec4e2083401c00a7056c8408cd9922ebe570b366eef - temporalio (1.3.0-x86_64-linux-musl) sha256=0b9c19a94d6703155618d02facf46481467bde1cdcd86ccb6b4f38896d847560 + temporalio (1.5.0) sha256=e736ac74ccecf1ab9c9a581b3c1505a718f355e8c9fecd5cc22ece0386b57750 + temporalio (1.5.0-aarch64-linux) sha256=460d3b872226a7ccc5b2f9564a7226ef81f7366f1414efb70f7840aaed425a3a + temporalio (1.5.0-aarch64-linux-musl) sha256=a0b4f8c8ae1e25f72e26c0469b0a29e839e1a8dcd0ebfd9383f7d2bf15082581 + temporalio (1.5.0-arm64-darwin) sha256=ccd90b063d4703ee00c8698f8c68879f04646d2425618bfa39598b6f237445a9 + temporalio (1.5.0-x86_64-darwin) sha256=257fbf661204ed922f6b84120219f9416b9ab56e30923f111e58623ed0be99eb + temporalio (1.5.0-x86_64-linux) sha256=6c9ee36beef7f1aa9e949dfee4e7ba62eb8370daf6ad60246e90dce281e56e3e + temporalio (1.5.0-x86_64-linux-musl) sha256=a6f64a9e77d03bd466db73e5fad266cc50d9b00ed1b87e9fad6bca768f0b2632 terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2 tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b diff --git a/workers/ruby/omes.gemspec b/workers/ruby/omes.gemspec index 205522dd7..865df0cc9 100644 --- a/workers/ruby/omes.gemspec +++ b/workers/ruby/omes.gemspec @@ -10,6 +10,6 @@ Gem::Specification.new do |s| s.require_paths = ['.'] s.add_dependency 'google-protobuf', '~> 4.0' s.add_dependency 'grpc', '~> 1.80' - s.add_dependency 'temporalio', '~> 1.3' + s.add_dependency 'temporalio', '~> 1.5' s.metadata['rubygems_mfa_required'] = 'true' end diff --git a/workers/ruby/protos/kitchen_sink/kitchen_sink_pb.rb b/workers/ruby/protos/kitchen_sink/kitchen_sink_pb.rb index 4440df313..9d6ad3fb9 100644 --- a/workers/ruby/protos/kitchen_sink/kitchen_sink_pb.rb +++ b/workers/ruby/protos/kitchen_sink/kitchen_sink_pb.rb @@ -11,7 +11,7 @@ require 'temporalio/api/enums/v1/workflow' -descriptor_data = "\n\x1fkitchen_sink/kitchen_sink.proto\x12\x1atemporal.omes.kitchen_sink\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\"\xe1\x01\n\tTestInput\x12\x41\n\x0eworkflow_input\x18\x01 \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowInput\x12\x43\n\x0f\x63lient_sequence\x18\x02 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x12L\n\x11with_start_action\x18\x03 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.WithStartClientAction\"R\n\x0e\x43lientSequence\x12@\n\x0b\x61\x63tion_sets\x18\x01 \x03(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSet\"\xbf\x01\n\x0f\x43lientActionSet\x12\x39\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32(.temporal.omes.kitchen_sink.ClientAction\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\x12.\n\x0bwait_at_end\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n%wait_for_current_run_to_finish_at_end\x18\x04 \x01(\x08\"\x98\x01\n\x15WithStartClientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x39\n\tdo_update\x18\x02 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x42\t\n\x07variant\"\xaf\x03\n\x0c\x43lientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x37\n\x08\x64o_query\x18\x02 \x01(\x0b\x32#.temporal.omes.kitchen_sink.DoQueryH\x00\x12\x39\n\tdo_update\x18\x03 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x12\x45\n\x0enested_actions\x18\x04 \x01(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSetH\x00\x12=\n\x0b\x64o_describe\x18\x05 \x01(\x0b\x32&.temporal.omes.kitchen_sink.DoDescribeH\x00\x12_\n\x1d\x64o_standalone_nexus_operation\x18\x06 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.DoStandaloneNexusOperationH\x00\x42\t\n\x07variant\"R\n\x1a\x44oStandaloneNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x11\n\toperation\x18\x03 \x01(\t\"\xf1\x02\n\x08\x44oSignal\x12Q\n\x11\x64o_signal_actions\x18\x01 \x01(\x0b\x32\x34.temporal.omes.kitchen_sink.DoSignal.DoSignalActionsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x1a\xb1\x01\n\x0f\x44oSignalActions\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x43\n\x12\x64o_actions_in_main\x18\x02 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x11\n\tsignal_id\x18\x03 \x01(\x05\x42\t\n\x07variantB\t\n\x07variant\"\x0c\n\nDoDescribe\"\xa9\x01\n\x07\x44oQuery\x12\x38\n\x0creport_state\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.PayloadsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\xc7\x01\n\x08\x44oUpdate\x12\x41\n\ndo_actions\x18\x01 \x01(\x0b\x32+.temporal.omes.kitchen_sink.DoActionsUpdateH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\x86\x01\n\x0f\x44oActionsUpdate\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12+\n\treject_me\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\t\n\x07variant\"P\n\x11HandlerInvocation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12-\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\"|\n\rWorkflowState\x12?\n\x03kvs\x18\x01 \x03(\x0b\x32\x32.temporal.omes.kitchen_sink.WorkflowState.KvsEntry\x1a*\n\x08KvsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa8\x01\n\rWorkflowInput\x12>\n\x0finitial_actions\x18\x01 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x12\x1d\n\x15\x65xpected_signal_count\x18\x02 \x01(\x05\x12\x1b\n\x13\x65xpected_signal_ids\x18\x03 \x03(\x05\x12\x1b\n\x13received_signal_ids\x18\x04 \x03(\x05\"T\n\tActionSet\x12\x33\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\".temporal.omes.kitchen_sink.Action\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\"\xfa\x08\n\x06\x41\x63tion\x12\x38\n\x05timer\x18\x01 \x01(\x0b\x32\'.temporal.omes.kitchen_sink.TimerActionH\x00\x12J\n\rexec_activity\x18\x02 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteActivityActionH\x00\x12U\n\x13\x65xec_child_workflow\x18\x03 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.ExecuteChildWorkflowActionH\x00\x12N\n\x14\x61wait_workflow_state\x18\x04 \x01(\x0b\x32..temporal.omes.kitchen_sink.AwaitWorkflowStateH\x00\x12\x43\n\x0bsend_signal\x18\x05 \x01(\x0b\x32,.temporal.omes.kitchen_sink.SendSignalActionH\x00\x12K\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.CancelWorkflowActionH\x00\x12L\n\x10set_patch_marker\x18\x07 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.SetPatchMarkerActionH\x00\x12\\\n\x18upsert_search_attributes\x18\x08 \x01(\x0b\x32\x38.temporal.omes.kitchen_sink.UpsertSearchAttributesActionH\x00\x12\x43\n\x0bupsert_memo\x18\t \x01(\x0b\x32,.temporal.omes.kitchen_sink.UpsertMemoActionH\x00\x12G\n\x12set_workflow_state\x18\n \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowStateH\x00\x12G\n\rreturn_result\x18\x0b \x01(\x0b\x32..temporal.omes.kitchen_sink.ReturnResultActionH\x00\x12\x45\n\x0creturn_error\x18\x0c \x01(\x0b\x32-.temporal.omes.kitchen_sink.ReturnErrorActionH\x00\x12J\n\x0f\x63ontinue_as_new\x18\r \x01(\x0b\x32/.temporal.omes.kitchen_sink.ContinueAsNewActionH\x00\x12\x42\n\x11nested_action_set\x18\x0e \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12L\n\x0fnexus_operation\x18\x0f \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteNexusOperationH\x00\x42\t\n\x07variant\"\xa3\x02\n\x0f\x41waitableChoice\x12-\n\x0bwait_finish\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12)\n\x07\x61\x62\x61ndon\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x37\n\x15\x63\x61ncel_before_started\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x36\n\x14\x63\x61ncel_after_started\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x38\n\x16\x63\x61ncel_after_completed\x18\x05 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x0b\n\tcondition\"j\n\x0bTimerAction\x12\x14\n\x0cmilliseconds\x18\x01 \x01(\x04\x12\x45\n\x10\x61waitable_choice\x18\x02 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\"\xea\x11\n\x15\x45xecuteActivityAction\x12T\n\x07generic\x18\x01 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivityH\x00\x12*\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12&\n\x04noop\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12X\n\tresources\x18\x0e \x01(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivityH\x00\x12T\n\x07payload\x18\x12 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivityH\x00\x12R\n\x06\x63lient\x18\x13 \x01(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivityH\x00\x12\x63\n\x0fretryable_error\x18\x14 \x01(\x0b\x32H.temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivityH\x00\x12T\n\x07timeout\x18\x15 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivityH\x00\x12_\n\theartbeat\x18\x16 \x01(\x0b\x32J.temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivityH\x00\x12\x12\n\ntask_queue\x18\x04 \x01(\t\x12O\n\x07headers\x18\x05 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\n \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12*\n\x08is_local\x18\x0b \x01(\x0b\x32\x16.google.protobuf.EmptyH\x01\x12\x43\n\x06remote\x18\x0c \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.RemoteActivityOptionsH\x01\x12\x45\n\x10\x61waitable_choice\x18\r \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x32\n\x08priority\x18\x0f \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12\x14\n\x0c\x66\x61irness_key\x18\x10 \x01(\t\x12\x17\n\x0f\x66\x61irness_weight\x18\x11 \x01(\x02\x1aS\n\x0fGenericActivity\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x32\n\targuments\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x1a\x9a\x01\n\x11ResourcesActivity\x12*\n\x07run_for\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x11\x62ytes_to_allocate\x18\x02 \x01(\x04\x12$\n\x1c\x63pu_yield_every_n_iterations\x18\x03 \x01(\r\x12\x18\n\x10\x63pu_yield_for_ms\x18\x04 \x01(\r\x1a\x44\n\x0fPayloadActivity\x12\x18\n\x10\x62ytes_to_receive\x18\x01 \x01(\x05\x12\x17\n\x0f\x62ytes_to_return\x18\x02 \x01(\x05\x1aU\n\x0e\x43lientActivity\x12\x43\n\x0f\x63lient_sequence\x18\x01 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x1a/\n\x16RetryableErrorActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x1a\x92\x01\n\x0fTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x9b\x01\n\x18HeartbeatTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x42\x0f\n\ractivity_typeB\n\n\x08locality\"\xad\n\n\x1a\x45xecuteChildWorkflowAction\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x13parent_close_policy\x18\n \x01(\x0e\x32-.temporal.omes.kitchen_sink.ParentClosePolicy\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry\x12g\n\x11search_attributes\x18\x11 \x03(\x0b\x32L.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry\x12T\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x39.temporal.omes.kitchen_sink.ChildWorkflowCancellationType\x12G\n\x11versioning_intent\x18\x13 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x12\x45\n\x10\x61waitable_choice\x18\x14 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"0\n\x12\x41waitWorkflowState\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdf\x02\n\x10SendSignalAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0bsignal_name\x18\x03 \x01(\t\x12-\n\x04\x61rgs\x18\x04 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12J\n\x07headers\x18\x05 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x06 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\";\n\x14\x43\x61ncelWorkflowAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\"v\n\x14SetPatchMarkerAction\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\x12\x38\n\x0cinner_action\x18\x03 \x01(\x0b\x32\".temporal.omes.kitchen_sink.Action\"\xe3\x01\n\x1cUpsertSearchAttributesAction\x12i\n\x11search_attributes\x18\x01 \x03(\x0b\x32N.temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"G\n\x10UpsertMemoAction\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\"J\n\x12ReturnResultAction\x12\x34\n\x0breturn_this\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"F\n\x11ReturnErrorAction\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\"\xde\x06\n\x13\x43ontinueAsNewAction\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12G\n\x04memo\x18\x06 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry\x12M\n\x07headers\x18\x07 \x03(\x0b\x32<.temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry\x12`\n\x11search_attributes\x18\x08 \x03(\x0b\x32\x45.temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12G\n\x11versioning_intent\x18\n \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\xd1\x01\n\x15RemoteActivityOptions\x12O\n\x11\x63\x61ncellation_type\x18\x01 \x01(\x0e\x32\x34.temporal.omes.kitchen_sink.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x02 \x01(\x08\x12G\n\x11versioning_intent\x18\x03 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\"\xeb\x02\n\x15\x45xecuteNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x11\n\toperation\x18\x02 \x01(\t\x12\r\n\x05input\x18\x03 \x01(\t\x12O\n\x07headers\x18\x04 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x05 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x17\n\x0f\x65xpected_output\x18\x06 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x07 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"a\n\x11NexusHandlerInput\x12\r\n\x05input\x18\x01 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x02 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet*\xa4\x01\n\x11ParentClosePolicy\x12#\n\x1fPARENT_CLOSE_POLICY_UNSPECIFIED\x10\x00\x12!\n\x1dPARENT_CLOSE_POLICY_TERMINATE\x10\x01\x12\x1f\n\x1bPARENT_CLOSE_POLICY_ABANDON\x10\x02\x12&\n\"PARENT_CLOSE_POLICY_REQUEST_CANCEL\x10\x03*@\n\x10VersioningIntent\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCOMPATIBLE\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02*\xa2\x01\n\x1d\x43hildWorkflowCancellationType\x12\x14\n\x10\x43HILD_WF_ABANDON\x10\x00\x12\x17\n\x13\x43HILD_WF_TRY_CANCEL\x10\x01\x12(\n$CHILD_WF_WAIT_CANCELLATION_COMPLETED\x10\x02\x12(\n$CHILD_WF_WAIT_CANCELLATION_REQUESTED\x10\x03*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x42\n\x10io.temporal.omesZ.github.com/temporalio/omes/loadgen/kitchensinkb\x06proto3" +descriptor_data = "\n\x1fkitchen_sink/kitchen_sink.proto\x12\x1atemporal.omes.kitchen_sink\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\"\xe1\x01\n\tTestInput\x12\x41\n\x0eworkflow_input\x18\x01 \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowInput\x12\x43\n\x0f\x63lient_sequence\x18\x02 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x12L\n\x11with_start_action\x18\x03 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.WithStartClientAction\"R\n\x0e\x43lientSequence\x12@\n\x0b\x61\x63tion_sets\x18\x01 \x03(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSet\"\xbf\x01\n\x0f\x43lientActionSet\x12\x39\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32(.temporal.omes.kitchen_sink.ClientAction\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\x12.\n\x0bwait_at_end\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n%wait_for_current_run_to_finish_at_end\x18\x04 \x01(\x08\"\x98\x01\n\x15WithStartClientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x39\n\tdo_update\x18\x02 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x42\t\n\x07variant\"\x83\x04\n\x0c\x43lientAction\x12\x39\n\tdo_signal\x18\x01 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoSignalH\x00\x12\x37\n\x08\x64o_query\x18\x02 \x01(\x0b\x32#.temporal.omes.kitchen_sink.DoQueryH\x00\x12\x39\n\tdo_update\x18\x03 \x01(\x0b\x32$.temporal.omes.kitchen_sink.DoUpdateH\x00\x12\x45\n\x0enested_actions\x18\x04 \x01(\x0b\x32+.temporal.omes.kitchen_sink.ClientActionSetH\x00\x12=\n\x0b\x64o_describe\x18\x05 \x01(\x0b\x32&.temporal.omes.kitchen_sink.DoDescribeH\x00\x12_\n\x1d\x64o_standalone_nexus_operation\x18\x06 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.DoStandaloneNexusOperationH\x00\x12R\n\x16\x64o_standalone_activity\x18\x07 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.DoStandaloneActivityH\x00\x42\t\n\x07variant\"R\n\x1a\x44oStandaloneNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x11\n\toperation\x18\x03 \x01(\t\"[\n\x14\x44oStandaloneActivity\x12\x43\n\x08\x61\x63tivity\x18\x01 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteActivityAction\"\xf1\x02\n\x08\x44oSignal\x12Q\n\x11\x64o_signal_actions\x18\x01 \x01(\x0b\x32\x34.temporal.omes.kitchen_sink.DoSignal.DoSignalActionsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x1a\xb1\x01\n\x0f\x44oSignalActions\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x43\n\x12\x64o_actions_in_main\x18\x02 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12\x11\n\tsignal_id\x18\x03 \x01(\x05\x42\t\n\x07variantB\t\n\x07variant\"\x0c\n\nDoDescribe\"\xa9\x01\n\x07\x44oQuery\x12\x38\n\x0creport_state\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.PayloadsH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\xc7\x01\n\x08\x44oUpdate\x12\x41\n\ndo_actions\x18\x01 \x01(\x0b\x32+.temporal.omes.kitchen_sink.DoActionsUpdateH\x00\x12?\n\x06\x63ustom\x18\x02 \x01(\x0b\x32-.temporal.omes.kitchen_sink.HandlerInvocationH\x00\x12\x12\n\nwith_start\x18\x03 \x01(\x08\x12\x18\n\x10\x66\x61ilure_expected\x18\n \x01(\x08\x42\t\n\x07variant\"\x86\x01\n\x0f\x44oActionsUpdate\x12;\n\ndo_actions\x18\x01 \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12+\n\treject_me\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\t\n\x07variant\"P\n\x11HandlerInvocation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12-\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\"|\n\rWorkflowState\x12?\n\x03kvs\x18\x01 \x03(\x0b\x32\x32.temporal.omes.kitchen_sink.WorkflowState.KvsEntry\x1a*\n\x08KvsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa8\x01\n\rWorkflowInput\x12>\n\x0finitial_actions\x18\x01 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x12\x1d\n\x15\x65xpected_signal_count\x18\x02 \x01(\x05\x12\x1b\n\x13\x65xpected_signal_ids\x18\x03 \x03(\x05\x12\x1b\n\x13received_signal_ids\x18\x04 \x03(\x05\"T\n\tActionSet\x12\x33\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\".temporal.omes.kitchen_sink.Action\x12\x12\n\nconcurrent\x18\x02 \x01(\x08\"\xfa\x08\n\x06\x41\x63tion\x12\x38\n\x05timer\x18\x01 \x01(\x0b\x32\'.temporal.omes.kitchen_sink.TimerActionH\x00\x12J\n\rexec_activity\x18\x02 \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteActivityActionH\x00\x12U\n\x13\x65xec_child_workflow\x18\x03 \x01(\x0b\x32\x36.temporal.omes.kitchen_sink.ExecuteChildWorkflowActionH\x00\x12N\n\x14\x61wait_workflow_state\x18\x04 \x01(\x0b\x32..temporal.omes.kitchen_sink.AwaitWorkflowStateH\x00\x12\x43\n\x0bsend_signal\x18\x05 \x01(\x0b\x32,.temporal.omes.kitchen_sink.SendSignalActionH\x00\x12K\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.CancelWorkflowActionH\x00\x12L\n\x10set_patch_marker\x18\x07 \x01(\x0b\x32\x30.temporal.omes.kitchen_sink.SetPatchMarkerActionH\x00\x12\\\n\x18upsert_search_attributes\x18\x08 \x01(\x0b\x32\x38.temporal.omes.kitchen_sink.UpsertSearchAttributesActionH\x00\x12\x43\n\x0bupsert_memo\x18\t \x01(\x0b\x32,.temporal.omes.kitchen_sink.UpsertMemoActionH\x00\x12G\n\x12set_workflow_state\x18\n \x01(\x0b\x32).temporal.omes.kitchen_sink.WorkflowStateH\x00\x12G\n\rreturn_result\x18\x0b \x01(\x0b\x32..temporal.omes.kitchen_sink.ReturnResultActionH\x00\x12\x45\n\x0creturn_error\x18\x0c \x01(\x0b\x32-.temporal.omes.kitchen_sink.ReturnErrorActionH\x00\x12J\n\x0f\x63ontinue_as_new\x18\r \x01(\x0b\x32/.temporal.omes.kitchen_sink.ContinueAsNewActionH\x00\x12\x42\n\x11nested_action_set\x18\x0e \x01(\x0b\x32%.temporal.omes.kitchen_sink.ActionSetH\x00\x12L\n\x0fnexus_operation\x18\x0f \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.ExecuteNexusOperationH\x00\x42\t\n\x07variant\"\xa3\x02\n\x0f\x41waitableChoice\x12-\n\x0bwait_finish\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12)\n\x07\x61\x62\x61ndon\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x37\n\x15\x63\x61ncel_before_started\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x36\n\x14\x63\x61ncel_after_started\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x38\n\x16\x63\x61ncel_after_completed\x18\x05 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x0b\n\tcondition\"j\n\x0bTimerAction\x12\x14\n\x0cmilliseconds\x18\x01 \x01(\x04\x12\x45\n\x10\x61waitable_choice\x18\x02 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\"\xea\x11\n\x15\x45xecuteActivityAction\x12T\n\x07generic\x18\x01 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.GenericActivityH\x00\x12*\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12&\n\x04noop\x18\x03 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12X\n\tresources\x18\x0e \x01(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteActivityAction.ResourcesActivityH\x00\x12T\n\x07payload\x18\x12 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.PayloadActivityH\x00\x12R\n\x06\x63lient\x18\x13 \x01(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteActivityAction.ClientActivityH\x00\x12\x63\n\x0fretryable_error\x18\x14 \x01(\x0b\x32H.temporal.omes.kitchen_sink.ExecuteActivityAction.RetryableErrorActivityH\x00\x12T\n\x07timeout\x18\x15 \x01(\x0b\x32\x41.temporal.omes.kitchen_sink.ExecuteActivityAction.TimeoutActivityH\x00\x12_\n\theartbeat\x18\x16 \x01(\x0b\x32J.temporal.omes.kitchen_sink.ExecuteActivityAction.HeartbeatTimeoutActivityH\x00\x12\x12\n\ntask_queue\x18\x04 \x01(\t\x12O\n\x07headers\x18\x05 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteActivityAction.HeadersEntry\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\n \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12*\n\x08is_local\x18\x0b \x01(\x0b\x32\x16.google.protobuf.EmptyH\x01\x12\x43\n\x06remote\x18\x0c \x01(\x0b\x32\x31.temporal.omes.kitchen_sink.RemoteActivityOptionsH\x01\x12\x45\n\x10\x61waitable_choice\x18\r \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x32\n\x08priority\x18\x0f \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12\x14\n\x0c\x66\x61irness_key\x18\x10 \x01(\t\x12\x17\n\x0f\x66\x61irness_weight\x18\x11 \x01(\x02\x1aS\n\x0fGenericActivity\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x32\n\targuments\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x1a\x9a\x01\n\x11ResourcesActivity\x12*\n\x07run_for\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x11\x62ytes_to_allocate\x18\x02 \x01(\x04\x12$\n\x1c\x63pu_yield_every_n_iterations\x18\x03 \x01(\r\x12\x18\n\x10\x63pu_yield_for_ms\x18\x04 \x01(\r\x1a\x44\n\x0fPayloadActivity\x12\x18\n\x10\x62ytes_to_receive\x18\x01 \x01(\x05\x12\x17\n\x0f\x62ytes_to_return\x18\x02 \x01(\x05\x1aU\n\x0e\x43lientActivity\x12\x43\n\x0f\x63lient_sequence\x18\x01 \x01(\x0b\x32*.temporal.omes.kitchen_sink.ClientSequence\x1a/\n\x16RetryableErrorActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x1a\x92\x01\n\x0fTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x9b\x01\n\x18HeartbeatTimeoutActivity\x12\x15\n\rfail_attempts\x18\x01 \x01(\x05\x12\x33\n\x10success_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\x10\x66\x61ilure_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x42\x0f\n\ractivity_typeB\n\n\x08locality\"\xad\n\n\x1a\x45xecuteChildWorkflowAction\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x13parent_close_policy\x18\n \x01(\x0e\x32-.temporal.omes.kitchen_sink.ParentClosePolicy\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.MemoEntry\x12g\n\x11search_attributes\x18\x11 \x03(\x0b\x32L.temporal.omes.kitchen_sink.ExecuteChildWorkflowAction.SearchAttributesEntry\x12T\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x39.temporal.omes.kitchen_sink.ChildWorkflowCancellationType\x12G\n\x11versioning_intent\x18\x13 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x12\x45\n\x10\x61waitable_choice\x18\x14 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"0\n\x12\x41waitWorkflowState\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdf\x02\n\x10SendSignalAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0bsignal_name\x18\x03 \x01(\t\x12-\n\x04\x61rgs\x18\x04 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12J\n\x07headers\x18\x05 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.SendSignalAction.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x06 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\";\n\x14\x43\x61ncelWorkflowAction\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\"v\n\x14SetPatchMarkerAction\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\x12\x38\n\x0cinner_action\x18\x03 \x01(\x0b\x32\".temporal.omes.kitchen_sink.Action\"\xe3\x01\n\x1cUpsertSearchAttributesAction\x12i\n\x11search_attributes\x18\x01 \x03(\x0b\x32N.temporal.omes.kitchen_sink.UpsertSearchAttributesAction.SearchAttributesEntry\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"G\n\x10UpsertMemoAction\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\"J\n\x12ReturnResultAction\x12\x34\n\x0breturn_this\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\"F\n\x11ReturnErrorAction\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\"\xde\x06\n\x13\x43ontinueAsNewAction\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12G\n\x04memo\x18\x06 \x03(\x0b\x32\x39.temporal.omes.kitchen_sink.ContinueAsNewAction.MemoEntry\x12M\n\x07headers\x18\x07 \x03(\x0b\x32<.temporal.omes.kitchen_sink.ContinueAsNewAction.HeadersEntry\x12`\n\x11search_attributes\x18\x08 \x03(\x0b\x32\x45.temporal.omes.kitchen_sink.ContinueAsNewAction.SearchAttributesEntry\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12G\n\x11versioning_intent\x18\n \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\x1aL\n\tMemoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\x1aX\n\x15SearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01\"\xd1\x01\n\x15RemoteActivityOptions\x12O\n\x11\x63\x61ncellation_type\x18\x01 \x01(\x0e\x32\x34.temporal.omes.kitchen_sink.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x02 \x01(\x08\x12G\n\x11versioning_intent\x18\x03 \x01(\x0e\x32,.temporal.omes.kitchen_sink.VersioningIntent\"\xeb\x02\n\x15\x45xecuteNexusOperation\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x11\n\toperation\x18\x02 \x01(\t\x12\r\n\x05input\x18\x03 \x01(\t\x12O\n\x07headers\x18\x04 \x03(\x0b\x32>.temporal.omes.kitchen_sink.ExecuteNexusOperation.HeadersEntry\x12\x45\n\x10\x61waitable_choice\x18\x05 \x01(\x0b\x32+.temporal.omes.kitchen_sink.AwaitableChoice\x12\x17\n\x0f\x65xpected_output\x18\x06 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x07 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"a\n\x11NexusHandlerInput\x12\r\n\x05input\x18\x01 \x01(\t\x12=\n\x0e\x62\x65\x66ore_actions\x18\x02 \x03(\x0b\x32%.temporal.omes.kitchen_sink.ActionSet*\xa4\x01\n\x11ParentClosePolicy\x12#\n\x1fPARENT_CLOSE_POLICY_UNSPECIFIED\x10\x00\x12!\n\x1dPARENT_CLOSE_POLICY_TERMINATE\x10\x01\x12\x1f\n\x1bPARENT_CLOSE_POLICY_ABANDON\x10\x02\x12&\n\"PARENT_CLOSE_POLICY_REQUEST_CANCEL\x10\x03*@\n\x10VersioningIntent\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCOMPATIBLE\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02*\xa2\x01\n\x1d\x43hildWorkflowCancellationType\x12\x14\n\x10\x43HILD_WF_ABANDON\x10\x00\x12\x17\n\x13\x43HILD_WF_TRY_CANCEL\x10\x01\x12(\n$CHILD_WF_WAIT_CANCELLATION_COMPLETED\x10\x02\x12(\n$CHILD_WF_WAIT_CANCELLATION_REQUESTED\x10\x03*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x42\n\x10io.temporal.omesZ.github.com/temporalio/omes/loadgen/kitchensinkb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) @@ -25,6 +25,7 @@ module KitchenSink WithStartClientAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.WithStartClientAction").msgclass ClientAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.ClientAction").msgclass DoStandaloneNexusOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.DoStandaloneNexusOperation").msgclass + DoStandaloneActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.DoStandaloneActivity").msgclass DoSignal = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.DoSignal").msgclass DoSignal::DoSignalActions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.DoSignal.DoSignalActions").msgclass DoDescribe = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("temporal.omes.kitchen_sink.DoDescribe").msgclass diff --git a/workers/ruby/workerlib/kitchensink/activity_dispatch.rb b/workers/ruby/workerlib/kitchensink/activity_dispatch.rb new file mode 100644 index 000000000..74944d11e --- /dev/null +++ b/workers/ruby/workerlib/kitchensink/activity_dispatch.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'temporalio/retry_policy' + +# ActivityDispatch maps an ExecuteActivityAction to the registered activity name +# and its args, and converts its retry policy and timeouts. Shared by the +# workflow-scheduled path (KitchenSinkWorkflow#launch_activity) and the +# standalone-activity client path so the two stay in sync. +module ActivityDispatch + module_function + + # Returns [activity_name, args] for the given ExecuteActivityAction. + # Unrecognized variants fall back to the noop activity. + def name_and_args(exec_activity) + case exec_activity.activity_type + when :delay + ['delay', [exec_activity.delay]] + when :payload + input_data = Array.new(exec_activity.payload.bytes_to_receive) { |i| i % 256 }.pack('C*') + ['payload', [input_data, exec_activity.payload.bytes_to_return]] + when :client + ['client', [exec_activity.client]] + when :retryable_error + ['retryable_error', [exec_activity.retryable_error]] + when :timeout + ['timeout', [exec_activity.timeout]] + when :heartbeat + ['heartbeat', [exec_activity.heartbeat]] + else + ['noop', []] + end + end + + # Converts a proto RetryPolicy into a Temporalio::RetryPolicy, or nil if unset. + def retry_policy_from_proto(retry_policy) + return nil if retry_policy.nil? + + Temporalio::RetryPolicy.new( + max_attempts: retry_policy.maximum_attempts, + initial_interval: retry_policy.initial_interval&.then do |d| + d.seconds + (d.nanos / 1_000_000_000.0) + end + ) + end + + # Converts the named protobuf Duration field to seconds, or nil if unset/zero. + def duration_or_nil(activity_action, field) + val = activity_action.send(field) + return nil if val.nil? || (val.seconds.zero? && val.nanos.zero?) + + val.seconds + (val.nanos / 1_000_000_000.0) + end +end diff --git a/workers/ruby/workerlib/kitchensink/client_action_executor.rb b/workers/ruby/workerlib/kitchensink/client_action_executor.rb index 9777524a9..89da52e53 100644 --- a/workers/ruby/workerlib/kitchensink/client_action_executor.rb +++ b/workers/ruby/workerlib/kitchensink/client_action_executor.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +require 'securerandom' +require_relative 'activity_dispatch' + class ClientActionExecutor def initialize(client, workflow_id, task_queue, err_on_unimplemented: false) @client = client @@ -47,15 +50,36 @@ def execute_client_action(action) when :nested_actions execute_client_action_set(action.nested_actions) when :do_standalone_nexus_operation - raise Temporalio::Error::ApplicationError.new( - 'DoStandaloneNexusOperation is not supported', - non_retryable: true - ) + if @err_on_unimplemented + raise Temporalio::Error::ApplicationError.new( + 'DoStandaloneNexusOperation is not supported', + non_retryable: true + ) + end + when :do_standalone_activity + execute_standalone_activity(action.do_standalone_activity) else raise 'Client action must have a recognized variant' end end + def execute_standalone_activity(standalone) + raise 'DoStandaloneActivity.activity is required' if standalone.activity.nil? + + act = standalone.activity + act_type, args = ActivityDispatch.name_and_args(act) + @client.execute_activity( + act_type, *args, + id: "standalone-#{@workflow_id}-#{SecureRandom.uuid}", + task_queue: act.task_queue, + schedule_to_close_timeout: ActivityDispatch.duration_or_nil(act, :schedule_to_close_timeout), + schedule_to_start_timeout: ActivityDispatch.duration_or_nil(act, :schedule_to_start_timeout), + start_to_close_timeout: ActivityDispatch.duration_or_nil(act, :start_to_close_timeout), + heartbeat_timeout: ActivityDispatch.duration_or_nil(act, :heartbeat_timeout), + retry_policy: ActivityDispatch.retry_policy_from_proto(act.retry_policy) + ) + end + def execute_signal_action(signal) case signal.variant when :do_signal_actions diff --git a/workers/ruby/workerlib/kitchensink/kitchen_sink.rb b/workers/ruby/workerlib/kitchensink/kitchen_sink.rb index b4cd14b00..7cc56c2df 100644 --- a/workers/ruby/workerlib/kitchensink/kitchen_sink.rb +++ b/workers/ruby/workerlib/kitchensink/kitchen_sink.rb @@ -1,6 +1,7 @@ require 'temporalio/workflow' require 'temporalio/workflow/definition' require_relative '../../protos/kitchen_sink/kitchen_sink_pb' +require_relative 'activity_dispatch' KS = Temporal::Omes::KitchenSink @@ -191,50 +192,17 @@ def handle_action(action) end # rubocop:enable Metrics - # rubocop:disable Metrics def launch_activity(exec_activity) - act_type = 'noop' - args = [] - - case exec_activity.activity_type - when :delay - act_type = 'delay' - args << exec_activity.delay - when :noop - act_type = 'noop' - when :payload - act_type = 'payload' - input_data = Array.new(exec_activity.payload.bytes_to_receive) { |i| i % 256 }.pack('C*') - args << input_data - args << exec_activity.payload.bytes_to_return - when :client - act_type = 'client' - args << exec_activity.client - when :retryable_error - act_type = 'retryable_error' - args << exec_activity.retryable_error - when :timeout - act_type = 'timeout' - args << exec_activity.timeout - when :heartbeat - act_type = 'heartbeat' - args << exec_activity.heartbeat - end + act_type, args = ActivityDispatch.name_and_args(exec_activity) options = { - schedule_to_close_timeout: duration_or_nil(exec_activity, :schedule_to_close_timeout), - start_to_close_timeout: duration_or_nil(exec_activity, :start_to_close_timeout), - schedule_to_start_timeout: duration_or_nil(exec_activity, :schedule_to_start_timeout) + schedule_to_close_timeout: ActivityDispatch.duration_or_nil(exec_activity, :schedule_to_close_timeout), + start_to_close_timeout: ActivityDispatch.duration_or_nil(exec_activity, :start_to_close_timeout), + schedule_to_start_timeout: ActivityDispatch.duration_or_nil(exec_activity, :schedule_to_start_timeout) }.compact - if exec_activity.retry_policy - options[:retry_policy] = Temporalio::RetryPolicy.new( - max_attempts: exec_activity.retry_policy.maximum_attempts, - initial_interval: exec_activity.retry_policy.initial_interval&.then do |d| - d.seconds + (d.nanos / 1_000_000_000.0) - end - ) - end + retry_policy = ActivityDispatch.retry_policy_from_proto(exec_activity.retry_policy) + options[:retry_policy] = retry_policy if retry_policy if exec_activity.locality == :is_local Temporalio::Workflow.execute_local_activity(act_type, *args, **options) @@ -243,7 +211,7 @@ def launch_activity(exec_activity) raise NotImplementedError, 'priority is not supported yet' end - ht = duration_or_nil(exec_activity, :heartbeat_timeout) + ht = ActivityDispatch.duration_or_nil(exec_activity, :heartbeat_timeout) options[:heartbeat_timeout] = ht if ht options[:task_queue] = exec_activity.task_queue unless exec_activity.task_queue.empty? if exec_activity.locality == :remote @@ -253,7 +221,6 @@ def launch_activity(exec_activity) Temporalio::Workflow.execute_activity(act_type, *args, **options) end end - # rubocop:enable Metrics def handle_awaitable_choice( start_fn, @@ -311,11 +278,4 @@ def convert_cancel_type(ctype) else raise NotImplementedError, "Unknown cancellation type #{ctype}" end end - - def duration_or_nil(activity_action, field) - val = activity_action.send(field) - return nil if val.nil? || (val.seconds.zero? && val.nanos.zero?) - - val.seconds + (val.nanos / 1_000_000_000.0) - end end diff --git a/workers/typescript/workerlib/kitchensink/client-action-executor.ts b/workers/typescript/workerlib/kitchensink/client-action-executor.ts index 7d4a5b110..c663ab9d0 100644 --- a/workers/typescript/workerlib/kitchensink/client-action-executor.ts +++ b/workers/typescript/workerlib/kitchensink/client-action-executor.ts @@ -1,6 +1,7 @@ import { Client, WithStartWorkflowOperation } from '@temporalio/client'; -import { ApplicationFailure } from '@temporalio/common'; +import { ApplicationFailure, decompileRetryPolicy } from '@temporalio/common'; import { WorkflowIdConflictPolicy } from '@temporalio/client'; +import { activityNameAndArgs, durationConvertMaybeUndefined } from './proto_help'; import { temporal } from './protos/root'; import IClientSequence = temporal.omes.kitchen_sink.IClientSequence; import IClientActionSet = temporal.omes.kitchen_sink.IClientActionSet; @@ -8,6 +9,7 @@ import IClientAction = temporal.omes.kitchen_sink.IClientAction; import IDoSignal = temporal.omes.kitchen_sink.IDoSignal; import IDoUpdate = temporal.omes.kitchen_sink.IDoUpdate; import IDoQuery = temporal.omes.kitchen_sink.IDoQuery; +import IDoStandaloneActivity = temporal.omes.kitchen_sink.IDoStandaloneActivity; export class ClientActionExecutor { private client: Client; @@ -59,11 +61,17 @@ export class ClientActionExecutor { } else if (action.nestedActions) { await this.executeClientActionSet(action.nestedActions); } else if (action.doStandaloneNexusOperation) { - throw ApplicationFailure.create({ - message: 'DoStandaloneNexusOperation is not supported', - type: 'UnsupportedOperation', - nonRetryable: true, - }); + if (this.errOnUnimplemented) { + throw ApplicationFailure.create({ + message: 'DoStandaloneNexusOperation is not supported', + type: 'UnsupportedOperation', + nonRetryable: true, + }); + } + // Skip standalone nexus operations when not erroring on unimplemented + console.log('Skipping standalone nexus operation (not implemented)'); + } else if (action.doStandaloneActivity) { + await this.executeStandaloneActivity(action.doStandaloneActivity); } else { throw new Error('Client action must have a recognized variant'); } @@ -143,6 +151,24 @@ export class ClientActionExecutor { } } + private async executeStandaloneActivity(sa: IDoStandaloneActivity): Promise { + if (!sa.activity) { + throw new Error('DoStandaloneActivity.activity is required'); + } + const act = sa.activity; + const [actType, args] = activityNameAndArgs(act); + await this.client.activity.execute(actType, { + id: `standalone-${this.workflowId}-${process.hrtime.bigint()}`, + taskQueue: act.taskQueue ?? '', + args, + scheduleToCloseTimeout: durationConvertMaybeUndefined(act.scheduleToCloseTimeout), + startToCloseTimeout: durationConvertMaybeUndefined(act.startToCloseTimeout), + scheduleToStartTimeout: durationConvertMaybeUndefined(act.scheduleToStartTimeout), + heartbeatTimeout: durationConvertMaybeUndefined(act.heartbeatTimeout), + retry: decompileRetryPolicy(act.retryPolicy), + }); + } + private async executeQueryAction(query: IDoQuery): Promise { try { if (query.reportState) { diff --git a/workers/typescript/workerlib/kitchensink/proto_help.ts b/workers/typescript/workerlib/kitchensink/proto_help.ts index 42211453e..b6d0ec8e1 100644 --- a/workers/typescript/workerlib/kitchensink/proto_help.ts +++ b/workers/typescript/workerlib/kitchensink/proto_help.ts @@ -1,8 +1,34 @@ // Convert a protobuf duration to milliseconds -import { google } from './protos/root'; +import { google, temporal } from './protos/root'; import Long from 'long'; import IDuration = google.protobuf.IDuration; +import IExecuteActivityAction = temporal.omes.kitchen_sink.IExecuteActivityAction; + +// Map an ExecuteActivityAction to its registered activity name and args. +// Shared by the workflow-scheduled path and the standalone-activity path. +export function activityNameAndArgs(act: IExecuteActivityAction): [string, unknown[]] { + if (act.delay) { + return ['delay', [durationConvert(act.delay)]]; + } else if (act.resources) { + return ['resources', [act.resources]]; + } else if (act.payload) { + const inputData = new Uint8Array(act.payload.bytesToReceive || 0); + for (let i = 0; i < inputData.length; i++) { + inputData[i] = i % 256; + } + return ['payload', [inputData, act.payload.bytesToReturn]]; + } else if (act.client) { + return ['client', [act.client]]; + } else if (act.retryableError) { + return ['retryable_error', [act.retryableError]]; + } else if (act.timeout) { + return ['timeout', [act.timeout]]; + } else if (act.heartbeat) { + return ['heartbeat', [act.heartbeat]]; + } + return ['noop', []]; +} export function durationConvertMaybeUndefined(d: IDuration | null | undefined): number | undefined { if (!d) { diff --git a/workers/typescript/workerlib/kitchensink/workflows/kitchen_sink.ts b/workers/typescript/workerlib/kitchensink/workflows/kitchen_sink.ts index fe838d9d3..d9e1a10aa 100644 --- a/workers/typescript/workerlib/kitchensink/workflows/kitchen_sink.ts +++ b/workers/typescript/workerlib/kitchensink/workflows/kitchen_sink.ts @@ -28,7 +28,12 @@ import { SearchAttributes, } from '@temporalio/common'; import { decodeTypedSearchAttributes } from '@temporalio/common/lib/converter/payload-search-attributes'; -import { durationConvert, durationConvertMaybeUndefined, numify } from '../proto_help'; +import { + activityNameAndArgs, + durationConvert, + durationConvertMaybeUndefined, + numify, +} from '../proto_help'; import WorkflowInput = temporal.omes.kitchen_sink.WorkflowInput; import WorkflowState = temporal.omes.kitchen_sink.WorkflowState; import Payload = temporal.api.common.v1.Payload; @@ -267,42 +272,7 @@ export async function kitchenSink(input: WorkflowInput | undefined): Promise { - let actType = 'noop'; - const args = []; - if (execActivity.delay) { - actType = 'delay'; - args.push(durationConvert(execActivity.delay)); - } - if (execActivity.resources) { - actType = 'resources'; - args.push(execActivity.resources); - } - if (execActivity.payload) { - actType = 'payload'; - const bytesToReceive = execActivity.payload.bytesToReceive || 0; - const inputData = new Uint8Array(bytesToReceive); - for (let i = 0; i < inputData.length; i++) { - inputData[i] = i % 256; - } - args.push(inputData); - args.push(execActivity.payload.bytesToReturn); - } - if (execActivity.client) { - actType = 'client'; - args.push(execActivity.client); - } - if (execActivity.retryableError) { - actType = 'retryable_error'; - args.push(execActivity.retryableError); - } - if (execActivity.timeout) { - actType = 'timeout'; - args.push(execActivity.timeout); - } - if (execActivity.heartbeat) { - actType = 'heartbeat'; - args.push(execActivity.heartbeat); - } + const [actType, args] = activityNameAndArgs(execActivity); const actArgs: ActivityOptions | LocalActivityOptions = { scheduleToCloseTimeout: durationConvertMaybeUndefined(execActivity.scheduleToCloseTimeout),