cloud.google.com/go/aiplatform@v1.106.0/apiv1beta1/aiplatformpb/custom_job.pb.go (about) 1 // Copyright 2025 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.35.2 18 // protoc v4.25.7 19 // source: google/cloud/aiplatform/v1beta1/custom_job.proto 20 21 package aiplatformpb 22 23 import ( 24 _ "google.golang.org/genproto/googleapis/api/annotations" 25 status "google.golang.org/genproto/googleapis/rpc/status" 26 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 27 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 28 durationpb "google.golang.org/protobuf/types/known/durationpb" 29 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 30 reflect "reflect" 31 sync "sync" 32 ) 33 34 const ( 35 // Verify that this generated code is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 37 // Verify that runtime/protoimpl is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 39 ) 40 41 // Optional. This determines which type of scheduling strategy to use. Right 42 // now users have two options such as STANDARD which will use regular on 43 // demand resources to schedule the job, the other is SPOT which would 44 // leverage spot resources alongwith regular resources to schedule 45 // the job. 46 type Scheduling_Strategy int32 47 48 const ( 49 // Strategy will default to STANDARD. 50 Scheduling_STRATEGY_UNSPECIFIED Scheduling_Strategy = 0 51 // Deprecated. Regular on-demand provisioning strategy. 52 // 53 // Deprecated: Marked as deprecated in google/cloud/aiplatform/v1beta1/custom_job.proto. 54 Scheduling_ON_DEMAND Scheduling_Strategy = 1 55 // Deprecated. Low cost by making potential use of spot resources. 56 // 57 // Deprecated: Marked as deprecated in google/cloud/aiplatform/v1beta1/custom_job.proto. 58 Scheduling_LOW_COST Scheduling_Strategy = 2 59 // Standard provisioning strategy uses regular on-demand resources. 60 Scheduling_STANDARD Scheduling_Strategy = 3 61 // Spot provisioning strategy uses spot resources. 62 Scheduling_SPOT Scheduling_Strategy = 4 63 // Flex Start strategy uses DWS to queue for resources. 64 Scheduling_FLEX_START Scheduling_Strategy = 6 65 ) 66 67 // Enum value maps for Scheduling_Strategy. 68 var ( 69 Scheduling_Strategy_name = map[int32]string{ 70 0: "STRATEGY_UNSPECIFIED", 71 1: "ON_DEMAND", 72 2: "LOW_COST", 73 3: "STANDARD", 74 4: "SPOT", 75 6: "FLEX_START", 76 } 77 Scheduling_Strategy_value = map[string]int32{ 78 "STRATEGY_UNSPECIFIED": 0, 79 "ON_DEMAND": 1, 80 "LOW_COST": 2, 81 "STANDARD": 3, 82 "SPOT": 4, 83 "FLEX_START": 6, 84 } 85 ) 86 87 func (x Scheduling_Strategy) Enum() *Scheduling_Strategy { 88 p := new(Scheduling_Strategy) 89 *p = x 90 return p 91 } 92 93 func (x Scheduling_Strategy) String() string { 94 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 95 } 96 97 func (Scheduling_Strategy) Descriptor() protoreflect.EnumDescriptor { 98 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes[0].Descriptor() 99 } 100 101 func (Scheduling_Strategy) Type() protoreflect.EnumType { 102 return &file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes[0] 103 } 104 105 func (x Scheduling_Strategy) Number() protoreflect.EnumNumber { 106 return protoreflect.EnumNumber(x) 107 } 108 109 // Deprecated: Use Scheduling_Strategy.Descriptor instead. 110 func (Scheduling_Strategy) EnumDescriptor() ([]byte, []int) { 111 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{5, 0} 112 } 113 114 // Represents a job that runs custom workloads such as a Docker container or a 115 // Python package. A CustomJob can have multiple worker pools and each worker 116 // pool can have its own machine and input spec. A CustomJob will be cleaned up 117 // once the job enters terminal state (failed or succeeded). 118 type CustomJob struct { 119 state protoimpl.MessageState 120 sizeCache protoimpl.SizeCache 121 unknownFields protoimpl.UnknownFields 122 123 // Output only. Resource name of a CustomJob. 124 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 125 // Required. The display name of the CustomJob. 126 // The name can be up to 128 characters long and can consist of any UTF-8 127 // characters. 128 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 129 // Required. Job spec. 130 JobSpec *CustomJobSpec `protobuf:"bytes,4,opt,name=job_spec,json=jobSpec,proto3" json:"job_spec,omitempty"` 131 // Output only. The detailed state of the job. 132 State JobState `protobuf:"varint,5,opt,name=state,proto3,enum=google.cloud.aiplatform.v1beta1.JobState" json:"state,omitempty"` 133 // Output only. Time when the CustomJob was created. 134 CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` 135 // Output only. Time when the CustomJob for the first time entered the 136 // `JOB_STATE_RUNNING` state. 137 StartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 138 // Output only. Time when the CustomJob entered any of the following states: 139 // `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`. 140 EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 141 // Output only. Time when the CustomJob was most recently updated. 142 UpdateTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` 143 // Output only. Only populated when job's state is `JOB_STATE_FAILED` or 144 // `JOB_STATE_CANCELLED`. 145 Error *status.Status `protobuf:"bytes,10,opt,name=error,proto3" json:"error,omitempty"` 146 // The labels with user-defined metadata to organize CustomJobs. 147 // 148 // Label keys and values can be no longer than 64 characters 149 // (Unicode codepoints), can only contain lowercase letters, numeric 150 // characters, underscores and dashes. International characters are allowed. 151 // 152 // See https://goo.gl/xmQnxf for more information and examples of labels. 153 Labels map[string]string `protobuf:"bytes,11,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 154 // Customer-managed encryption key options for a CustomJob. If this is set, 155 // then all resources created by the CustomJob will be encrypted with the 156 // provided encryption key. 157 EncryptionSpec *EncryptionSpec `protobuf:"bytes,12,opt,name=encryption_spec,json=encryptionSpec,proto3" json:"encryption_spec,omitempty"` 158 // Output only. URIs for accessing [interactive 159 // shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) 160 // (one URI for each training node). Only available if 161 // [job_spec.enable_web_access][google.cloud.aiplatform.v1beta1.CustomJobSpec.enable_web_access] 162 // is `true`. 163 // 164 // The keys are names of each node in the training job; for example, 165 // `workerpool0-0` for the primary node, `workerpool1-0` for the first node in 166 // the second worker pool, and `workerpool1-1` for the second node in the 167 // second worker pool. 168 // 169 // The values are the URIs for each node's interactive shell. 170 WebAccessUris map[string]string `protobuf:"bytes,16,rep,name=web_access_uris,json=webAccessUris,proto3" json:"web_access_uris,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 171 // Output only. Reserved for future use. 172 SatisfiesPzs bool `protobuf:"varint,18,opt,name=satisfies_pzs,json=satisfiesPzs,proto3" json:"satisfies_pzs,omitempty"` 173 // Output only. Reserved for future use. 174 SatisfiesPzi bool `protobuf:"varint,19,opt,name=satisfies_pzi,json=satisfiesPzi,proto3" json:"satisfies_pzi,omitempty"` 175 } 176 177 func (x *CustomJob) Reset() { 178 *x = CustomJob{} 179 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[0] 180 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 181 ms.StoreMessageInfo(mi) 182 } 183 184 func (x *CustomJob) String() string { 185 return protoimpl.X.MessageStringOf(x) 186 } 187 188 func (*CustomJob) ProtoMessage() {} 189 190 func (x *CustomJob) ProtoReflect() protoreflect.Message { 191 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[0] 192 if x != nil { 193 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 194 if ms.LoadMessageInfo() == nil { 195 ms.StoreMessageInfo(mi) 196 } 197 return ms 198 } 199 return mi.MessageOf(x) 200 } 201 202 // Deprecated: Use CustomJob.ProtoReflect.Descriptor instead. 203 func (*CustomJob) Descriptor() ([]byte, []int) { 204 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{0} 205 } 206 207 func (x *CustomJob) GetName() string { 208 if x != nil { 209 return x.Name 210 } 211 return "" 212 } 213 214 func (x *CustomJob) GetDisplayName() string { 215 if x != nil { 216 return x.DisplayName 217 } 218 return "" 219 } 220 221 func (x *CustomJob) GetJobSpec() *CustomJobSpec { 222 if x != nil { 223 return x.JobSpec 224 } 225 return nil 226 } 227 228 func (x *CustomJob) GetState() JobState { 229 if x != nil { 230 return x.State 231 } 232 return JobState_JOB_STATE_UNSPECIFIED 233 } 234 235 func (x *CustomJob) GetCreateTime() *timestamppb.Timestamp { 236 if x != nil { 237 return x.CreateTime 238 } 239 return nil 240 } 241 242 func (x *CustomJob) GetStartTime() *timestamppb.Timestamp { 243 if x != nil { 244 return x.StartTime 245 } 246 return nil 247 } 248 249 func (x *CustomJob) GetEndTime() *timestamppb.Timestamp { 250 if x != nil { 251 return x.EndTime 252 } 253 return nil 254 } 255 256 func (x *CustomJob) GetUpdateTime() *timestamppb.Timestamp { 257 if x != nil { 258 return x.UpdateTime 259 } 260 return nil 261 } 262 263 func (x *CustomJob) GetError() *status.Status { 264 if x != nil { 265 return x.Error 266 } 267 return nil 268 } 269 270 func (x *CustomJob) GetLabels() map[string]string { 271 if x != nil { 272 return x.Labels 273 } 274 return nil 275 } 276 277 func (x *CustomJob) GetEncryptionSpec() *EncryptionSpec { 278 if x != nil { 279 return x.EncryptionSpec 280 } 281 return nil 282 } 283 284 func (x *CustomJob) GetWebAccessUris() map[string]string { 285 if x != nil { 286 return x.WebAccessUris 287 } 288 return nil 289 } 290 291 func (x *CustomJob) GetSatisfiesPzs() bool { 292 if x != nil { 293 return x.SatisfiesPzs 294 } 295 return false 296 } 297 298 func (x *CustomJob) GetSatisfiesPzi() bool { 299 if x != nil { 300 return x.SatisfiesPzi 301 } 302 return false 303 } 304 305 // Represents the spec of a CustomJob. 306 type CustomJobSpec struct { 307 state protoimpl.MessageState 308 sizeCache protoimpl.SizeCache 309 unknownFields protoimpl.UnknownFields 310 311 // Optional. The ID of the PersistentResource in the same Project and Location 312 // which to run 313 // 314 // If this is specified, the job will be run on existing machines held by the 315 // PersistentResource instead of on-demand short-live machines. 316 // The network and CMEK configs on the job should be consistent with those on 317 // the PersistentResource, otherwise, the job will be rejected. 318 PersistentResourceId string `protobuf:"bytes,14,opt,name=persistent_resource_id,json=persistentResourceId,proto3" json:"persistent_resource_id,omitempty"` 319 // Required. The spec of the worker pools including machine type and Docker 320 // image. All worker pools except the first one are optional and can be 321 // skipped by providing an empty value. 322 WorkerPoolSpecs []*WorkerPoolSpec `protobuf:"bytes,1,rep,name=worker_pool_specs,json=workerPoolSpecs,proto3" json:"worker_pool_specs,omitempty"` 323 // Scheduling options for a CustomJob. 324 Scheduling *Scheduling `protobuf:"bytes,3,opt,name=scheduling,proto3" json:"scheduling,omitempty"` 325 // Specifies the service account for workload run-as account. 326 // Users submitting jobs must have act-as permission on this run-as account. 327 // If unspecified, the [Vertex AI Custom Code Service 328 // Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) 329 // for the CustomJob's project is used. 330 ServiceAccount string `protobuf:"bytes,4,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` 331 // Optional. The full name of the Compute Engine 332 // [network](/compute/docs/networks-and-firewalls#networks) to which the Job 333 // should be peered. For example, `projects/12345/global/networks/myVPC`. 334 // [Format](/compute/docs/reference/rest/v1/networks/insert) 335 // is of the form `projects/{project}/global/networks/{network}`. 336 // Where {project} is a project number, as in `12345`, and {network} is a 337 // network name. 338 // 339 // To specify this field, you must have already [configured VPC Network 340 // Peering for Vertex 341 // AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). 342 // 343 // If this field is left unspecified, the job is not peered with any network. 344 Network string `protobuf:"bytes,5,opt,name=network,proto3" json:"network,omitempty"` 345 // Optional. A list of names for the reserved ip ranges under the VPC network 346 // that can be used for this job. 347 // 348 // If set, we will deploy the job within the provided ip ranges. Otherwise, 349 // the job will be deployed to any ip ranges under the provided VPC 350 // network. 351 // 352 // Example: ['vertex-ai-ip-range']. 353 ReservedIpRanges []string `protobuf:"bytes,13,rep,name=reserved_ip_ranges,json=reservedIpRanges,proto3" json:"reserved_ip_ranges,omitempty"` 354 // Optional. Configuration for PSC-I for CustomJob. 355 PscInterfaceConfig *PscInterfaceConfig `protobuf:"bytes,21,opt,name=psc_interface_config,json=pscInterfaceConfig,proto3" json:"psc_interface_config,omitempty"` 356 // The Cloud Storage location to store the output of this CustomJob or 357 // HyperparameterTuningJob. For HyperparameterTuningJob, 358 // the baseOutputDirectory of 359 // each child CustomJob backing a Trial is set to a subdirectory of name 360 // [id][google.cloud.aiplatform.v1beta1.Trial.id] under its parent 361 // HyperparameterTuningJob's baseOutputDirectory. 362 // 363 // The following Vertex AI environment variables will be passed to 364 // containers or python modules when this field is set: 365 // 366 // For CustomJob: 367 // 368 // * AIP_MODEL_DIR = `<base_output_directory>/model/` 369 // * AIP_CHECKPOINT_DIR = `<base_output_directory>/checkpoints/` 370 // * AIP_TENSORBOARD_LOG_DIR = `<base_output_directory>/logs/` 371 // 372 // For CustomJob backing a Trial of HyperparameterTuningJob: 373 // 374 // * AIP_MODEL_DIR = `<base_output_directory>/<trial_id>/model/` 375 // * AIP_CHECKPOINT_DIR = `<base_output_directory>/<trial_id>/checkpoints/` 376 // * AIP_TENSORBOARD_LOG_DIR = `<base_output_directory>/<trial_id>/logs/` 377 BaseOutputDirectory *GcsDestination `protobuf:"bytes,6,opt,name=base_output_directory,json=baseOutputDirectory,proto3" json:"base_output_directory,omitempty"` 378 // The ID of the location to store protected artifacts. e.g. us-central1. 379 // Populate only when the location is different than CustomJob location. 380 // List of supported locations: 381 // https://cloud.google.com/vertex-ai/docs/general/locations 382 ProtectedArtifactLocationId string `protobuf:"bytes,19,opt,name=protected_artifact_location_id,json=protectedArtifactLocationId,proto3" json:"protected_artifact_location_id,omitempty"` 383 // Optional. The name of a Vertex AI 384 // [Tensorboard][google.cloud.aiplatform.v1beta1.Tensorboard] resource to 385 // which this CustomJob will upload Tensorboard logs. Format: 386 // `projects/{project}/locations/{location}/tensorboards/{tensorboard}` 387 Tensorboard string `protobuf:"bytes,7,opt,name=tensorboard,proto3" json:"tensorboard,omitempty"` 388 // Optional. Whether you want Vertex AI to enable [interactive shell 389 // access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) 390 // to training containers. 391 // 392 // If set to `true`, you can access interactive shells at the URIs given 393 // by 394 // [CustomJob.web_access_uris][google.cloud.aiplatform.v1beta1.CustomJob.web_access_uris] 395 // or 396 // [Trial.web_access_uris][google.cloud.aiplatform.v1beta1.Trial.web_access_uris] 397 // (within 398 // [HyperparameterTuningJob.trials][google.cloud.aiplatform.v1beta1.HyperparameterTuningJob.trials]). 399 EnableWebAccess bool `protobuf:"varint,10,opt,name=enable_web_access,json=enableWebAccess,proto3" json:"enable_web_access,omitempty"` 400 // Optional. Whether you want Vertex AI to enable access to the customized 401 // dashboard in training chief container. 402 // 403 // If set to `true`, you can access the dashboard at the URIs given 404 // by 405 // [CustomJob.web_access_uris][google.cloud.aiplatform.v1beta1.CustomJob.web_access_uris] 406 // or 407 // [Trial.web_access_uris][google.cloud.aiplatform.v1beta1.Trial.web_access_uris] 408 // (within 409 // [HyperparameterTuningJob.trials][google.cloud.aiplatform.v1beta1.HyperparameterTuningJob.trials]). 410 EnableDashboardAccess bool `protobuf:"varint,16,opt,name=enable_dashboard_access,json=enableDashboardAccess,proto3" json:"enable_dashboard_access,omitempty"` 411 // Optional. The Experiment associated with this job. 412 // Format: 413 // `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}` 414 Experiment string `protobuf:"bytes,17,opt,name=experiment,proto3" json:"experiment,omitempty"` 415 // Optional. The Experiment Run associated with this job. 416 // Format: 417 // `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}` 418 ExperimentRun string `protobuf:"bytes,18,opt,name=experiment_run,json=experimentRun,proto3" json:"experiment_run,omitempty"` 419 // Optional. The name of the Model resources for which to generate a mapping 420 // to artifact URIs. Applicable only to some of the Google-provided custom 421 // jobs. Format: `projects/{project}/locations/{location}/models/{model}` 422 // 423 // In order to retrieve a specific version of the model, also provide 424 // the version ID or version alias. 425 // 426 // Example: `projects/{project}/locations/{location}/models/{model}@2` 427 // or 428 // `projects/{project}/locations/{location}/models/{model}@golden` 429 // 430 // If no version ID or alias is specified, the "default" version will be 431 // returned. The "default" version alias is created for the first version of 432 // the model, and can be moved to other versions later on. There will be 433 // exactly one default version. 434 Models []string `protobuf:"bytes,20,rep,name=models,proto3" json:"models,omitempty"` 435 } 436 437 func (x *CustomJobSpec) Reset() { 438 *x = CustomJobSpec{} 439 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[1] 440 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 441 ms.StoreMessageInfo(mi) 442 } 443 444 func (x *CustomJobSpec) String() string { 445 return protoimpl.X.MessageStringOf(x) 446 } 447 448 func (*CustomJobSpec) ProtoMessage() {} 449 450 func (x *CustomJobSpec) ProtoReflect() protoreflect.Message { 451 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[1] 452 if x != nil { 453 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 454 if ms.LoadMessageInfo() == nil { 455 ms.StoreMessageInfo(mi) 456 } 457 return ms 458 } 459 return mi.MessageOf(x) 460 } 461 462 // Deprecated: Use CustomJobSpec.ProtoReflect.Descriptor instead. 463 func (*CustomJobSpec) Descriptor() ([]byte, []int) { 464 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{1} 465 } 466 467 func (x *CustomJobSpec) GetPersistentResourceId() string { 468 if x != nil { 469 return x.PersistentResourceId 470 } 471 return "" 472 } 473 474 func (x *CustomJobSpec) GetWorkerPoolSpecs() []*WorkerPoolSpec { 475 if x != nil { 476 return x.WorkerPoolSpecs 477 } 478 return nil 479 } 480 481 func (x *CustomJobSpec) GetScheduling() *Scheduling { 482 if x != nil { 483 return x.Scheduling 484 } 485 return nil 486 } 487 488 func (x *CustomJobSpec) GetServiceAccount() string { 489 if x != nil { 490 return x.ServiceAccount 491 } 492 return "" 493 } 494 495 func (x *CustomJobSpec) GetNetwork() string { 496 if x != nil { 497 return x.Network 498 } 499 return "" 500 } 501 502 func (x *CustomJobSpec) GetReservedIpRanges() []string { 503 if x != nil { 504 return x.ReservedIpRanges 505 } 506 return nil 507 } 508 509 func (x *CustomJobSpec) GetPscInterfaceConfig() *PscInterfaceConfig { 510 if x != nil { 511 return x.PscInterfaceConfig 512 } 513 return nil 514 } 515 516 func (x *CustomJobSpec) GetBaseOutputDirectory() *GcsDestination { 517 if x != nil { 518 return x.BaseOutputDirectory 519 } 520 return nil 521 } 522 523 func (x *CustomJobSpec) GetProtectedArtifactLocationId() string { 524 if x != nil { 525 return x.ProtectedArtifactLocationId 526 } 527 return "" 528 } 529 530 func (x *CustomJobSpec) GetTensorboard() string { 531 if x != nil { 532 return x.Tensorboard 533 } 534 return "" 535 } 536 537 func (x *CustomJobSpec) GetEnableWebAccess() bool { 538 if x != nil { 539 return x.EnableWebAccess 540 } 541 return false 542 } 543 544 func (x *CustomJobSpec) GetEnableDashboardAccess() bool { 545 if x != nil { 546 return x.EnableDashboardAccess 547 } 548 return false 549 } 550 551 func (x *CustomJobSpec) GetExperiment() string { 552 if x != nil { 553 return x.Experiment 554 } 555 return "" 556 } 557 558 func (x *CustomJobSpec) GetExperimentRun() string { 559 if x != nil { 560 return x.ExperimentRun 561 } 562 return "" 563 } 564 565 func (x *CustomJobSpec) GetModels() []string { 566 if x != nil { 567 return x.Models 568 } 569 return nil 570 } 571 572 // Represents the spec of a worker pool in a job. 573 type WorkerPoolSpec struct { 574 state protoimpl.MessageState 575 sizeCache protoimpl.SizeCache 576 unknownFields protoimpl.UnknownFields 577 578 // The custom task to be executed in this worker pool. 579 // 580 // Types that are assignable to Task: 581 // 582 // *WorkerPoolSpec_ContainerSpec 583 // *WorkerPoolSpec_PythonPackageSpec 584 Task isWorkerPoolSpec_Task `protobuf_oneof:"task"` 585 // Optional. Immutable. The specification of a single machine. 586 MachineSpec *MachineSpec `protobuf:"bytes,1,opt,name=machine_spec,json=machineSpec,proto3" json:"machine_spec,omitempty"` 587 // Optional. The number of worker replicas to use for this worker pool. 588 ReplicaCount int64 `protobuf:"varint,2,opt,name=replica_count,json=replicaCount,proto3" json:"replica_count,omitempty"` 589 // Optional. List of NFS mount spec. 590 NfsMounts []*NfsMount `protobuf:"bytes,4,rep,name=nfs_mounts,json=nfsMounts,proto3" json:"nfs_mounts,omitempty"` 591 // Disk spec. 592 DiskSpec *DiskSpec `protobuf:"bytes,5,opt,name=disk_spec,json=diskSpec,proto3" json:"disk_spec,omitempty"` 593 } 594 595 func (x *WorkerPoolSpec) Reset() { 596 *x = WorkerPoolSpec{} 597 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[2] 598 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 599 ms.StoreMessageInfo(mi) 600 } 601 602 func (x *WorkerPoolSpec) String() string { 603 return protoimpl.X.MessageStringOf(x) 604 } 605 606 func (*WorkerPoolSpec) ProtoMessage() {} 607 608 func (x *WorkerPoolSpec) ProtoReflect() protoreflect.Message { 609 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[2] 610 if x != nil { 611 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 612 if ms.LoadMessageInfo() == nil { 613 ms.StoreMessageInfo(mi) 614 } 615 return ms 616 } 617 return mi.MessageOf(x) 618 } 619 620 // Deprecated: Use WorkerPoolSpec.ProtoReflect.Descriptor instead. 621 func (*WorkerPoolSpec) Descriptor() ([]byte, []int) { 622 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{2} 623 } 624 625 func (m *WorkerPoolSpec) GetTask() isWorkerPoolSpec_Task { 626 if m != nil { 627 return m.Task 628 } 629 return nil 630 } 631 632 func (x *WorkerPoolSpec) GetContainerSpec() *ContainerSpec { 633 if x, ok := x.GetTask().(*WorkerPoolSpec_ContainerSpec); ok { 634 return x.ContainerSpec 635 } 636 return nil 637 } 638 639 func (x *WorkerPoolSpec) GetPythonPackageSpec() *PythonPackageSpec { 640 if x, ok := x.GetTask().(*WorkerPoolSpec_PythonPackageSpec); ok { 641 return x.PythonPackageSpec 642 } 643 return nil 644 } 645 646 func (x *WorkerPoolSpec) GetMachineSpec() *MachineSpec { 647 if x != nil { 648 return x.MachineSpec 649 } 650 return nil 651 } 652 653 func (x *WorkerPoolSpec) GetReplicaCount() int64 { 654 if x != nil { 655 return x.ReplicaCount 656 } 657 return 0 658 } 659 660 func (x *WorkerPoolSpec) GetNfsMounts() []*NfsMount { 661 if x != nil { 662 return x.NfsMounts 663 } 664 return nil 665 } 666 667 func (x *WorkerPoolSpec) GetDiskSpec() *DiskSpec { 668 if x != nil { 669 return x.DiskSpec 670 } 671 return nil 672 } 673 674 type isWorkerPoolSpec_Task interface { 675 isWorkerPoolSpec_Task() 676 } 677 678 type WorkerPoolSpec_ContainerSpec struct { 679 // The custom container task. 680 ContainerSpec *ContainerSpec `protobuf:"bytes,6,opt,name=container_spec,json=containerSpec,proto3,oneof"` 681 } 682 683 type WorkerPoolSpec_PythonPackageSpec struct { 684 // The Python packaged task. 685 PythonPackageSpec *PythonPackageSpec `protobuf:"bytes,7,opt,name=python_package_spec,json=pythonPackageSpec,proto3,oneof"` 686 } 687 688 func (*WorkerPoolSpec_ContainerSpec) isWorkerPoolSpec_Task() {} 689 690 func (*WorkerPoolSpec_PythonPackageSpec) isWorkerPoolSpec_Task() {} 691 692 // The spec of a Container. 693 type ContainerSpec struct { 694 state protoimpl.MessageState 695 sizeCache protoimpl.SizeCache 696 unknownFields protoimpl.UnknownFields 697 698 // Required. The URI of a container image in the Container Registry that is to 699 // be run on each worker replica. 700 ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"` 701 // The command to be invoked when the container is started. 702 // It overrides the entrypoint instruction in Dockerfile when provided. 703 Command []string `protobuf:"bytes,2,rep,name=command,proto3" json:"command,omitempty"` 704 // The arguments to be passed when starting the container. 705 Args []string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` 706 // Environment variables to be passed to the container. 707 // Maximum limit is 100. 708 Env []*EnvVar `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty"` 709 } 710 711 func (x *ContainerSpec) Reset() { 712 *x = ContainerSpec{} 713 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[3] 714 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 715 ms.StoreMessageInfo(mi) 716 } 717 718 func (x *ContainerSpec) String() string { 719 return protoimpl.X.MessageStringOf(x) 720 } 721 722 func (*ContainerSpec) ProtoMessage() {} 723 724 func (x *ContainerSpec) ProtoReflect() protoreflect.Message { 725 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[3] 726 if x != nil { 727 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 728 if ms.LoadMessageInfo() == nil { 729 ms.StoreMessageInfo(mi) 730 } 731 return ms 732 } 733 return mi.MessageOf(x) 734 } 735 736 // Deprecated: Use ContainerSpec.ProtoReflect.Descriptor instead. 737 func (*ContainerSpec) Descriptor() ([]byte, []int) { 738 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{3} 739 } 740 741 func (x *ContainerSpec) GetImageUri() string { 742 if x != nil { 743 return x.ImageUri 744 } 745 return "" 746 } 747 748 func (x *ContainerSpec) GetCommand() []string { 749 if x != nil { 750 return x.Command 751 } 752 return nil 753 } 754 755 func (x *ContainerSpec) GetArgs() []string { 756 if x != nil { 757 return x.Args 758 } 759 return nil 760 } 761 762 func (x *ContainerSpec) GetEnv() []*EnvVar { 763 if x != nil { 764 return x.Env 765 } 766 return nil 767 } 768 769 // The spec of a Python packaged code. 770 type PythonPackageSpec struct { 771 state protoimpl.MessageState 772 sizeCache protoimpl.SizeCache 773 unknownFields protoimpl.UnknownFields 774 775 // Required. The URI of a container image in Artifact Registry that will run 776 // the provided Python package. Vertex AI provides a wide range of executor 777 // images with pre-installed packages to meet users' various use cases. See 778 // the list of [pre-built containers for 779 // training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). 780 // You must use an image from this list. 781 ExecutorImageUri string `protobuf:"bytes,1,opt,name=executor_image_uri,json=executorImageUri,proto3" json:"executor_image_uri,omitempty"` 782 // Required. The Google Cloud Storage location of the Python package files 783 // which are the training program and its dependent packages. The maximum 784 // number of package URIs is 100. 785 PackageUris []string `protobuf:"bytes,2,rep,name=package_uris,json=packageUris,proto3" json:"package_uris,omitempty"` 786 // Required. The Python module name to run after installing the packages. 787 PythonModule string `protobuf:"bytes,3,opt,name=python_module,json=pythonModule,proto3" json:"python_module,omitempty"` 788 // Command line arguments to be passed to the Python task. 789 Args []string `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` 790 // Environment variables to be passed to the python module. 791 // Maximum limit is 100. 792 Env []*EnvVar `protobuf:"bytes,5,rep,name=env,proto3" json:"env,omitempty"` 793 } 794 795 func (x *PythonPackageSpec) Reset() { 796 *x = PythonPackageSpec{} 797 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[4] 798 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 799 ms.StoreMessageInfo(mi) 800 } 801 802 func (x *PythonPackageSpec) String() string { 803 return protoimpl.X.MessageStringOf(x) 804 } 805 806 func (*PythonPackageSpec) ProtoMessage() {} 807 808 func (x *PythonPackageSpec) ProtoReflect() protoreflect.Message { 809 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[4] 810 if x != nil { 811 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 812 if ms.LoadMessageInfo() == nil { 813 ms.StoreMessageInfo(mi) 814 } 815 return ms 816 } 817 return mi.MessageOf(x) 818 } 819 820 // Deprecated: Use PythonPackageSpec.ProtoReflect.Descriptor instead. 821 func (*PythonPackageSpec) Descriptor() ([]byte, []int) { 822 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{4} 823 } 824 825 func (x *PythonPackageSpec) GetExecutorImageUri() string { 826 if x != nil { 827 return x.ExecutorImageUri 828 } 829 return "" 830 } 831 832 func (x *PythonPackageSpec) GetPackageUris() []string { 833 if x != nil { 834 return x.PackageUris 835 } 836 return nil 837 } 838 839 func (x *PythonPackageSpec) GetPythonModule() string { 840 if x != nil { 841 return x.PythonModule 842 } 843 return "" 844 } 845 846 func (x *PythonPackageSpec) GetArgs() []string { 847 if x != nil { 848 return x.Args 849 } 850 return nil 851 } 852 853 func (x *PythonPackageSpec) GetEnv() []*EnvVar { 854 if x != nil { 855 return x.Env 856 } 857 return nil 858 } 859 860 // All parameters related to queuing and scheduling of custom jobs. 861 type Scheduling struct { 862 state protoimpl.MessageState 863 sizeCache protoimpl.SizeCache 864 unknownFields protoimpl.UnknownFields 865 866 // The maximum job running time. The default is 7 days. 867 Timeout *durationpb.Duration `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"` 868 // Restarts the entire CustomJob if a worker gets restarted. 869 // This feature can be used by distributed training jobs that are not 870 // resilient to workers leaving and joining a job. 871 RestartJobOnWorkerRestart bool `protobuf:"varint,3,opt,name=restart_job_on_worker_restart,json=restartJobOnWorkerRestart,proto3" json:"restart_job_on_worker_restart,omitempty"` 872 // Optional. This determines which type of scheduling strategy to use. 873 Strategy Scheduling_Strategy `protobuf:"varint,4,opt,name=strategy,proto3,enum=google.cloud.aiplatform.v1beta1.Scheduling_Strategy" json:"strategy,omitempty"` 874 // Optional. Indicates if the job should retry for internal errors after the 875 // job starts running. If true, overrides 876 // `Scheduling.restart_job_on_worker_restart` to false. 877 DisableRetries bool `protobuf:"varint,5,opt,name=disable_retries,json=disableRetries,proto3" json:"disable_retries,omitempty"` 878 // Optional. This is the maximum duration that a job will wait for the 879 // requested resources to be provisioned if the scheduling strategy is set to 880 // [Strategy.DWS_FLEX_START]. 881 // If set to 0, the job will wait indefinitely. The default is 24 hours. 882 MaxWaitDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=max_wait_duration,json=maxWaitDuration,proto3" json:"max_wait_duration,omitempty"` 883 } 884 885 func (x *Scheduling) Reset() { 886 *x = Scheduling{} 887 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[5] 888 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 889 ms.StoreMessageInfo(mi) 890 } 891 892 func (x *Scheduling) String() string { 893 return protoimpl.X.MessageStringOf(x) 894 } 895 896 func (*Scheduling) ProtoMessage() {} 897 898 func (x *Scheduling) ProtoReflect() protoreflect.Message { 899 mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[5] 900 if x != nil { 901 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 902 if ms.LoadMessageInfo() == nil { 903 ms.StoreMessageInfo(mi) 904 } 905 return ms 906 } 907 return mi.MessageOf(x) 908 } 909 910 // Deprecated: Use Scheduling.ProtoReflect.Descriptor instead. 911 func (*Scheduling) Descriptor() ([]byte, []int) { 912 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{5} 913 } 914 915 func (x *Scheduling) GetTimeout() *durationpb.Duration { 916 if x != nil { 917 return x.Timeout 918 } 919 return nil 920 } 921 922 func (x *Scheduling) GetRestartJobOnWorkerRestart() bool { 923 if x != nil { 924 return x.RestartJobOnWorkerRestart 925 } 926 return false 927 } 928 929 func (x *Scheduling) GetStrategy() Scheduling_Strategy { 930 if x != nil { 931 return x.Strategy 932 } 933 return Scheduling_STRATEGY_UNSPECIFIED 934 } 935 936 func (x *Scheduling) GetDisableRetries() bool { 937 if x != nil { 938 return x.DisableRetries 939 } 940 return false 941 } 942 943 func (x *Scheduling) GetMaxWaitDuration() *durationpb.Duration { 944 if x != nil { 945 return x.MaxWaitDuration 946 } 947 return nil 948 } 949 950 var File_google_cloud_aiplatform_v1beta1_custom_job_proto protoreflect.FileDescriptor 951 952 var file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc = []byte{ 953 0x0a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 954 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 955 0x31, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 956 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 957 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 958 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 959 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 960 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 961 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 962 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 963 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 964 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 965 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 966 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 967 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x2e, 968 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 969 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 970 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 971 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 972 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 973 0x2f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 974 0x1a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 975 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 976 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 977 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 978 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 979 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 980 0x63, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 981 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 982 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 983 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 984 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 985 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 986 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe3, 0x08, 987 0x0a, 0x09, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x12, 0x17, 0x0a, 0x04, 0x6e, 988 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 989 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 990 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 991 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x08, 992 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 993 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 994 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 995 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 996 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x05, 997 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 998 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 999 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 1000 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 1001 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 1002 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 1003 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 1004 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 1005 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 1006 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 1007 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 1008 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 1009 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 1010 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 1011 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 1012 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 1013 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 1014 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 1015 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 1016 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 1017 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 1018 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 1019 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 1020 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 1021 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 1022 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 1023 0x74, 0x61, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 1024 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 1025 0x73, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 1026 0x73, 0x70, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 1027 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1028 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x63, 1029 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x65, 0x6e, 0x63, 1030 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x0f, 0x77, 1031 0x65, 0x62, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x10, 1032 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 1033 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 1034 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 1035 0x2e, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x45, 0x6e, 1036 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x77, 0x65, 0x62, 0x41, 0x63, 0x63, 1037 0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 1038 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 1039 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 1040 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 1041 0x7a, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, 1042 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x69, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 1043 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 1044 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 1045 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 1046 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 1047 0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 1048 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 1049 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 1050 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x69, 0xea, 0x41, 0x66, 0x0a, 0x23, 0x61, 1051 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 1052 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 1053 0x6f, 0x62, 0x12, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 1054 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 1055 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 1056 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6a, 1057 0x6f, 0x62, 0x7d, 0x22, 0xfb, 0x08, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 1058 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 1059 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 1060 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x61, 1061 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 1062 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 1063 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x14, 0x70, 0x65, 0x72, 1064 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 1065 0x64, 0x12, 0x60, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 1066 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 1067 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 1068 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 1069 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 1070 0x41, 0x02, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 1071 0x65, 0x63, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 1072 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 1073 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 1074 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 1075 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 1076 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 1077 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 1078 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6e, 0x65, 0x74, 1079 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x01, 0xfa, 1080 0x41, 0x20, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 1081 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 1082 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x31, 0x0a, 0x12, 0x72, 1083 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 1084 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x72, 0x65, 1085 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x49, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x6a, 1086 0x0a, 0x14, 0x70, 0x73, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 1087 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 1088 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 1089 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 1090 0x73, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 1091 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x70, 0x73, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 1092 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x15, 0x62, 0x61, 1093 0x73, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 1094 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 1095 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 1096 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x63, 0x73, 0x44, 1097 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x62, 0x61, 0x73, 0x65, 1098 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 1099 0x43, 0x0a, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x74, 1100 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 1101 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 1102 0x65, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 1103 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x62, 0x6f, 1104 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x01, 0xfa, 0x41, 1105 0x27, 0x0a, 0x25, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 1106 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 1107 0x73, 0x6f, 0x72, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 1108 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 1109 0x77, 0x65, 0x62, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 1110 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x65, 0x62, 1111 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 1112 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 1113 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x65, 0x6e, 1114 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63, 1115 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 1116 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 1117 0x21, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 1118 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 1119 0x78, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 1120 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x75, 0x6e, 1121 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 1122 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 1123 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 1124 0x74, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 1125 0x12, 0x3f, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 1126 0x42, 0x27, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1127 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 1128 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 1129 0x73, 0x22, 0xf1, 0x03, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 1130 0x53, 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 1131 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 1132 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 1133 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 1134 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0d, 1135 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x64, 0x0a, 1136 0x13, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 1137 0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 1138 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1139 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x79, 0x74, 1140 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 1141 0x52, 0x11, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 1142 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x73, 1143 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 1144 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 1145 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 1146 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x52, 1147 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 1148 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 1149 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 1150 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0a, 0x6e, 0x66, 0x73, 0x5f, 0x6d, 0x6f, 1151 0x75, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 1152 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1153 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x66, 0x73, 1154 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x6e, 0x66, 0x73, 0x4d, 1155 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x70, 1156 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 1157 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 1158 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x53, 1159 0x70, 0x65, 0x63, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x42, 0x06, 0x0a, 1160 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 1161 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 1162 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 1163 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 1164 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 1165 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 1166 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04, 1167 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 1168 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 1169 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 1170 0x6e, 0x76, 0x22, 0xe7, 0x01, 0x0a, 0x11, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 1171 0x6b, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 1172 0x75, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 1173 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 1174 0x74, 0x6f, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x26, 0x0a, 0x0c, 0x70, 1175 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 1176 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x55, 1177 0x72, 0x69, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 1178 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 1179 0x0c, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 1180 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 1181 0x73, 0x12, 0x39, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 1182 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 1183 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 1184 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x22, 0xc7, 0x03, 0x0a, 1185 0x0a, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x07, 0x74, 1186 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 1187 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 1188 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 1189 0x12, 0x40, 0x0a, 0x1d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 1190 0x6f, 0x6e, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 1191 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 1192 0x4a, 0x6f, 0x62, 0x4f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x74, 0x61, 1193 0x72, 0x74, 0x12, 0x55, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 1194 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 1195 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 1196 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 1197 0x67, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 1198 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x69, 0x73, 1199 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 1200 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 1201 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x77, 1202 0x61, 0x69, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 1203 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1204 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 1205 0x41, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x57, 0x61, 0x69, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 1206 0x69, 0x6f, 0x6e, 0x22, 0x71, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 1207 0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 1208 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 1209 0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 1210 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 1211 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 1212 0x53, 0x50, 0x4f, 0x54, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4c, 0x45, 0x58, 0x5f, 0x53, 1213 0x54, 0x41, 0x52, 0x54, 0x10, 0x06, 0x42, 0xe5, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 1214 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 1215 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0e, 1216 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 1217 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 1218 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 1219 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 1220 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 1221 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 1222 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 1223 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 1224 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 1225 0x6d, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 1226 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 1227 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 1228 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 1229 } 1230 1231 var ( 1232 file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescOnce sync.Once 1233 file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData = file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc 1234 ) 1235 1236 func file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP() []byte { 1237 file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescOnce.Do(func() { 1238 file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData) 1239 }) 1240 return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData 1241 } 1242 1243 var file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 1244 var file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes = make([]protoimpl.MessageInfo, 8) 1245 var file_google_cloud_aiplatform_v1beta1_custom_job_proto_goTypes = []any{ 1246 (Scheduling_Strategy)(0), // 0: google.cloud.aiplatform.v1beta1.Scheduling.Strategy 1247 (*CustomJob)(nil), // 1: google.cloud.aiplatform.v1beta1.CustomJob 1248 (*CustomJobSpec)(nil), // 2: google.cloud.aiplatform.v1beta1.CustomJobSpec 1249 (*WorkerPoolSpec)(nil), // 3: google.cloud.aiplatform.v1beta1.WorkerPoolSpec 1250 (*ContainerSpec)(nil), // 4: google.cloud.aiplatform.v1beta1.ContainerSpec 1251 (*PythonPackageSpec)(nil), // 5: google.cloud.aiplatform.v1beta1.PythonPackageSpec 1252 (*Scheduling)(nil), // 6: google.cloud.aiplatform.v1beta1.Scheduling 1253 nil, // 7: google.cloud.aiplatform.v1beta1.CustomJob.LabelsEntry 1254 nil, // 8: google.cloud.aiplatform.v1beta1.CustomJob.WebAccessUrisEntry 1255 (JobState)(0), // 9: google.cloud.aiplatform.v1beta1.JobState 1256 (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp 1257 (*status.Status)(nil), // 11: google.rpc.Status 1258 (*EncryptionSpec)(nil), // 12: google.cloud.aiplatform.v1beta1.EncryptionSpec 1259 (*PscInterfaceConfig)(nil), // 13: google.cloud.aiplatform.v1beta1.PscInterfaceConfig 1260 (*GcsDestination)(nil), // 14: google.cloud.aiplatform.v1beta1.GcsDestination 1261 (*MachineSpec)(nil), // 15: google.cloud.aiplatform.v1beta1.MachineSpec 1262 (*NfsMount)(nil), // 16: google.cloud.aiplatform.v1beta1.NfsMount 1263 (*DiskSpec)(nil), // 17: google.cloud.aiplatform.v1beta1.DiskSpec 1264 (*EnvVar)(nil), // 18: google.cloud.aiplatform.v1beta1.EnvVar 1265 (*durationpb.Duration)(nil), // 19: google.protobuf.Duration 1266 } 1267 var file_google_cloud_aiplatform_v1beta1_custom_job_proto_depIdxs = []int32{ 1268 2, // 0: google.cloud.aiplatform.v1beta1.CustomJob.job_spec:type_name -> google.cloud.aiplatform.v1beta1.CustomJobSpec 1269 9, // 1: google.cloud.aiplatform.v1beta1.CustomJob.state:type_name -> google.cloud.aiplatform.v1beta1.JobState 1270 10, // 2: google.cloud.aiplatform.v1beta1.CustomJob.create_time:type_name -> google.protobuf.Timestamp 1271 10, // 3: google.cloud.aiplatform.v1beta1.CustomJob.start_time:type_name -> google.protobuf.Timestamp 1272 10, // 4: google.cloud.aiplatform.v1beta1.CustomJob.end_time:type_name -> google.protobuf.Timestamp 1273 10, // 5: google.cloud.aiplatform.v1beta1.CustomJob.update_time:type_name -> google.protobuf.Timestamp 1274 11, // 6: google.cloud.aiplatform.v1beta1.CustomJob.error:type_name -> google.rpc.Status 1275 7, // 7: google.cloud.aiplatform.v1beta1.CustomJob.labels:type_name -> google.cloud.aiplatform.v1beta1.CustomJob.LabelsEntry 1276 12, // 8: google.cloud.aiplatform.v1beta1.CustomJob.encryption_spec:type_name -> google.cloud.aiplatform.v1beta1.EncryptionSpec 1277 8, // 9: google.cloud.aiplatform.v1beta1.CustomJob.web_access_uris:type_name -> google.cloud.aiplatform.v1beta1.CustomJob.WebAccessUrisEntry 1278 3, // 10: google.cloud.aiplatform.v1beta1.CustomJobSpec.worker_pool_specs:type_name -> google.cloud.aiplatform.v1beta1.WorkerPoolSpec 1279 6, // 11: google.cloud.aiplatform.v1beta1.CustomJobSpec.scheduling:type_name -> google.cloud.aiplatform.v1beta1.Scheduling 1280 13, // 12: google.cloud.aiplatform.v1beta1.CustomJobSpec.psc_interface_config:type_name -> google.cloud.aiplatform.v1beta1.PscInterfaceConfig 1281 14, // 13: google.cloud.aiplatform.v1beta1.CustomJobSpec.base_output_directory:type_name -> google.cloud.aiplatform.v1beta1.GcsDestination 1282 4, // 14: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.container_spec:type_name -> google.cloud.aiplatform.v1beta1.ContainerSpec 1283 5, // 15: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.python_package_spec:type_name -> google.cloud.aiplatform.v1beta1.PythonPackageSpec 1284 15, // 16: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.machine_spec:type_name -> google.cloud.aiplatform.v1beta1.MachineSpec 1285 16, // 17: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.nfs_mounts:type_name -> google.cloud.aiplatform.v1beta1.NfsMount 1286 17, // 18: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.disk_spec:type_name -> google.cloud.aiplatform.v1beta1.DiskSpec 1287 18, // 19: google.cloud.aiplatform.v1beta1.ContainerSpec.env:type_name -> google.cloud.aiplatform.v1beta1.EnvVar 1288 18, // 20: google.cloud.aiplatform.v1beta1.PythonPackageSpec.env:type_name -> google.cloud.aiplatform.v1beta1.EnvVar 1289 19, // 21: google.cloud.aiplatform.v1beta1.Scheduling.timeout:type_name -> google.protobuf.Duration 1290 0, // 22: google.cloud.aiplatform.v1beta1.Scheduling.strategy:type_name -> google.cloud.aiplatform.v1beta1.Scheduling.Strategy 1291 19, // 23: google.cloud.aiplatform.v1beta1.Scheduling.max_wait_duration:type_name -> google.protobuf.Duration 1292 24, // [24:24] is the sub-list for method output_type 1293 24, // [24:24] is the sub-list for method input_type 1294 24, // [24:24] is the sub-list for extension type_name 1295 24, // [24:24] is the sub-list for extension extendee 1296 0, // [0:24] is the sub-list for field type_name 1297 } 1298 1299 func init() { file_google_cloud_aiplatform_v1beta1_custom_job_proto_init() } 1300 func file_google_cloud_aiplatform_v1beta1_custom_job_proto_init() { 1301 if File_google_cloud_aiplatform_v1beta1_custom_job_proto != nil { 1302 return 1303 } 1304 file_google_cloud_aiplatform_v1beta1_encryption_spec_proto_init() 1305 file_google_cloud_aiplatform_v1beta1_env_var_proto_init() 1306 file_google_cloud_aiplatform_v1beta1_io_proto_init() 1307 file_google_cloud_aiplatform_v1beta1_job_state_proto_init() 1308 file_google_cloud_aiplatform_v1beta1_machine_resources_proto_init() 1309 file_google_cloud_aiplatform_v1beta1_service_networking_proto_init() 1310 file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[2].OneofWrappers = []any{ 1311 (*WorkerPoolSpec_ContainerSpec)(nil), 1312 (*WorkerPoolSpec_PythonPackageSpec)(nil), 1313 } 1314 type x struct{} 1315 out := protoimpl.TypeBuilder{ 1316 File: protoimpl.DescBuilder{ 1317 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 1318 RawDescriptor: file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc, 1319 NumEnums: 1, 1320 NumMessages: 8, 1321 NumExtensions: 0, 1322 NumServices: 0, 1323 }, 1324 GoTypes: file_google_cloud_aiplatform_v1beta1_custom_job_proto_goTypes, 1325 DependencyIndexes: file_google_cloud_aiplatform_v1beta1_custom_job_proto_depIdxs, 1326 EnumInfos: file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes, 1327 MessageInfos: file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes, 1328 }.Build() 1329 File_google_cloud_aiplatform_v1beta1_custom_job_proto = out.File 1330 file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc = nil 1331 file_google_cloud_aiplatform_v1beta1_custom_job_proto_goTypes = nil 1332 file_google_cloud_aiplatform_v1beta1_custom_job_proto_depIdxs = nil 1333 }