cloud.google.com/go/aiplatform@v1.106.0/apiv1/aiplatformpb/study.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/v1/study.proto 20 21 package aiplatformpb 22 23 import ( 24 _ "google.golang.org/genproto/googleapis/api/annotations" 25 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 26 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 27 durationpb "google.golang.org/protobuf/types/known/durationpb" 28 structpb "google.golang.org/protobuf/types/known/structpb" 29 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 30 wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" 31 reflect "reflect" 32 sync "sync" 33 ) 34 35 const ( 36 // Verify that this generated code is sufficiently up-to-date. 37 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 38 // Verify that runtime/protoimpl is sufficiently up-to-date. 39 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 40 ) 41 42 // Describes the Study state. 43 type Study_State int32 44 45 const ( 46 // The study state is unspecified. 47 Study_STATE_UNSPECIFIED Study_State = 0 48 // The study is active. 49 Study_ACTIVE Study_State = 1 50 // The study is stopped due to an internal error. 51 Study_INACTIVE Study_State = 2 52 // The study is done when the service exhausts the parameter search space 53 // or max_trial_count is reached. 54 Study_COMPLETED Study_State = 3 55 ) 56 57 // Enum value maps for Study_State. 58 var ( 59 Study_State_name = map[int32]string{ 60 0: "STATE_UNSPECIFIED", 61 1: "ACTIVE", 62 2: "INACTIVE", 63 3: "COMPLETED", 64 } 65 Study_State_value = map[string]int32{ 66 "STATE_UNSPECIFIED": 0, 67 "ACTIVE": 1, 68 "INACTIVE": 2, 69 "COMPLETED": 3, 70 } 71 ) 72 73 func (x Study_State) Enum() *Study_State { 74 p := new(Study_State) 75 *p = x 76 return p 77 } 78 79 func (x Study_State) String() string { 80 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 81 } 82 83 func (Study_State) Descriptor() protoreflect.EnumDescriptor { 84 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[0].Descriptor() 85 } 86 87 func (Study_State) Type() protoreflect.EnumType { 88 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[0] 89 } 90 91 func (x Study_State) Number() protoreflect.EnumNumber { 92 return protoreflect.EnumNumber(x) 93 } 94 95 // Deprecated: Use Study_State.Descriptor instead. 96 func (Study_State) EnumDescriptor() ([]byte, []int) { 97 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{0, 0} 98 } 99 100 // Describes a Trial state. 101 type Trial_State int32 102 103 const ( 104 // The Trial state is unspecified. 105 Trial_STATE_UNSPECIFIED Trial_State = 0 106 // Indicates that a specific Trial has been requested, but it has not yet 107 // been suggested by the service. 108 Trial_REQUESTED Trial_State = 1 109 // Indicates that the Trial has been suggested. 110 Trial_ACTIVE Trial_State = 2 111 // Indicates that the Trial should stop according to the service. 112 Trial_STOPPING Trial_State = 3 113 // Indicates that the Trial is completed successfully. 114 Trial_SUCCEEDED Trial_State = 4 115 // Indicates that the Trial should not be attempted again. 116 // The service will set a Trial to INFEASIBLE when it's done but missing 117 // the final_measurement. 118 Trial_INFEASIBLE Trial_State = 5 119 ) 120 121 // Enum value maps for Trial_State. 122 var ( 123 Trial_State_name = map[int32]string{ 124 0: "STATE_UNSPECIFIED", 125 1: "REQUESTED", 126 2: "ACTIVE", 127 3: "STOPPING", 128 4: "SUCCEEDED", 129 5: "INFEASIBLE", 130 } 131 Trial_State_value = map[string]int32{ 132 "STATE_UNSPECIFIED": 0, 133 "REQUESTED": 1, 134 "ACTIVE": 2, 135 "STOPPING": 3, 136 "SUCCEEDED": 4, 137 "INFEASIBLE": 5, 138 } 139 ) 140 141 func (x Trial_State) Enum() *Trial_State { 142 p := new(Trial_State) 143 *p = x 144 return p 145 } 146 147 func (x Trial_State) String() string { 148 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 149 } 150 151 func (Trial_State) Descriptor() protoreflect.EnumDescriptor { 152 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[1].Descriptor() 153 } 154 155 func (Trial_State) Type() protoreflect.EnumType { 156 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[1] 157 } 158 159 func (x Trial_State) Number() protoreflect.EnumNumber { 160 return protoreflect.EnumNumber(x) 161 } 162 163 // Deprecated: Use Trial_State.Descriptor instead. 164 func (Trial_State) EnumDescriptor() ([]byte, []int) { 165 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{1, 0} 166 } 167 168 // The available search algorithms for the Study. 169 type StudySpec_Algorithm int32 170 171 const ( 172 // The default algorithm used by Vertex AI for [hyperparameter 173 // tuning](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview) 174 // and [Vertex AI Vizier](https://cloud.google.com/vertex-ai/docs/vizier). 175 StudySpec_ALGORITHM_UNSPECIFIED StudySpec_Algorithm = 0 176 // Simple grid search within the feasible space. To use grid search, 177 // all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`. 178 StudySpec_GRID_SEARCH StudySpec_Algorithm = 2 179 // Simple random search within the feasible space. 180 StudySpec_RANDOM_SEARCH StudySpec_Algorithm = 3 181 ) 182 183 // Enum value maps for StudySpec_Algorithm. 184 var ( 185 StudySpec_Algorithm_name = map[int32]string{ 186 0: "ALGORITHM_UNSPECIFIED", 187 2: "GRID_SEARCH", 188 3: "RANDOM_SEARCH", 189 } 190 StudySpec_Algorithm_value = map[string]int32{ 191 "ALGORITHM_UNSPECIFIED": 0, 192 "GRID_SEARCH": 2, 193 "RANDOM_SEARCH": 3, 194 } 195 ) 196 197 func (x StudySpec_Algorithm) Enum() *StudySpec_Algorithm { 198 p := new(StudySpec_Algorithm) 199 *p = x 200 return p 201 } 202 203 func (x StudySpec_Algorithm) String() string { 204 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 205 } 206 207 func (StudySpec_Algorithm) Descriptor() protoreflect.EnumDescriptor { 208 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[2].Descriptor() 209 } 210 211 func (StudySpec_Algorithm) Type() protoreflect.EnumType { 212 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[2] 213 } 214 215 func (x StudySpec_Algorithm) Number() protoreflect.EnumNumber { 216 return protoreflect.EnumNumber(x) 217 } 218 219 // Deprecated: Use StudySpec_Algorithm.Descriptor instead. 220 func (StudySpec_Algorithm) EnumDescriptor() ([]byte, []int) { 221 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0} 222 } 223 224 // Describes the noise level of the repeated observations. 225 // 226 // "Noisy" means that the repeated observations with the same Trial parameters 227 // may lead to different metric evaluations. 228 type StudySpec_ObservationNoise int32 229 230 const ( 231 // The default noise level chosen by Vertex AI. 232 StudySpec_OBSERVATION_NOISE_UNSPECIFIED StudySpec_ObservationNoise = 0 233 // Vertex AI assumes that the objective function is (nearly) 234 // perfectly reproducible, and will never repeat the same Trial 235 // parameters. 236 StudySpec_LOW StudySpec_ObservationNoise = 1 237 // Vertex AI will estimate the amount of noise in metric 238 // evaluations, it may repeat the same Trial parameters more than once. 239 StudySpec_HIGH StudySpec_ObservationNoise = 2 240 ) 241 242 // Enum value maps for StudySpec_ObservationNoise. 243 var ( 244 StudySpec_ObservationNoise_name = map[int32]string{ 245 0: "OBSERVATION_NOISE_UNSPECIFIED", 246 1: "LOW", 247 2: "HIGH", 248 } 249 StudySpec_ObservationNoise_value = map[string]int32{ 250 "OBSERVATION_NOISE_UNSPECIFIED": 0, 251 "LOW": 1, 252 "HIGH": 2, 253 } 254 ) 255 256 func (x StudySpec_ObservationNoise) Enum() *StudySpec_ObservationNoise { 257 p := new(StudySpec_ObservationNoise) 258 *p = x 259 return p 260 } 261 262 func (x StudySpec_ObservationNoise) String() string { 263 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 264 } 265 266 func (StudySpec_ObservationNoise) Descriptor() protoreflect.EnumDescriptor { 267 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[3].Descriptor() 268 } 269 270 func (StudySpec_ObservationNoise) Type() protoreflect.EnumType { 271 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[3] 272 } 273 274 func (x StudySpec_ObservationNoise) Number() protoreflect.EnumNumber { 275 return protoreflect.EnumNumber(x) 276 } 277 278 // Deprecated: Use StudySpec_ObservationNoise.Descriptor instead. 279 func (StudySpec_ObservationNoise) EnumDescriptor() ([]byte, []int) { 280 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1} 281 } 282 283 // This indicates which measurement to use if/when the service automatically 284 // selects the final measurement from previously reported intermediate 285 // measurements. Choose this based on two considerations: 286 // 287 // A) Do you expect your measurements to monotonically improve? 288 // If so, choose LAST_MEASUREMENT. On the other hand, if you're in a 289 // situation where your system can "over-train" and you expect the 290 // performance to get better for a while but then start declining, 291 // choose BEST_MEASUREMENT. 292 // B) Are your measurements significantly noisy and/or irreproducible? 293 // If so, BEST_MEASUREMENT will tend to be over-optimistic, and it 294 // may be better to choose LAST_MEASUREMENT. 295 // If both or neither of (A) and (B) apply, it doesn't matter which 296 // selection type is chosen. 297 type StudySpec_MeasurementSelectionType int32 298 299 const ( 300 // Will be treated as LAST_MEASUREMENT. 301 StudySpec_MEASUREMENT_SELECTION_TYPE_UNSPECIFIED StudySpec_MeasurementSelectionType = 0 302 // Use the last measurement reported. 303 StudySpec_LAST_MEASUREMENT StudySpec_MeasurementSelectionType = 1 304 // Use the best measurement reported. 305 StudySpec_BEST_MEASUREMENT StudySpec_MeasurementSelectionType = 2 306 ) 307 308 // Enum value maps for StudySpec_MeasurementSelectionType. 309 var ( 310 StudySpec_MeasurementSelectionType_name = map[int32]string{ 311 0: "MEASUREMENT_SELECTION_TYPE_UNSPECIFIED", 312 1: "LAST_MEASUREMENT", 313 2: "BEST_MEASUREMENT", 314 } 315 StudySpec_MeasurementSelectionType_value = map[string]int32{ 316 "MEASUREMENT_SELECTION_TYPE_UNSPECIFIED": 0, 317 "LAST_MEASUREMENT": 1, 318 "BEST_MEASUREMENT": 2, 319 } 320 ) 321 322 func (x StudySpec_MeasurementSelectionType) Enum() *StudySpec_MeasurementSelectionType { 323 p := new(StudySpec_MeasurementSelectionType) 324 *p = x 325 return p 326 } 327 328 func (x StudySpec_MeasurementSelectionType) String() string { 329 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 330 } 331 332 func (StudySpec_MeasurementSelectionType) Descriptor() protoreflect.EnumDescriptor { 333 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[4].Descriptor() 334 } 335 336 func (StudySpec_MeasurementSelectionType) Type() protoreflect.EnumType { 337 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[4] 338 } 339 340 func (x StudySpec_MeasurementSelectionType) Number() protoreflect.EnumNumber { 341 return protoreflect.EnumNumber(x) 342 } 343 344 // Deprecated: Use StudySpec_MeasurementSelectionType.Descriptor instead. 345 func (StudySpec_MeasurementSelectionType) EnumDescriptor() ([]byte, []int) { 346 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 2} 347 } 348 349 // The available types of optimization goals. 350 type StudySpec_MetricSpec_GoalType int32 351 352 const ( 353 // Goal Type will default to maximize. 354 StudySpec_MetricSpec_GOAL_TYPE_UNSPECIFIED StudySpec_MetricSpec_GoalType = 0 355 // Maximize the goal metric. 356 StudySpec_MetricSpec_MAXIMIZE StudySpec_MetricSpec_GoalType = 1 357 // Minimize the goal metric. 358 StudySpec_MetricSpec_MINIMIZE StudySpec_MetricSpec_GoalType = 2 359 ) 360 361 // Enum value maps for StudySpec_MetricSpec_GoalType. 362 var ( 363 StudySpec_MetricSpec_GoalType_name = map[int32]string{ 364 0: "GOAL_TYPE_UNSPECIFIED", 365 1: "MAXIMIZE", 366 2: "MINIMIZE", 367 } 368 StudySpec_MetricSpec_GoalType_value = map[string]int32{ 369 "GOAL_TYPE_UNSPECIFIED": 0, 370 "MAXIMIZE": 1, 371 "MINIMIZE": 2, 372 } 373 ) 374 375 func (x StudySpec_MetricSpec_GoalType) Enum() *StudySpec_MetricSpec_GoalType { 376 p := new(StudySpec_MetricSpec_GoalType) 377 *p = x 378 return p 379 } 380 381 func (x StudySpec_MetricSpec_GoalType) String() string { 382 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 383 } 384 385 func (StudySpec_MetricSpec_GoalType) Descriptor() protoreflect.EnumDescriptor { 386 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[5].Descriptor() 387 } 388 389 func (StudySpec_MetricSpec_GoalType) Type() protoreflect.EnumType { 390 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[5] 391 } 392 393 func (x StudySpec_MetricSpec_GoalType) Number() protoreflect.EnumNumber { 394 return protoreflect.EnumNumber(x) 395 } 396 397 // Deprecated: Use StudySpec_MetricSpec_GoalType.Descriptor instead. 398 func (StudySpec_MetricSpec_GoalType) EnumDescriptor() ([]byte, []int) { 399 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0, 0} 400 } 401 402 // The type of scaling that should be applied to this parameter. 403 type StudySpec_ParameterSpec_ScaleType int32 404 405 const ( 406 // By default, no scaling is applied. 407 StudySpec_ParameterSpec_SCALE_TYPE_UNSPECIFIED StudySpec_ParameterSpec_ScaleType = 0 408 // Scales the feasible space to (0, 1) linearly. 409 StudySpec_ParameterSpec_UNIT_LINEAR_SCALE StudySpec_ParameterSpec_ScaleType = 1 410 // Scales the feasible space logarithmically to (0, 1). The entire 411 // feasible space must be strictly positive. 412 StudySpec_ParameterSpec_UNIT_LOG_SCALE StudySpec_ParameterSpec_ScaleType = 2 413 // Scales the feasible space "reverse" logarithmically to (0, 1). The 414 // result is that values close to the top of the feasible space are spread 415 // out more than points near the bottom. The entire feasible space must be 416 // strictly positive. 417 StudySpec_ParameterSpec_UNIT_REVERSE_LOG_SCALE StudySpec_ParameterSpec_ScaleType = 3 418 ) 419 420 // Enum value maps for StudySpec_ParameterSpec_ScaleType. 421 var ( 422 StudySpec_ParameterSpec_ScaleType_name = map[int32]string{ 423 0: "SCALE_TYPE_UNSPECIFIED", 424 1: "UNIT_LINEAR_SCALE", 425 2: "UNIT_LOG_SCALE", 426 3: "UNIT_REVERSE_LOG_SCALE", 427 } 428 StudySpec_ParameterSpec_ScaleType_value = map[string]int32{ 429 "SCALE_TYPE_UNSPECIFIED": 0, 430 "UNIT_LINEAR_SCALE": 1, 431 "UNIT_LOG_SCALE": 2, 432 "UNIT_REVERSE_LOG_SCALE": 3, 433 } 434 ) 435 436 func (x StudySpec_ParameterSpec_ScaleType) Enum() *StudySpec_ParameterSpec_ScaleType { 437 p := new(StudySpec_ParameterSpec_ScaleType) 438 *p = x 439 return p 440 } 441 442 func (x StudySpec_ParameterSpec_ScaleType) String() string { 443 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 444 } 445 446 func (StudySpec_ParameterSpec_ScaleType) Descriptor() protoreflect.EnumDescriptor { 447 return file_google_cloud_aiplatform_v1_study_proto_enumTypes[6].Descriptor() 448 } 449 450 func (StudySpec_ParameterSpec_ScaleType) Type() protoreflect.EnumType { 451 return &file_google_cloud_aiplatform_v1_study_proto_enumTypes[6] 452 } 453 454 func (x StudySpec_ParameterSpec_ScaleType) Number() protoreflect.EnumNumber { 455 return protoreflect.EnumNumber(x) 456 } 457 458 // Deprecated: Use StudySpec_ParameterSpec_ScaleType.Descriptor instead. 459 func (StudySpec_ParameterSpec_ScaleType) EnumDescriptor() ([]byte, []int) { 460 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 0} 461 } 462 463 // A message representing a Study. 464 type Study struct { 465 state protoimpl.MessageState 466 sizeCache protoimpl.SizeCache 467 unknownFields protoimpl.UnknownFields 468 469 // Output only. The name of a study. The study's globally unique identifier. 470 // Format: `projects/{project}/locations/{location}/studies/{study}` 471 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 472 // Required. Describes the Study, default value is empty string. 473 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 474 // Required. Configuration of the Study. 475 StudySpec *StudySpec `protobuf:"bytes,3,opt,name=study_spec,json=studySpec,proto3" json:"study_spec,omitempty"` 476 // Output only. The detailed state of a Study. 477 State Study_State `protobuf:"varint,4,opt,name=state,proto3,enum=google.cloud.aiplatform.v1.Study_State" json:"state,omitempty"` 478 // Output only. Time at which the study was created. 479 CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` 480 // Output only. A human readable reason why the Study is inactive. 481 // This should be empty if a study is ACTIVE or COMPLETED. 482 InactiveReason string `protobuf:"bytes,6,opt,name=inactive_reason,json=inactiveReason,proto3" json:"inactive_reason,omitempty"` 483 } 484 485 func (x *Study) Reset() { 486 *x = Study{} 487 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[0] 488 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 489 ms.StoreMessageInfo(mi) 490 } 491 492 func (x *Study) String() string { 493 return protoimpl.X.MessageStringOf(x) 494 } 495 496 func (*Study) ProtoMessage() {} 497 498 func (x *Study) ProtoReflect() protoreflect.Message { 499 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[0] 500 if x != nil { 501 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 502 if ms.LoadMessageInfo() == nil { 503 ms.StoreMessageInfo(mi) 504 } 505 return ms 506 } 507 return mi.MessageOf(x) 508 } 509 510 // Deprecated: Use Study.ProtoReflect.Descriptor instead. 511 func (*Study) Descriptor() ([]byte, []int) { 512 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{0} 513 } 514 515 func (x *Study) GetName() string { 516 if x != nil { 517 return x.Name 518 } 519 return "" 520 } 521 522 func (x *Study) GetDisplayName() string { 523 if x != nil { 524 return x.DisplayName 525 } 526 return "" 527 } 528 529 func (x *Study) GetStudySpec() *StudySpec { 530 if x != nil { 531 return x.StudySpec 532 } 533 return nil 534 } 535 536 func (x *Study) GetState() Study_State { 537 if x != nil { 538 return x.State 539 } 540 return Study_STATE_UNSPECIFIED 541 } 542 543 func (x *Study) GetCreateTime() *timestamppb.Timestamp { 544 if x != nil { 545 return x.CreateTime 546 } 547 return nil 548 } 549 550 func (x *Study) GetInactiveReason() string { 551 if x != nil { 552 return x.InactiveReason 553 } 554 return "" 555 } 556 557 // A message representing a Trial. A Trial contains a unique set of Parameters 558 // that has been or will be evaluated, along with the objective metrics got by 559 // running the Trial. 560 type Trial struct { 561 state protoimpl.MessageState 562 sizeCache protoimpl.SizeCache 563 unknownFields protoimpl.UnknownFields 564 565 // Output only. Resource name of the Trial assigned by the service. 566 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 567 // Output only. The identifier of the Trial assigned by the service. 568 Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` 569 // Output only. The detailed state of the Trial. 570 State Trial_State `protobuf:"varint,3,opt,name=state,proto3,enum=google.cloud.aiplatform.v1.Trial_State" json:"state,omitempty"` 571 // Output only. The parameters of the Trial. 572 Parameters []*Trial_Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` 573 // Output only. The final measurement containing the objective value. 574 FinalMeasurement *Measurement `protobuf:"bytes,5,opt,name=final_measurement,json=finalMeasurement,proto3" json:"final_measurement,omitempty"` 575 // Output only. A list of measurements that are strictly lexicographically 576 // ordered by their induced tuples (steps, elapsed_duration). 577 // These are used for early stopping computations. 578 Measurements []*Measurement `protobuf:"bytes,6,rep,name=measurements,proto3" json:"measurements,omitempty"` 579 // Output only. Time when the Trial was started. 580 StartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 581 // Output only. Time when the Trial's status changed to `SUCCEEDED` or 582 // `INFEASIBLE`. 583 EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 584 // Output only. The identifier of the client that originally requested this 585 // Trial. Each client is identified by a unique client_id. When a client asks 586 // for a suggestion, Vertex AI Vizier will assign it a Trial. The client 587 // should evaluate the Trial, complete it, and report back to Vertex AI 588 // Vizier. If suggestion is asked again by same client_id before the Trial is 589 // completed, the same Trial will be returned. Multiple clients with 590 // different client_ids can ask for suggestions simultaneously, each of them 591 // will get their own Trial. 592 ClientId string `protobuf:"bytes,9,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` 593 // Output only. A human readable string describing why the Trial is 594 // infeasible. This is set only if Trial state is `INFEASIBLE`. 595 InfeasibleReason string `protobuf:"bytes,10,opt,name=infeasible_reason,json=infeasibleReason,proto3" json:"infeasible_reason,omitempty"` 596 // Output only. The CustomJob name linked to the Trial. 597 // It's set for a HyperparameterTuningJob's Trial. 598 CustomJob string `protobuf:"bytes,11,opt,name=custom_job,json=customJob,proto3" json:"custom_job,omitempty"` 599 // Output only. URIs for accessing [interactive 600 // shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) 601 // (one URI for each training node). Only available if this trial is part of 602 // a 603 // [HyperparameterTuningJob][google.cloud.aiplatform.v1.HyperparameterTuningJob] 604 // and the job's 605 // [trial_job_spec.enable_web_access][google.cloud.aiplatform.v1.CustomJobSpec.enable_web_access] 606 // field is `true`. 607 // 608 // The keys are names of each node used for the trial; for example, 609 // `workerpool0-0` for the primary node, `workerpool1-0` for the first node in 610 // the second worker pool, and `workerpool1-1` for the second node in the 611 // second worker pool. 612 // 613 // The values are the URIs for each node's interactive shell. 614 WebAccessUris map[string]string `protobuf:"bytes,12,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"` 615 } 616 617 func (x *Trial) Reset() { 618 *x = Trial{} 619 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[1] 620 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 621 ms.StoreMessageInfo(mi) 622 } 623 624 func (x *Trial) String() string { 625 return protoimpl.X.MessageStringOf(x) 626 } 627 628 func (*Trial) ProtoMessage() {} 629 630 func (x *Trial) ProtoReflect() protoreflect.Message { 631 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[1] 632 if x != nil { 633 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 634 if ms.LoadMessageInfo() == nil { 635 ms.StoreMessageInfo(mi) 636 } 637 return ms 638 } 639 return mi.MessageOf(x) 640 } 641 642 // Deprecated: Use Trial.ProtoReflect.Descriptor instead. 643 func (*Trial) Descriptor() ([]byte, []int) { 644 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{1} 645 } 646 647 func (x *Trial) GetName() string { 648 if x != nil { 649 return x.Name 650 } 651 return "" 652 } 653 654 func (x *Trial) GetId() string { 655 if x != nil { 656 return x.Id 657 } 658 return "" 659 } 660 661 func (x *Trial) GetState() Trial_State { 662 if x != nil { 663 return x.State 664 } 665 return Trial_STATE_UNSPECIFIED 666 } 667 668 func (x *Trial) GetParameters() []*Trial_Parameter { 669 if x != nil { 670 return x.Parameters 671 } 672 return nil 673 } 674 675 func (x *Trial) GetFinalMeasurement() *Measurement { 676 if x != nil { 677 return x.FinalMeasurement 678 } 679 return nil 680 } 681 682 func (x *Trial) GetMeasurements() []*Measurement { 683 if x != nil { 684 return x.Measurements 685 } 686 return nil 687 } 688 689 func (x *Trial) GetStartTime() *timestamppb.Timestamp { 690 if x != nil { 691 return x.StartTime 692 } 693 return nil 694 } 695 696 func (x *Trial) GetEndTime() *timestamppb.Timestamp { 697 if x != nil { 698 return x.EndTime 699 } 700 return nil 701 } 702 703 func (x *Trial) GetClientId() string { 704 if x != nil { 705 return x.ClientId 706 } 707 return "" 708 } 709 710 func (x *Trial) GetInfeasibleReason() string { 711 if x != nil { 712 return x.InfeasibleReason 713 } 714 return "" 715 } 716 717 func (x *Trial) GetCustomJob() string { 718 if x != nil { 719 return x.CustomJob 720 } 721 return "" 722 } 723 724 func (x *Trial) GetWebAccessUris() map[string]string { 725 if x != nil { 726 return x.WebAccessUris 727 } 728 return nil 729 } 730 731 type TrialContext struct { 732 state protoimpl.MessageState 733 sizeCache protoimpl.SizeCache 734 unknownFields protoimpl.UnknownFields 735 736 // A human-readable field which can store a description of this context. 737 // This will become part of the resulting Trial's description field. 738 Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` 739 // If/when a Trial is generated or selected from this Context, 740 // its Parameters will match any parameters specified here. 741 // (I.e. if this context specifies parameter name:'a' int_value:3, 742 // then a resulting Trial will have int_value:3 for its parameter named 743 // 'a'.) Note that we first attempt to match existing REQUESTED Trials with 744 // contexts, and if there are no matches, we generate suggestions in the 745 // subspace defined by the parameters specified here. 746 // NOTE: a Context without any Parameters matches the entire feasible search 747 // 748 // space. 749 Parameters []*Trial_Parameter `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"` 750 } 751 752 func (x *TrialContext) Reset() { 753 *x = TrialContext{} 754 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[2] 755 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 756 ms.StoreMessageInfo(mi) 757 } 758 759 func (x *TrialContext) String() string { 760 return protoimpl.X.MessageStringOf(x) 761 } 762 763 func (*TrialContext) ProtoMessage() {} 764 765 func (x *TrialContext) ProtoReflect() protoreflect.Message { 766 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[2] 767 if x != nil { 768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 769 if ms.LoadMessageInfo() == nil { 770 ms.StoreMessageInfo(mi) 771 } 772 return ms 773 } 774 return mi.MessageOf(x) 775 } 776 777 // Deprecated: Use TrialContext.ProtoReflect.Descriptor instead. 778 func (*TrialContext) Descriptor() ([]byte, []int) { 779 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{2} 780 } 781 782 func (x *TrialContext) GetDescription() string { 783 if x != nil { 784 return x.Description 785 } 786 return "" 787 } 788 789 func (x *TrialContext) GetParameters() []*Trial_Parameter { 790 if x != nil { 791 return x.Parameters 792 } 793 return nil 794 } 795 796 // Time-based Constraint for Study 797 type StudyTimeConstraint struct { 798 state protoimpl.MessageState 799 sizeCache protoimpl.SizeCache 800 unknownFields protoimpl.UnknownFields 801 802 // Types that are assignable to Constraint: 803 // 804 // *StudyTimeConstraint_MaxDuration 805 // *StudyTimeConstraint_EndTime 806 Constraint isStudyTimeConstraint_Constraint `protobuf_oneof:"constraint"` 807 } 808 809 func (x *StudyTimeConstraint) Reset() { 810 *x = StudyTimeConstraint{} 811 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[3] 812 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 813 ms.StoreMessageInfo(mi) 814 } 815 816 func (x *StudyTimeConstraint) String() string { 817 return protoimpl.X.MessageStringOf(x) 818 } 819 820 func (*StudyTimeConstraint) ProtoMessage() {} 821 822 func (x *StudyTimeConstraint) ProtoReflect() protoreflect.Message { 823 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[3] 824 if x != nil { 825 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 826 if ms.LoadMessageInfo() == nil { 827 ms.StoreMessageInfo(mi) 828 } 829 return ms 830 } 831 return mi.MessageOf(x) 832 } 833 834 // Deprecated: Use StudyTimeConstraint.ProtoReflect.Descriptor instead. 835 func (*StudyTimeConstraint) Descriptor() ([]byte, []int) { 836 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{3} 837 } 838 839 func (m *StudyTimeConstraint) GetConstraint() isStudyTimeConstraint_Constraint { 840 if m != nil { 841 return m.Constraint 842 } 843 return nil 844 } 845 846 func (x *StudyTimeConstraint) GetMaxDuration() *durationpb.Duration { 847 if x, ok := x.GetConstraint().(*StudyTimeConstraint_MaxDuration); ok { 848 return x.MaxDuration 849 } 850 return nil 851 } 852 853 func (x *StudyTimeConstraint) GetEndTime() *timestamppb.Timestamp { 854 if x, ok := x.GetConstraint().(*StudyTimeConstraint_EndTime); ok { 855 return x.EndTime 856 } 857 return nil 858 } 859 860 type isStudyTimeConstraint_Constraint interface { 861 isStudyTimeConstraint_Constraint() 862 } 863 864 type StudyTimeConstraint_MaxDuration struct { 865 // Counts the wallclock time passed since the creation of this Study. 866 MaxDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=max_duration,json=maxDuration,proto3,oneof"` 867 } 868 869 type StudyTimeConstraint_EndTime struct { 870 // Compares the wallclock time to this time. Must use UTC timezone. 871 EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3,oneof"` 872 } 873 874 func (*StudyTimeConstraint_MaxDuration) isStudyTimeConstraint_Constraint() {} 875 876 func (*StudyTimeConstraint_EndTime) isStudyTimeConstraint_Constraint() {} 877 878 // Represents specification of a Study. 879 type StudySpec struct { 880 state protoimpl.MessageState 881 sizeCache protoimpl.SizeCache 882 unknownFields protoimpl.UnknownFields 883 884 // Types that are assignable to AutomatedStoppingSpec: 885 // 886 // *StudySpec_DecayCurveStoppingSpec 887 // *StudySpec_MedianAutomatedStoppingSpec_ 888 // *StudySpec_ConvexAutomatedStoppingSpec_ 889 AutomatedStoppingSpec isStudySpec_AutomatedStoppingSpec `protobuf_oneof:"automated_stopping_spec"` 890 // Required. Metric specs for the Study. 891 Metrics []*StudySpec_MetricSpec `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"` 892 // Required. The set of parameters to tune. 893 Parameters []*StudySpec_ParameterSpec `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"` 894 // The search algorithm specified for the Study. 895 Algorithm StudySpec_Algorithm `protobuf:"varint,3,opt,name=algorithm,proto3,enum=google.cloud.aiplatform.v1.StudySpec_Algorithm" json:"algorithm,omitempty"` 896 // The observation noise level of the study. 897 // Currently only supported by the Vertex AI Vizier service. Not supported by 898 // HyperparameterTuningJob or TrainingPipeline. 899 ObservationNoise StudySpec_ObservationNoise `protobuf:"varint,6,opt,name=observation_noise,json=observationNoise,proto3,enum=google.cloud.aiplatform.v1.StudySpec_ObservationNoise" json:"observation_noise,omitempty"` 900 // Describe which measurement selection type will be used 901 MeasurementSelectionType StudySpec_MeasurementSelectionType `protobuf:"varint,7,opt,name=measurement_selection_type,json=measurementSelectionType,proto3,enum=google.cloud.aiplatform.v1.StudySpec_MeasurementSelectionType" json:"measurement_selection_type,omitempty"` 902 // Conditions for automated stopping of a Study. Enable automated stopping by 903 // configuring at least one condition. 904 StudyStoppingConfig *StudySpec_StudyStoppingConfig `protobuf:"bytes,11,opt,name=study_stopping_config,json=studyStoppingConfig,proto3,oneof" json:"study_stopping_config,omitempty"` 905 } 906 907 func (x *StudySpec) Reset() { 908 *x = StudySpec{} 909 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[4] 910 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 911 ms.StoreMessageInfo(mi) 912 } 913 914 func (x *StudySpec) String() string { 915 return protoimpl.X.MessageStringOf(x) 916 } 917 918 func (*StudySpec) ProtoMessage() {} 919 920 func (x *StudySpec) ProtoReflect() protoreflect.Message { 921 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[4] 922 if x != nil { 923 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 924 if ms.LoadMessageInfo() == nil { 925 ms.StoreMessageInfo(mi) 926 } 927 return ms 928 } 929 return mi.MessageOf(x) 930 } 931 932 // Deprecated: Use StudySpec.ProtoReflect.Descriptor instead. 933 func (*StudySpec) Descriptor() ([]byte, []int) { 934 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4} 935 } 936 937 func (m *StudySpec) GetAutomatedStoppingSpec() isStudySpec_AutomatedStoppingSpec { 938 if m != nil { 939 return m.AutomatedStoppingSpec 940 } 941 return nil 942 } 943 944 func (x *StudySpec) GetDecayCurveStoppingSpec() *StudySpec_DecayCurveAutomatedStoppingSpec { 945 if x, ok := x.GetAutomatedStoppingSpec().(*StudySpec_DecayCurveStoppingSpec); ok { 946 return x.DecayCurveStoppingSpec 947 } 948 return nil 949 } 950 951 func (x *StudySpec) GetMedianAutomatedStoppingSpec() *StudySpec_MedianAutomatedStoppingSpec { 952 if x, ok := x.GetAutomatedStoppingSpec().(*StudySpec_MedianAutomatedStoppingSpec_); ok { 953 return x.MedianAutomatedStoppingSpec 954 } 955 return nil 956 } 957 958 func (x *StudySpec) GetConvexAutomatedStoppingSpec() *StudySpec_ConvexAutomatedStoppingSpec { 959 if x, ok := x.GetAutomatedStoppingSpec().(*StudySpec_ConvexAutomatedStoppingSpec_); ok { 960 return x.ConvexAutomatedStoppingSpec 961 } 962 return nil 963 } 964 965 func (x *StudySpec) GetMetrics() []*StudySpec_MetricSpec { 966 if x != nil { 967 return x.Metrics 968 } 969 return nil 970 } 971 972 func (x *StudySpec) GetParameters() []*StudySpec_ParameterSpec { 973 if x != nil { 974 return x.Parameters 975 } 976 return nil 977 } 978 979 func (x *StudySpec) GetAlgorithm() StudySpec_Algorithm { 980 if x != nil { 981 return x.Algorithm 982 } 983 return StudySpec_ALGORITHM_UNSPECIFIED 984 } 985 986 func (x *StudySpec) GetObservationNoise() StudySpec_ObservationNoise { 987 if x != nil { 988 return x.ObservationNoise 989 } 990 return StudySpec_OBSERVATION_NOISE_UNSPECIFIED 991 } 992 993 func (x *StudySpec) GetMeasurementSelectionType() StudySpec_MeasurementSelectionType { 994 if x != nil { 995 return x.MeasurementSelectionType 996 } 997 return StudySpec_MEASUREMENT_SELECTION_TYPE_UNSPECIFIED 998 } 999 1000 func (x *StudySpec) GetStudyStoppingConfig() *StudySpec_StudyStoppingConfig { 1001 if x != nil { 1002 return x.StudyStoppingConfig 1003 } 1004 return nil 1005 } 1006 1007 type isStudySpec_AutomatedStoppingSpec interface { 1008 isStudySpec_AutomatedStoppingSpec() 1009 } 1010 1011 type StudySpec_DecayCurveStoppingSpec struct { 1012 // The automated early stopping spec using decay curve rule. 1013 DecayCurveStoppingSpec *StudySpec_DecayCurveAutomatedStoppingSpec `protobuf:"bytes,4,opt,name=decay_curve_stopping_spec,json=decayCurveStoppingSpec,proto3,oneof"` 1014 } 1015 1016 type StudySpec_MedianAutomatedStoppingSpec_ struct { 1017 // The automated early stopping spec using median rule. 1018 MedianAutomatedStoppingSpec *StudySpec_MedianAutomatedStoppingSpec `protobuf:"bytes,5,opt,name=median_automated_stopping_spec,json=medianAutomatedStoppingSpec,proto3,oneof"` 1019 } 1020 1021 type StudySpec_ConvexAutomatedStoppingSpec_ struct { 1022 // The automated early stopping spec using convex stopping rule. 1023 ConvexAutomatedStoppingSpec *StudySpec_ConvexAutomatedStoppingSpec `protobuf:"bytes,9,opt,name=convex_automated_stopping_spec,json=convexAutomatedStoppingSpec,proto3,oneof"` 1024 } 1025 1026 func (*StudySpec_DecayCurveStoppingSpec) isStudySpec_AutomatedStoppingSpec() {} 1027 1028 func (*StudySpec_MedianAutomatedStoppingSpec_) isStudySpec_AutomatedStoppingSpec() {} 1029 1030 func (*StudySpec_ConvexAutomatedStoppingSpec_) isStudySpec_AutomatedStoppingSpec() {} 1031 1032 // A message representing a Measurement of a Trial. A Measurement contains 1033 // the Metrics got by executing a Trial using suggested hyperparameter 1034 // values. 1035 type Measurement struct { 1036 state protoimpl.MessageState 1037 sizeCache protoimpl.SizeCache 1038 unknownFields protoimpl.UnknownFields 1039 1040 // Output only. Time that the Trial has been running at the point of this 1041 // Measurement. 1042 ElapsedDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=elapsed_duration,json=elapsedDuration,proto3" json:"elapsed_duration,omitempty"` 1043 // Output only. The number of steps the machine learning model has been 1044 // trained for. Must be non-negative. 1045 StepCount int64 `protobuf:"varint,2,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 1046 // Output only. A list of metrics got by evaluating the objective functions 1047 // using suggested Parameter values. 1048 Metrics []*Measurement_Metric `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"` 1049 } 1050 1051 func (x *Measurement) Reset() { 1052 *x = Measurement{} 1053 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[5] 1054 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1055 ms.StoreMessageInfo(mi) 1056 } 1057 1058 func (x *Measurement) String() string { 1059 return protoimpl.X.MessageStringOf(x) 1060 } 1061 1062 func (*Measurement) ProtoMessage() {} 1063 1064 func (x *Measurement) ProtoReflect() protoreflect.Message { 1065 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[5] 1066 if x != nil { 1067 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1068 if ms.LoadMessageInfo() == nil { 1069 ms.StoreMessageInfo(mi) 1070 } 1071 return ms 1072 } 1073 return mi.MessageOf(x) 1074 } 1075 1076 // Deprecated: Use Measurement.ProtoReflect.Descriptor instead. 1077 func (*Measurement) Descriptor() ([]byte, []int) { 1078 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{5} 1079 } 1080 1081 func (x *Measurement) GetElapsedDuration() *durationpb.Duration { 1082 if x != nil { 1083 return x.ElapsedDuration 1084 } 1085 return nil 1086 } 1087 1088 func (x *Measurement) GetStepCount() int64 { 1089 if x != nil { 1090 return x.StepCount 1091 } 1092 return 0 1093 } 1094 1095 func (x *Measurement) GetMetrics() []*Measurement_Metric { 1096 if x != nil { 1097 return x.Metrics 1098 } 1099 return nil 1100 } 1101 1102 // A message representing a parameter to be tuned. 1103 type Trial_Parameter struct { 1104 state protoimpl.MessageState 1105 sizeCache protoimpl.SizeCache 1106 unknownFields protoimpl.UnknownFields 1107 1108 // Output only. The ID of the parameter. The parameter should be defined in 1109 // [StudySpec's 1110 // Parameters][google.cloud.aiplatform.v1.StudySpec.parameters]. 1111 ParameterId string `protobuf:"bytes,1,opt,name=parameter_id,json=parameterId,proto3" json:"parameter_id,omitempty"` 1112 // Output only. The value of the parameter. 1113 // `number_value` will be set if a parameter defined in StudySpec is 1114 // in type 'INTEGER', 'DOUBLE' or 'DISCRETE'. 1115 // `string_value` will be set if a parameter defined in StudySpec is 1116 // in type 'CATEGORICAL'. 1117 Value *structpb.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 1118 } 1119 1120 func (x *Trial_Parameter) Reset() { 1121 *x = Trial_Parameter{} 1122 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[6] 1123 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1124 ms.StoreMessageInfo(mi) 1125 } 1126 1127 func (x *Trial_Parameter) String() string { 1128 return protoimpl.X.MessageStringOf(x) 1129 } 1130 1131 func (*Trial_Parameter) ProtoMessage() {} 1132 1133 func (x *Trial_Parameter) ProtoReflect() protoreflect.Message { 1134 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[6] 1135 if x != nil { 1136 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1137 if ms.LoadMessageInfo() == nil { 1138 ms.StoreMessageInfo(mi) 1139 } 1140 return ms 1141 } 1142 return mi.MessageOf(x) 1143 } 1144 1145 // Deprecated: Use Trial_Parameter.ProtoReflect.Descriptor instead. 1146 func (*Trial_Parameter) Descriptor() ([]byte, []int) { 1147 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{1, 0} 1148 } 1149 1150 func (x *Trial_Parameter) GetParameterId() string { 1151 if x != nil { 1152 return x.ParameterId 1153 } 1154 return "" 1155 } 1156 1157 func (x *Trial_Parameter) GetValue() *structpb.Value { 1158 if x != nil { 1159 return x.Value 1160 } 1161 return nil 1162 } 1163 1164 // Represents a metric to optimize. 1165 type StudySpec_MetricSpec struct { 1166 state protoimpl.MessageState 1167 sizeCache protoimpl.SizeCache 1168 unknownFields protoimpl.UnknownFields 1169 1170 // Required. The ID of the metric. Must not contain whitespaces and must be 1171 // unique amongst all MetricSpecs. 1172 MetricId string `protobuf:"bytes,1,opt,name=metric_id,json=metricId,proto3" json:"metric_id,omitempty"` 1173 // Required. The optimization goal of the metric. 1174 Goal StudySpec_MetricSpec_GoalType `protobuf:"varint,2,opt,name=goal,proto3,enum=google.cloud.aiplatform.v1.StudySpec_MetricSpec_GoalType" json:"goal,omitempty"` 1175 // Used for safe search. In the case, the metric will be a safety 1176 // metric. You must provide a separate metric for objective metric. 1177 SafetyConfig *StudySpec_MetricSpec_SafetyMetricConfig `protobuf:"bytes,3,opt,name=safety_config,json=safetyConfig,proto3,oneof" json:"safety_config,omitempty"` 1178 } 1179 1180 func (x *StudySpec_MetricSpec) Reset() { 1181 *x = StudySpec_MetricSpec{} 1182 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[8] 1183 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1184 ms.StoreMessageInfo(mi) 1185 } 1186 1187 func (x *StudySpec_MetricSpec) String() string { 1188 return protoimpl.X.MessageStringOf(x) 1189 } 1190 1191 func (*StudySpec_MetricSpec) ProtoMessage() {} 1192 1193 func (x *StudySpec_MetricSpec) ProtoReflect() protoreflect.Message { 1194 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[8] 1195 if x != nil { 1196 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1197 if ms.LoadMessageInfo() == nil { 1198 ms.StoreMessageInfo(mi) 1199 } 1200 return ms 1201 } 1202 return mi.MessageOf(x) 1203 } 1204 1205 // Deprecated: Use StudySpec_MetricSpec.ProtoReflect.Descriptor instead. 1206 func (*StudySpec_MetricSpec) Descriptor() ([]byte, []int) { 1207 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0} 1208 } 1209 1210 func (x *StudySpec_MetricSpec) GetMetricId() string { 1211 if x != nil { 1212 return x.MetricId 1213 } 1214 return "" 1215 } 1216 1217 func (x *StudySpec_MetricSpec) GetGoal() StudySpec_MetricSpec_GoalType { 1218 if x != nil { 1219 return x.Goal 1220 } 1221 return StudySpec_MetricSpec_GOAL_TYPE_UNSPECIFIED 1222 } 1223 1224 func (x *StudySpec_MetricSpec) GetSafetyConfig() *StudySpec_MetricSpec_SafetyMetricConfig { 1225 if x != nil { 1226 return x.SafetyConfig 1227 } 1228 return nil 1229 } 1230 1231 // Represents a single parameter to optimize. 1232 type StudySpec_ParameterSpec struct { 1233 state protoimpl.MessageState 1234 sizeCache protoimpl.SizeCache 1235 unknownFields protoimpl.UnknownFields 1236 1237 // Types that are assignable to ParameterValueSpec: 1238 // 1239 // *StudySpec_ParameterSpec_DoubleValueSpec_ 1240 // *StudySpec_ParameterSpec_IntegerValueSpec_ 1241 // *StudySpec_ParameterSpec_CategoricalValueSpec_ 1242 // *StudySpec_ParameterSpec_DiscreteValueSpec_ 1243 ParameterValueSpec isStudySpec_ParameterSpec_ParameterValueSpec `protobuf_oneof:"parameter_value_spec"` 1244 // Required. The ID of the parameter. Must not contain whitespaces and must 1245 // be unique amongst all ParameterSpecs. 1246 ParameterId string `protobuf:"bytes,1,opt,name=parameter_id,json=parameterId,proto3" json:"parameter_id,omitempty"` 1247 // How the parameter should be scaled. 1248 // Leave unset for `CATEGORICAL` parameters. 1249 ScaleType StudySpec_ParameterSpec_ScaleType `protobuf:"varint,6,opt,name=scale_type,json=scaleType,proto3,enum=google.cloud.aiplatform.v1.StudySpec_ParameterSpec_ScaleType" json:"scale_type,omitempty"` 1250 // A conditional parameter node is active if the parameter's value matches 1251 // the conditional node's parent_value_condition. 1252 // 1253 // If two items in conditional_parameter_specs have the same name, they 1254 // must have disjoint parent_value_condition. 1255 ConditionalParameterSpecs []*StudySpec_ParameterSpec_ConditionalParameterSpec `protobuf:"bytes,10,rep,name=conditional_parameter_specs,json=conditionalParameterSpecs,proto3" json:"conditional_parameter_specs,omitempty"` 1256 } 1257 1258 func (x *StudySpec_ParameterSpec) Reset() { 1259 *x = StudySpec_ParameterSpec{} 1260 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[9] 1261 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1262 ms.StoreMessageInfo(mi) 1263 } 1264 1265 func (x *StudySpec_ParameterSpec) String() string { 1266 return protoimpl.X.MessageStringOf(x) 1267 } 1268 1269 func (*StudySpec_ParameterSpec) ProtoMessage() {} 1270 1271 func (x *StudySpec_ParameterSpec) ProtoReflect() protoreflect.Message { 1272 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[9] 1273 if x != nil { 1274 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1275 if ms.LoadMessageInfo() == nil { 1276 ms.StoreMessageInfo(mi) 1277 } 1278 return ms 1279 } 1280 return mi.MessageOf(x) 1281 } 1282 1283 // Deprecated: Use StudySpec_ParameterSpec.ProtoReflect.Descriptor instead. 1284 func (*StudySpec_ParameterSpec) Descriptor() ([]byte, []int) { 1285 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1} 1286 } 1287 1288 func (m *StudySpec_ParameterSpec) GetParameterValueSpec() isStudySpec_ParameterSpec_ParameterValueSpec { 1289 if m != nil { 1290 return m.ParameterValueSpec 1291 } 1292 return nil 1293 } 1294 1295 func (x *StudySpec_ParameterSpec) GetDoubleValueSpec() *StudySpec_ParameterSpec_DoubleValueSpec { 1296 if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_DoubleValueSpec_); ok { 1297 return x.DoubleValueSpec 1298 } 1299 return nil 1300 } 1301 1302 func (x *StudySpec_ParameterSpec) GetIntegerValueSpec() *StudySpec_ParameterSpec_IntegerValueSpec { 1303 if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_IntegerValueSpec_); ok { 1304 return x.IntegerValueSpec 1305 } 1306 return nil 1307 } 1308 1309 func (x *StudySpec_ParameterSpec) GetCategoricalValueSpec() *StudySpec_ParameterSpec_CategoricalValueSpec { 1310 if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_CategoricalValueSpec_); ok { 1311 return x.CategoricalValueSpec 1312 } 1313 return nil 1314 } 1315 1316 func (x *StudySpec_ParameterSpec) GetDiscreteValueSpec() *StudySpec_ParameterSpec_DiscreteValueSpec { 1317 if x, ok := x.GetParameterValueSpec().(*StudySpec_ParameterSpec_DiscreteValueSpec_); ok { 1318 return x.DiscreteValueSpec 1319 } 1320 return nil 1321 } 1322 1323 func (x *StudySpec_ParameterSpec) GetParameterId() string { 1324 if x != nil { 1325 return x.ParameterId 1326 } 1327 return "" 1328 } 1329 1330 func (x *StudySpec_ParameterSpec) GetScaleType() StudySpec_ParameterSpec_ScaleType { 1331 if x != nil { 1332 return x.ScaleType 1333 } 1334 return StudySpec_ParameterSpec_SCALE_TYPE_UNSPECIFIED 1335 } 1336 1337 func (x *StudySpec_ParameterSpec) GetConditionalParameterSpecs() []*StudySpec_ParameterSpec_ConditionalParameterSpec { 1338 if x != nil { 1339 return x.ConditionalParameterSpecs 1340 } 1341 return nil 1342 } 1343 1344 type isStudySpec_ParameterSpec_ParameterValueSpec interface { 1345 isStudySpec_ParameterSpec_ParameterValueSpec() 1346 } 1347 1348 type StudySpec_ParameterSpec_DoubleValueSpec_ struct { 1349 // The value spec for a 'DOUBLE' parameter. 1350 DoubleValueSpec *StudySpec_ParameterSpec_DoubleValueSpec `protobuf:"bytes,2,opt,name=double_value_spec,json=doubleValueSpec,proto3,oneof"` 1351 } 1352 1353 type StudySpec_ParameterSpec_IntegerValueSpec_ struct { 1354 // The value spec for an 'INTEGER' parameter. 1355 IntegerValueSpec *StudySpec_ParameterSpec_IntegerValueSpec `protobuf:"bytes,3,opt,name=integer_value_spec,json=integerValueSpec,proto3,oneof"` 1356 } 1357 1358 type StudySpec_ParameterSpec_CategoricalValueSpec_ struct { 1359 // The value spec for a 'CATEGORICAL' parameter. 1360 CategoricalValueSpec *StudySpec_ParameterSpec_CategoricalValueSpec `protobuf:"bytes,4,opt,name=categorical_value_spec,json=categoricalValueSpec,proto3,oneof"` 1361 } 1362 1363 type StudySpec_ParameterSpec_DiscreteValueSpec_ struct { 1364 // The value spec for a 'DISCRETE' parameter. 1365 DiscreteValueSpec *StudySpec_ParameterSpec_DiscreteValueSpec `protobuf:"bytes,5,opt,name=discrete_value_spec,json=discreteValueSpec,proto3,oneof"` 1366 } 1367 1368 func (*StudySpec_ParameterSpec_DoubleValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {} 1369 1370 func (*StudySpec_ParameterSpec_IntegerValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {} 1371 1372 func (*StudySpec_ParameterSpec_CategoricalValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() { 1373 } 1374 1375 func (*StudySpec_ParameterSpec_DiscreteValueSpec_) isStudySpec_ParameterSpec_ParameterValueSpec() {} 1376 1377 // The decay curve automated stopping rule builds a Gaussian Process 1378 // Regressor to predict the final objective value of a Trial based on the 1379 // already completed Trials and the intermediate measurements of the current 1380 // Trial. Early stopping is requested for the current Trial if there is very 1381 // low probability to exceed the optimal value found so far. 1382 type StudySpec_DecayCurveAutomatedStoppingSpec struct { 1383 state protoimpl.MessageState 1384 sizeCache protoimpl.SizeCache 1385 unknownFields protoimpl.UnknownFields 1386 1387 // True if 1388 // [Measurement.elapsed_duration][google.cloud.aiplatform.v1.Measurement.elapsed_duration] 1389 // is used as the x-axis of each Trials Decay Curve. Otherwise, 1390 // [Measurement.step_count][google.cloud.aiplatform.v1.Measurement.step_count] 1391 // will be used as the x-axis. 1392 UseElapsedDuration bool `protobuf:"varint,1,opt,name=use_elapsed_duration,json=useElapsedDuration,proto3" json:"use_elapsed_duration,omitempty"` 1393 } 1394 1395 func (x *StudySpec_DecayCurveAutomatedStoppingSpec) Reset() { 1396 *x = StudySpec_DecayCurveAutomatedStoppingSpec{} 1397 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[10] 1398 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1399 ms.StoreMessageInfo(mi) 1400 } 1401 1402 func (x *StudySpec_DecayCurveAutomatedStoppingSpec) String() string { 1403 return protoimpl.X.MessageStringOf(x) 1404 } 1405 1406 func (*StudySpec_DecayCurveAutomatedStoppingSpec) ProtoMessage() {} 1407 1408 func (x *StudySpec_DecayCurveAutomatedStoppingSpec) ProtoReflect() protoreflect.Message { 1409 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[10] 1410 if x != nil { 1411 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1412 if ms.LoadMessageInfo() == nil { 1413 ms.StoreMessageInfo(mi) 1414 } 1415 return ms 1416 } 1417 return mi.MessageOf(x) 1418 } 1419 1420 // Deprecated: Use StudySpec_DecayCurveAutomatedStoppingSpec.ProtoReflect.Descriptor instead. 1421 func (*StudySpec_DecayCurveAutomatedStoppingSpec) Descriptor() ([]byte, []int) { 1422 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 2} 1423 } 1424 1425 func (x *StudySpec_DecayCurveAutomatedStoppingSpec) GetUseElapsedDuration() bool { 1426 if x != nil { 1427 return x.UseElapsedDuration 1428 } 1429 return false 1430 } 1431 1432 // The median automated stopping rule stops a pending Trial if the Trial's 1433 // best objective_value is strictly below the median 'performance' of all 1434 // completed Trials reported up to the Trial's last measurement. 1435 // Currently, 'performance' refers to the running average of the objective 1436 // values reported by the Trial in each measurement. 1437 type StudySpec_MedianAutomatedStoppingSpec struct { 1438 state protoimpl.MessageState 1439 sizeCache protoimpl.SizeCache 1440 unknownFields protoimpl.UnknownFields 1441 1442 // True if median automated stopping rule applies on 1443 // [Measurement.elapsed_duration][google.cloud.aiplatform.v1.Measurement.elapsed_duration]. 1444 // It means that elapsed_duration field of latest measurement of current 1445 // Trial is used to compute median objective value for each completed 1446 // Trials. 1447 UseElapsedDuration bool `protobuf:"varint,1,opt,name=use_elapsed_duration,json=useElapsedDuration,proto3" json:"use_elapsed_duration,omitempty"` 1448 } 1449 1450 func (x *StudySpec_MedianAutomatedStoppingSpec) Reset() { 1451 *x = StudySpec_MedianAutomatedStoppingSpec{} 1452 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[11] 1453 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1454 ms.StoreMessageInfo(mi) 1455 } 1456 1457 func (x *StudySpec_MedianAutomatedStoppingSpec) String() string { 1458 return protoimpl.X.MessageStringOf(x) 1459 } 1460 1461 func (*StudySpec_MedianAutomatedStoppingSpec) ProtoMessage() {} 1462 1463 func (x *StudySpec_MedianAutomatedStoppingSpec) ProtoReflect() protoreflect.Message { 1464 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[11] 1465 if x != nil { 1466 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1467 if ms.LoadMessageInfo() == nil { 1468 ms.StoreMessageInfo(mi) 1469 } 1470 return ms 1471 } 1472 return mi.MessageOf(x) 1473 } 1474 1475 // Deprecated: Use StudySpec_MedianAutomatedStoppingSpec.ProtoReflect.Descriptor instead. 1476 func (*StudySpec_MedianAutomatedStoppingSpec) Descriptor() ([]byte, []int) { 1477 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 3} 1478 } 1479 1480 func (x *StudySpec_MedianAutomatedStoppingSpec) GetUseElapsedDuration() bool { 1481 if x != nil { 1482 return x.UseElapsedDuration 1483 } 1484 return false 1485 } 1486 1487 // Configuration for ConvexAutomatedStoppingSpec. 1488 // When there are enough completed trials (configured by 1489 // min_measurement_count), for pending trials with enough measurements and 1490 // steps, the policy first computes an overestimate of the objective value at 1491 // max_num_steps according to the slope of the incomplete objective value 1492 // curve. No prediction can be made if the curve is completely flat. If the 1493 // overestimation is worse than the best objective value of the completed 1494 // trials, this pending trial will be early-stopped, but a last measurement 1495 // will be added to the pending trial with max_num_steps and predicted 1496 // objective value from the autoregression model. 1497 type StudySpec_ConvexAutomatedStoppingSpec struct { 1498 state protoimpl.MessageState 1499 sizeCache protoimpl.SizeCache 1500 unknownFields protoimpl.UnknownFields 1501 1502 // Steps used in predicting the final objective for early stopped trials. In 1503 // general, it's set to be the same as the defined steps in training / 1504 // tuning. If not defined, it will learn it from the completed trials. When 1505 // use_steps is false, this field is set to the maximum elapsed seconds. 1506 MaxStepCount int64 `protobuf:"varint,1,opt,name=max_step_count,json=maxStepCount,proto3" json:"max_step_count,omitempty"` 1507 // Minimum number of steps for a trial to complete. Trials which do not have 1508 // a measurement with step_count > min_step_count won't be considered for 1509 // early stopping. It's ok to set it to 0, and a trial can be early stopped 1510 // at any stage. By default, min_step_count is set to be one-tenth of the 1511 // max_step_count. 1512 // When use_elapsed_duration is true, this field is set to the minimum 1513 // elapsed seconds. 1514 MinStepCount int64 `protobuf:"varint,2,opt,name=min_step_count,json=minStepCount,proto3" json:"min_step_count,omitempty"` 1515 // The minimal number of measurements in a Trial. Early-stopping checks 1516 // will not trigger if less than min_measurement_count+1 completed trials or 1517 // pending trials with less than min_measurement_count measurements. If not 1518 // defined, the default value is 5. 1519 MinMeasurementCount int64 `protobuf:"varint,3,opt,name=min_measurement_count,json=minMeasurementCount,proto3" json:"min_measurement_count,omitempty"` 1520 // The hyper-parameter name used in the tuning job that stands for learning 1521 // rate. Leave it blank if learning rate is not in a parameter in tuning. 1522 // The learning_rate is used to estimate the objective value of the ongoing 1523 // trial. 1524 LearningRateParameterName string `protobuf:"bytes,4,opt,name=learning_rate_parameter_name,json=learningRateParameterName,proto3" json:"learning_rate_parameter_name,omitempty"` 1525 // This bool determines whether or not the rule is applied based on 1526 // elapsed_secs or steps. If use_elapsed_duration==false, the early stopping 1527 // decision is made according to the predicted objective values according to 1528 // the target steps. If use_elapsed_duration==true, elapsed_secs is used 1529 // instead of steps. Also, in this case, the parameters max_num_steps and 1530 // min_num_steps are overloaded to contain max_elapsed_seconds and 1531 // min_elapsed_seconds. 1532 UseElapsedDuration bool `protobuf:"varint,5,opt,name=use_elapsed_duration,json=useElapsedDuration,proto3" json:"use_elapsed_duration,omitempty"` 1533 // ConvexAutomatedStoppingSpec by default only updates the trials that needs 1534 // to be early stopped using a newly trained auto-regressive model. When 1535 // this flag is set to True, all stopped trials from the beginning are 1536 // potentially updated in terms of their `final_measurement`. Also, note 1537 // that the training logic of autoregressive models is different in this 1538 // case. Enabling this option has shown better results and this may be the 1539 // default option in the future. 1540 UpdateAllStoppedTrials *bool `protobuf:"varint,6,opt,name=update_all_stopped_trials,json=updateAllStoppedTrials,proto3,oneof" json:"update_all_stopped_trials,omitempty"` 1541 } 1542 1543 func (x *StudySpec_ConvexAutomatedStoppingSpec) Reset() { 1544 *x = StudySpec_ConvexAutomatedStoppingSpec{} 1545 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[12] 1546 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1547 ms.StoreMessageInfo(mi) 1548 } 1549 1550 func (x *StudySpec_ConvexAutomatedStoppingSpec) String() string { 1551 return protoimpl.X.MessageStringOf(x) 1552 } 1553 1554 func (*StudySpec_ConvexAutomatedStoppingSpec) ProtoMessage() {} 1555 1556 func (x *StudySpec_ConvexAutomatedStoppingSpec) ProtoReflect() protoreflect.Message { 1557 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[12] 1558 if x != nil { 1559 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1560 if ms.LoadMessageInfo() == nil { 1561 ms.StoreMessageInfo(mi) 1562 } 1563 return ms 1564 } 1565 return mi.MessageOf(x) 1566 } 1567 1568 // Deprecated: Use StudySpec_ConvexAutomatedStoppingSpec.ProtoReflect.Descriptor instead. 1569 func (*StudySpec_ConvexAutomatedStoppingSpec) Descriptor() ([]byte, []int) { 1570 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 4} 1571 } 1572 1573 func (x *StudySpec_ConvexAutomatedStoppingSpec) GetMaxStepCount() int64 { 1574 if x != nil { 1575 return x.MaxStepCount 1576 } 1577 return 0 1578 } 1579 1580 func (x *StudySpec_ConvexAutomatedStoppingSpec) GetMinStepCount() int64 { 1581 if x != nil { 1582 return x.MinStepCount 1583 } 1584 return 0 1585 } 1586 1587 func (x *StudySpec_ConvexAutomatedStoppingSpec) GetMinMeasurementCount() int64 { 1588 if x != nil { 1589 return x.MinMeasurementCount 1590 } 1591 return 0 1592 } 1593 1594 func (x *StudySpec_ConvexAutomatedStoppingSpec) GetLearningRateParameterName() string { 1595 if x != nil { 1596 return x.LearningRateParameterName 1597 } 1598 return "" 1599 } 1600 1601 func (x *StudySpec_ConvexAutomatedStoppingSpec) GetUseElapsedDuration() bool { 1602 if x != nil { 1603 return x.UseElapsedDuration 1604 } 1605 return false 1606 } 1607 1608 func (x *StudySpec_ConvexAutomatedStoppingSpec) GetUpdateAllStoppedTrials() bool { 1609 if x != nil && x.UpdateAllStoppedTrials != nil { 1610 return *x.UpdateAllStoppedTrials 1611 } 1612 return false 1613 } 1614 1615 // The configuration (stopping conditions) for automated stopping of a Study. 1616 // Conditions include trial budgets, time budgets, and convergence detection. 1617 type StudySpec_StudyStoppingConfig struct { 1618 state protoimpl.MessageState 1619 sizeCache protoimpl.SizeCache 1620 unknownFields protoimpl.UnknownFields 1621 1622 // If true, a Study enters STOPPING_ASAP whenever it would normally enters 1623 // STOPPING state. 1624 // 1625 // The bottom line is: set to true if you want to interrupt on-going 1626 // evaluations of Trials as soon as the study stopping condition is met. 1627 // (Please see Study.State documentation for the source of truth). 1628 ShouldStopAsap *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=should_stop_asap,json=shouldStopAsap,proto3" json:"should_stop_asap,omitempty"` 1629 // Each "stopping rule" in this proto specifies an "if" condition. Before 1630 // Vizier would generate a new suggestion, it first checks each specified 1631 // stopping rule, from top to bottom in this list. 1632 // Note that the first few rules (e.g. minimum_runtime_constraint, 1633 // min_num_trials) will prevent other stopping rules from being evaluated 1634 // until they are met. For example, setting `min_num_trials=5` and 1635 // `always_stop_after= 1 hour` means that the Study will ONLY stop after it 1636 // has 5 COMPLETED trials, even if more than an hour has passed since its 1637 // creation. It follows the first applicable rule (whose "if" condition is 1638 // satisfied) to make a stopping decision. If none of the specified rules 1639 // are applicable, then Vizier decides that the study should not stop. 1640 // If Vizier decides that the study should stop, the study enters 1641 // STOPPING state (or STOPPING_ASAP if should_stop_asap = true). 1642 // IMPORTANT: The automatic study state transition happens precisely as 1643 // described above; that is, deleting trials or updating StudyConfig NEVER 1644 // automatically moves the study state back to ACTIVE. If you want to 1645 // _resume_ a Study that was stopped, 1) change the stopping conditions if 1646 // necessary, 2) activate the study, and then 3) ask for suggestions. 1647 // If the specified time or duration has not passed, do not stop the 1648 // study. 1649 MinimumRuntimeConstraint *StudyTimeConstraint `protobuf:"bytes,2,opt,name=minimum_runtime_constraint,json=minimumRuntimeConstraint,proto3" json:"minimum_runtime_constraint,omitempty"` 1650 // If the specified time or duration has passed, stop the study. 1651 MaximumRuntimeConstraint *StudyTimeConstraint `protobuf:"bytes,3,opt,name=maximum_runtime_constraint,json=maximumRuntimeConstraint,proto3" json:"maximum_runtime_constraint,omitempty"` 1652 // If there are fewer than this many COMPLETED trials, do not stop the 1653 // study. 1654 MinNumTrials *wrapperspb.Int32Value `protobuf:"bytes,4,opt,name=min_num_trials,json=minNumTrials,proto3" json:"min_num_trials,omitempty"` 1655 // If there are more than this many trials, stop the study. 1656 MaxNumTrials *wrapperspb.Int32Value `protobuf:"bytes,5,opt,name=max_num_trials,json=maxNumTrials,proto3" json:"max_num_trials,omitempty"` 1657 // If the objective value has not improved for this many consecutive 1658 // trials, stop the study. 1659 // 1660 // WARNING: Effective only for single-objective studies. 1661 MaxNumTrialsNoProgress *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=max_num_trials_no_progress,json=maxNumTrialsNoProgress,proto3" json:"max_num_trials_no_progress,omitempty"` 1662 // If the objective value has not improved for this much time, stop the 1663 // study. 1664 // 1665 // WARNING: Effective only for single-objective studies. 1666 MaxDurationNoProgress *durationpb.Duration `protobuf:"bytes,7,opt,name=max_duration_no_progress,json=maxDurationNoProgress,proto3" json:"max_duration_no_progress,omitempty"` 1667 } 1668 1669 func (x *StudySpec_StudyStoppingConfig) Reset() { 1670 *x = StudySpec_StudyStoppingConfig{} 1671 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[13] 1672 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1673 ms.StoreMessageInfo(mi) 1674 } 1675 1676 func (x *StudySpec_StudyStoppingConfig) String() string { 1677 return protoimpl.X.MessageStringOf(x) 1678 } 1679 1680 func (*StudySpec_StudyStoppingConfig) ProtoMessage() {} 1681 1682 func (x *StudySpec_StudyStoppingConfig) ProtoReflect() protoreflect.Message { 1683 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[13] 1684 if x != nil { 1685 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1686 if ms.LoadMessageInfo() == nil { 1687 ms.StoreMessageInfo(mi) 1688 } 1689 return ms 1690 } 1691 return mi.MessageOf(x) 1692 } 1693 1694 // Deprecated: Use StudySpec_StudyStoppingConfig.ProtoReflect.Descriptor instead. 1695 func (*StudySpec_StudyStoppingConfig) Descriptor() ([]byte, []int) { 1696 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 5} 1697 } 1698 1699 func (x *StudySpec_StudyStoppingConfig) GetShouldStopAsap() *wrapperspb.BoolValue { 1700 if x != nil { 1701 return x.ShouldStopAsap 1702 } 1703 return nil 1704 } 1705 1706 func (x *StudySpec_StudyStoppingConfig) GetMinimumRuntimeConstraint() *StudyTimeConstraint { 1707 if x != nil { 1708 return x.MinimumRuntimeConstraint 1709 } 1710 return nil 1711 } 1712 1713 func (x *StudySpec_StudyStoppingConfig) GetMaximumRuntimeConstraint() *StudyTimeConstraint { 1714 if x != nil { 1715 return x.MaximumRuntimeConstraint 1716 } 1717 return nil 1718 } 1719 1720 func (x *StudySpec_StudyStoppingConfig) GetMinNumTrials() *wrapperspb.Int32Value { 1721 if x != nil { 1722 return x.MinNumTrials 1723 } 1724 return nil 1725 } 1726 1727 func (x *StudySpec_StudyStoppingConfig) GetMaxNumTrials() *wrapperspb.Int32Value { 1728 if x != nil { 1729 return x.MaxNumTrials 1730 } 1731 return nil 1732 } 1733 1734 func (x *StudySpec_StudyStoppingConfig) GetMaxNumTrialsNoProgress() *wrapperspb.Int32Value { 1735 if x != nil { 1736 return x.MaxNumTrialsNoProgress 1737 } 1738 return nil 1739 } 1740 1741 func (x *StudySpec_StudyStoppingConfig) GetMaxDurationNoProgress() *durationpb.Duration { 1742 if x != nil { 1743 return x.MaxDurationNoProgress 1744 } 1745 return nil 1746 } 1747 1748 // Used in safe optimization to specify threshold levels and risk tolerance. 1749 type StudySpec_MetricSpec_SafetyMetricConfig struct { 1750 state protoimpl.MessageState 1751 sizeCache protoimpl.SizeCache 1752 unknownFields protoimpl.UnknownFields 1753 1754 // Safety threshold (boundary value between safe and unsafe). NOTE that if 1755 // you leave SafetyMetricConfig unset, a default value of 0 will be used. 1756 SafetyThreshold float64 `protobuf:"fixed64,1,opt,name=safety_threshold,json=safetyThreshold,proto3" json:"safety_threshold,omitempty"` 1757 // Desired minimum fraction of safe trials (over total number of trials) 1758 // that should be targeted by the algorithm at any time during the 1759 // study (best effort). This should be between 0.0 and 1.0 and a value of 1760 // 0.0 means that there is no minimum and an algorithm proceeds without 1761 // targeting any specific fraction. A value of 1.0 means that the 1762 // algorithm attempts to only Suggest safe Trials. 1763 DesiredMinSafeTrialsFraction *float64 `protobuf:"fixed64,2,opt,name=desired_min_safe_trials_fraction,json=desiredMinSafeTrialsFraction,proto3,oneof" json:"desired_min_safe_trials_fraction,omitempty"` 1764 } 1765 1766 func (x *StudySpec_MetricSpec_SafetyMetricConfig) Reset() { 1767 *x = StudySpec_MetricSpec_SafetyMetricConfig{} 1768 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[14] 1769 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1770 ms.StoreMessageInfo(mi) 1771 } 1772 1773 func (x *StudySpec_MetricSpec_SafetyMetricConfig) String() string { 1774 return protoimpl.X.MessageStringOf(x) 1775 } 1776 1777 func (*StudySpec_MetricSpec_SafetyMetricConfig) ProtoMessage() {} 1778 1779 func (x *StudySpec_MetricSpec_SafetyMetricConfig) ProtoReflect() protoreflect.Message { 1780 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[14] 1781 if x != nil { 1782 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1783 if ms.LoadMessageInfo() == nil { 1784 ms.StoreMessageInfo(mi) 1785 } 1786 return ms 1787 } 1788 return mi.MessageOf(x) 1789 } 1790 1791 // Deprecated: Use StudySpec_MetricSpec_SafetyMetricConfig.ProtoReflect.Descriptor instead. 1792 func (*StudySpec_MetricSpec_SafetyMetricConfig) Descriptor() ([]byte, []int) { 1793 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 0, 0} 1794 } 1795 1796 func (x *StudySpec_MetricSpec_SafetyMetricConfig) GetSafetyThreshold() float64 { 1797 if x != nil { 1798 return x.SafetyThreshold 1799 } 1800 return 0 1801 } 1802 1803 func (x *StudySpec_MetricSpec_SafetyMetricConfig) GetDesiredMinSafeTrialsFraction() float64 { 1804 if x != nil && x.DesiredMinSafeTrialsFraction != nil { 1805 return *x.DesiredMinSafeTrialsFraction 1806 } 1807 return 0 1808 } 1809 1810 // Value specification for a parameter in `DOUBLE` type. 1811 type StudySpec_ParameterSpec_DoubleValueSpec struct { 1812 state protoimpl.MessageState 1813 sizeCache protoimpl.SizeCache 1814 unknownFields protoimpl.UnknownFields 1815 1816 // Required. Inclusive minimum value of the parameter. 1817 MinValue float64 `protobuf:"fixed64,1,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"` 1818 // Required. Inclusive maximum value of the parameter. 1819 MaxValue float64 `protobuf:"fixed64,2,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"` 1820 // A default value for a `DOUBLE` parameter that is assumed to be a 1821 // relatively good starting point. Unset value signals that there is no 1822 // offered starting point. 1823 // 1824 // Currently only supported by the Vertex AI Vizier service. Not supported 1825 // by HyperparameterTuningJob or TrainingPipeline. 1826 DefaultValue *float64 `protobuf:"fixed64,4,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"` 1827 } 1828 1829 func (x *StudySpec_ParameterSpec_DoubleValueSpec) Reset() { 1830 *x = StudySpec_ParameterSpec_DoubleValueSpec{} 1831 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[15] 1832 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1833 ms.StoreMessageInfo(mi) 1834 } 1835 1836 func (x *StudySpec_ParameterSpec_DoubleValueSpec) String() string { 1837 return protoimpl.X.MessageStringOf(x) 1838 } 1839 1840 func (*StudySpec_ParameterSpec_DoubleValueSpec) ProtoMessage() {} 1841 1842 func (x *StudySpec_ParameterSpec_DoubleValueSpec) ProtoReflect() protoreflect.Message { 1843 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[15] 1844 if x != nil { 1845 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1846 if ms.LoadMessageInfo() == nil { 1847 ms.StoreMessageInfo(mi) 1848 } 1849 return ms 1850 } 1851 return mi.MessageOf(x) 1852 } 1853 1854 // Deprecated: Use StudySpec_ParameterSpec_DoubleValueSpec.ProtoReflect.Descriptor instead. 1855 func (*StudySpec_ParameterSpec_DoubleValueSpec) Descriptor() ([]byte, []int) { 1856 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 0} 1857 } 1858 1859 func (x *StudySpec_ParameterSpec_DoubleValueSpec) GetMinValue() float64 { 1860 if x != nil { 1861 return x.MinValue 1862 } 1863 return 0 1864 } 1865 1866 func (x *StudySpec_ParameterSpec_DoubleValueSpec) GetMaxValue() float64 { 1867 if x != nil { 1868 return x.MaxValue 1869 } 1870 return 0 1871 } 1872 1873 func (x *StudySpec_ParameterSpec_DoubleValueSpec) GetDefaultValue() float64 { 1874 if x != nil && x.DefaultValue != nil { 1875 return *x.DefaultValue 1876 } 1877 return 0 1878 } 1879 1880 // Value specification for a parameter in `INTEGER` type. 1881 type StudySpec_ParameterSpec_IntegerValueSpec struct { 1882 state protoimpl.MessageState 1883 sizeCache protoimpl.SizeCache 1884 unknownFields protoimpl.UnknownFields 1885 1886 // Required. Inclusive minimum value of the parameter. 1887 MinValue int64 `protobuf:"varint,1,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"` 1888 // Required. Inclusive maximum value of the parameter. 1889 MaxValue int64 `protobuf:"varint,2,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"` 1890 // A default value for an `INTEGER` parameter that is assumed to be a 1891 // relatively good starting point. Unset value signals that there is no 1892 // offered starting point. 1893 // 1894 // Currently only supported by the Vertex AI Vizier service. Not supported 1895 // by HyperparameterTuningJob or TrainingPipeline. 1896 DefaultValue *int64 `protobuf:"varint,4,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"` 1897 } 1898 1899 func (x *StudySpec_ParameterSpec_IntegerValueSpec) Reset() { 1900 *x = StudySpec_ParameterSpec_IntegerValueSpec{} 1901 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[16] 1902 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1903 ms.StoreMessageInfo(mi) 1904 } 1905 1906 func (x *StudySpec_ParameterSpec_IntegerValueSpec) String() string { 1907 return protoimpl.X.MessageStringOf(x) 1908 } 1909 1910 func (*StudySpec_ParameterSpec_IntegerValueSpec) ProtoMessage() {} 1911 1912 func (x *StudySpec_ParameterSpec_IntegerValueSpec) ProtoReflect() protoreflect.Message { 1913 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[16] 1914 if x != nil { 1915 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1916 if ms.LoadMessageInfo() == nil { 1917 ms.StoreMessageInfo(mi) 1918 } 1919 return ms 1920 } 1921 return mi.MessageOf(x) 1922 } 1923 1924 // Deprecated: Use StudySpec_ParameterSpec_IntegerValueSpec.ProtoReflect.Descriptor instead. 1925 func (*StudySpec_ParameterSpec_IntegerValueSpec) Descriptor() ([]byte, []int) { 1926 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 1} 1927 } 1928 1929 func (x *StudySpec_ParameterSpec_IntegerValueSpec) GetMinValue() int64 { 1930 if x != nil { 1931 return x.MinValue 1932 } 1933 return 0 1934 } 1935 1936 func (x *StudySpec_ParameterSpec_IntegerValueSpec) GetMaxValue() int64 { 1937 if x != nil { 1938 return x.MaxValue 1939 } 1940 return 0 1941 } 1942 1943 func (x *StudySpec_ParameterSpec_IntegerValueSpec) GetDefaultValue() int64 { 1944 if x != nil && x.DefaultValue != nil { 1945 return *x.DefaultValue 1946 } 1947 return 0 1948 } 1949 1950 // Value specification for a parameter in `CATEGORICAL` type. 1951 type StudySpec_ParameterSpec_CategoricalValueSpec struct { 1952 state protoimpl.MessageState 1953 sizeCache protoimpl.SizeCache 1954 unknownFields protoimpl.UnknownFields 1955 1956 // Required. The list of possible categories. 1957 Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` 1958 // A default value for a `CATEGORICAL` parameter that is assumed to be a 1959 // relatively good starting point. Unset value signals that there is no 1960 // offered starting point. 1961 // 1962 // Currently only supported by the Vertex AI Vizier service. Not supported 1963 // by HyperparameterTuningJob or TrainingPipeline. 1964 DefaultValue *string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"` 1965 } 1966 1967 func (x *StudySpec_ParameterSpec_CategoricalValueSpec) Reset() { 1968 *x = StudySpec_ParameterSpec_CategoricalValueSpec{} 1969 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[17] 1970 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1971 ms.StoreMessageInfo(mi) 1972 } 1973 1974 func (x *StudySpec_ParameterSpec_CategoricalValueSpec) String() string { 1975 return protoimpl.X.MessageStringOf(x) 1976 } 1977 1978 func (*StudySpec_ParameterSpec_CategoricalValueSpec) ProtoMessage() {} 1979 1980 func (x *StudySpec_ParameterSpec_CategoricalValueSpec) ProtoReflect() protoreflect.Message { 1981 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[17] 1982 if x != nil { 1983 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1984 if ms.LoadMessageInfo() == nil { 1985 ms.StoreMessageInfo(mi) 1986 } 1987 return ms 1988 } 1989 return mi.MessageOf(x) 1990 } 1991 1992 // Deprecated: Use StudySpec_ParameterSpec_CategoricalValueSpec.ProtoReflect.Descriptor instead. 1993 func (*StudySpec_ParameterSpec_CategoricalValueSpec) Descriptor() ([]byte, []int) { 1994 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 2} 1995 } 1996 1997 func (x *StudySpec_ParameterSpec_CategoricalValueSpec) GetValues() []string { 1998 if x != nil { 1999 return x.Values 2000 } 2001 return nil 2002 } 2003 2004 func (x *StudySpec_ParameterSpec_CategoricalValueSpec) GetDefaultValue() string { 2005 if x != nil && x.DefaultValue != nil { 2006 return *x.DefaultValue 2007 } 2008 return "" 2009 } 2010 2011 // Value specification for a parameter in `DISCRETE` type. 2012 type StudySpec_ParameterSpec_DiscreteValueSpec struct { 2013 state protoimpl.MessageState 2014 sizeCache protoimpl.SizeCache 2015 unknownFields protoimpl.UnknownFields 2016 2017 // Required. A list of possible values. 2018 // The list should be in increasing order and at least 1e-10 apart. 2019 // For instance, this parameter might have possible settings of 1.5, 2.5, 2020 // and 4.0. This list should not contain more than 1,000 values. 2021 Values []float64 `protobuf:"fixed64,1,rep,packed,name=values,proto3" json:"values,omitempty"` 2022 // A default value for a `DISCRETE` parameter that is assumed to be a 2023 // relatively good starting point. Unset value signals that there is no 2024 // offered starting point. It automatically rounds to the 2025 // nearest feasible discrete point. 2026 // 2027 // Currently only supported by the Vertex AI Vizier service. Not supported 2028 // by HyperparameterTuningJob or TrainingPipeline. 2029 DefaultValue *float64 `protobuf:"fixed64,3,opt,name=default_value,json=defaultValue,proto3,oneof" json:"default_value,omitempty"` 2030 } 2031 2032 func (x *StudySpec_ParameterSpec_DiscreteValueSpec) Reset() { 2033 *x = StudySpec_ParameterSpec_DiscreteValueSpec{} 2034 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[18] 2035 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2036 ms.StoreMessageInfo(mi) 2037 } 2038 2039 func (x *StudySpec_ParameterSpec_DiscreteValueSpec) String() string { 2040 return protoimpl.X.MessageStringOf(x) 2041 } 2042 2043 func (*StudySpec_ParameterSpec_DiscreteValueSpec) ProtoMessage() {} 2044 2045 func (x *StudySpec_ParameterSpec_DiscreteValueSpec) ProtoReflect() protoreflect.Message { 2046 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[18] 2047 if x != nil { 2048 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2049 if ms.LoadMessageInfo() == nil { 2050 ms.StoreMessageInfo(mi) 2051 } 2052 return ms 2053 } 2054 return mi.MessageOf(x) 2055 } 2056 2057 // Deprecated: Use StudySpec_ParameterSpec_DiscreteValueSpec.ProtoReflect.Descriptor instead. 2058 func (*StudySpec_ParameterSpec_DiscreteValueSpec) Descriptor() ([]byte, []int) { 2059 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 3} 2060 } 2061 2062 func (x *StudySpec_ParameterSpec_DiscreteValueSpec) GetValues() []float64 { 2063 if x != nil { 2064 return x.Values 2065 } 2066 return nil 2067 } 2068 2069 func (x *StudySpec_ParameterSpec_DiscreteValueSpec) GetDefaultValue() float64 { 2070 if x != nil && x.DefaultValue != nil { 2071 return *x.DefaultValue 2072 } 2073 return 0 2074 } 2075 2076 // Represents a parameter spec with condition from its parent parameter. 2077 type StudySpec_ParameterSpec_ConditionalParameterSpec struct { 2078 state protoimpl.MessageState 2079 sizeCache protoimpl.SizeCache 2080 unknownFields protoimpl.UnknownFields 2081 2082 // A set of parameter values from the parent ParameterSpec's feasible 2083 // space. 2084 // 2085 // Types that are assignable to ParentValueCondition: 2086 // 2087 // *StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues 2088 // *StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues 2089 // *StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues 2090 ParentValueCondition isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition `protobuf_oneof:"parent_value_condition"` 2091 // Required. The spec for a conditional parameter. 2092 ParameterSpec *StudySpec_ParameterSpec `protobuf:"bytes,1,opt,name=parameter_spec,json=parameterSpec,proto3" json:"parameter_spec,omitempty"` 2093 } 2094 2095 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) Reset() { 2096 *x = StudySpec_ParameterSpec_ConditionalParameterSpec{} 2097 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[19] 2098 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2099 ms.StoreMessageInfo(mi) 2100 } 2101 2102 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) String() string { 2103 return protoimpl.X.MessageStringOf(x) 2104 } 2105 2106 func (*StudySpec_ParameterSpec_ConditionalParameterSpec) ProtoMessage() {} 2107 2108 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) ProtoReflect() protoreflect.Message { 2109 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[19] 2110 if x != nil { 2111 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2112 if ms.LoadMessageInfo() == nil { 2113 ms.StoreMessageInfo(mi) 2114 } 2115 return ms 2116 } 2117 return mi.MessageOf(x) 2118 } 2119 2120 // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec.ProtoReflect.Descriptor instead. 2121 func (*StudySpec_ParameterSpec_ConditionalParameterSpec) Descriptor() ([]byte, []int) { 2122 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4} 2123 } 2124 2125 func (m *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentValueCondition() isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition { 2126 if m != nil { 2127 return m.ParentValueCondition 2128 } 2129 return nil 2130 } 2131 2132 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentDiscreteValues() *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition { 2133 if x, ok := x.GetParentValueCondition().(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues); ok { 2134 return x.ParentDiscreteValues 2135 } 2136 return nil 2137 } 2138 2139 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentIntValues() *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition { 2140 if x, ok := x.GetParentValueCondition().(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues); ok { 2141 return x.ParentIntValues 2142 } 2143 return nil 2144 } 2145 2146 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParentCategoricalValues() *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition { 2147 if x, ok := x.GetParentValueCondition().(*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues); ok { 2148 return x.ParentCategoricalValues 2149 } 2150 return nil 2151 } 2152 2153 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec) GetParameterSpec() *StudySpec_ParameterSpec { 2154 if x != nil { 2155 return x.ParameterSpec 2156 } 2157 return nil 2158 } 2159 2160 type isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition interface { 2161 isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() 2162 } 2163 2164 type StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues struct { 2165 // The spec for matching values from a parent parameter of 2166 // `DISCRETE` type. 2167 ParentDiscreteValues *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition `protobuf:"bytes,2,opt,name=parent_discrete_values,json=parentDiscreteValues,proto3,oneof"` 2168 } 2169 2170 type StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues struct { 2171 // The spec for matching values from a parent parameter of `INTEGER` 2172 // type. 2173 ParentIntValues *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition `protobuf:"bytes,3,opt,name=parent_int_values,json=parentIntValues,proto3,oneof"` 2174 } 2175 2176 type StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues struct { 2177 // The spec for matching values from a parent parameter of 2178 // `CATEGORICAL` type. 2179 ParentCategoricalValues *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition `protobuf:"bytes,4,opt,name=parent_categorical_values,json=parentCategoricalValues,proto3,oneof"` 2180 } 2181 2182 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues) isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() { 2183 } 2184 2185 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues) isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() { 2186 } 2187 2188 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues) isStudySpec_ParameterSpec_ConditionalParameterSpec_ParentValueCondition() { 2189 } 2190 2191 // Represents the spec to match discrete values from parent parameter. 2192 type StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition struct { 2193 state protoimpl.MessageState 2194 sizeCache protoimpl.SizeCache 2195 unknownFields protoimpl.UnknownFields 2196 2197 // Required. Matches values of the parent parameter of 'DISCRETE' type. 2198 // All values must exist in `discrete_value_spec` of parent parameter. 2199 // 2200 // The Epsilon of the value matching is 1e-10. 2201 Values []float64 `protobuf:"fixed64,1,rep,packed,name=values,proto3" json:"values,omitempty"` 2202 } 2203 2204 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) Reset() { 2205 *x = StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition{} 2206 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[20] 2207 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2208 ms.StoreMessageInfo(mi) 2209 } 2210 2211 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) String() string { 2212 return protoimpl.X.MessageStringOf(x) 2213 } 2214 2215 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) ProtoMessage() {} 2216 2217 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) ProtoReflect() protoreflect.Message { 2218 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[20] 2219 if x != nil { 2220 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2221 if ms.LoadMessageInfo() == nil { 2222 ms.StoreMessageInfo(mi) 2223 } 2224 return ms 2225 } 2226 return mi.MessageOf(x) 2227 } 2228 2229 // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition.ProtoReflect.Descriptor instead. 2230 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) Descriptor() ([]byte, []int) { 2231 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4, 0} 2232 } 2233 2234 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition) GetValues() []float64 { 2235 if x != nil { 2236 return x.Values 2237 } 2238 return nil 2239 } 2240 2241 // Represents the spec to match integer values from parent parameter. 2242 type StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition struct { 2243 state protoimpl.MessageState 2244 sizeCache protoimpl.SizeCache 2245 unknownFields protoimpl.UnknownFields 2246 2247 // Required. Matches values of the parent parameter of 'INTEGER' type. 2248 // All values must lie in `integer_value_spec` of parent parameter. 2249 Values []int64 `protobuf:"varint,1,rep,packed,name=values,proto3" json:"values,omitempty"` 2250 } 2251 2252 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) Reset() { 2253 *x = StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition{} 2254 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[21] 2255 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2256 ms.StoreMessageInfo(mi) 2257 } 2258 2259 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) String() string { 2260 return protoimpl.X.MessageStringOf(x) 2261 } 2262 2263 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) ProtoMessage() {} 2264 2265 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) ProtoReflect() protoreflect.Message { 2266 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[21] 2267 if x != nil { 2268 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2269 if ms.LoadMessageInfo() == nil { 2270 ms.StoreMessageInfo(mi) 2271 } 2272 return ms 2273 } 2274 return mi.MessageOf(x) 2275 } 2276 2277 // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition.ProtoReflect.Descriptor instead. 2278 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) Descriptor() ([]byte, []int) { 2279 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4, 1} 2280 } 2281 2282 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition) GetValues() []int64 { 2283 if x != nil { 2284 return x.Values 2285 } 2286 return nil 2287 } 2288 2289 // Represents the spec to match categorical values from parent parameter. 2290 type StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition struct { 2291 state protoimpl.MessageState 2292 sizeCache protoimpl.SizeCache 2293 unknownFields protoimpl.UnknownFields 2294 2295 // Required. Matches values of the parent parameter of 'CATEGORICAL' 2296 // type. All values must exist in `categorical_value_spec` of parent 2297 // parameter. 2298 Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` 2299 } 2300 2301 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) Reset() { 2302 *x = StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition{} 2303 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[22] 2304 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2305 ms.StoreMessageInfo(mi) 2306 } 2307 2308 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) String() string { 2309 return protoimpl.X.MessageStringOf(x) 2310 } 2311 2312 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) ProtoMessage() {} 2313 2314 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) ProtoReflect() protoreflect.Message { 2315 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[22] 2316 if x != nil { 2317 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2318 if ms.LoadMessageInfo() == nil { 2319 ms.StoreMessageInfo(mi) 2320 } 2321 return ms 2322 } 2323 return mi.MessageOf(x) 2324 } 2325 2326 // Deprecated: Use StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition.ProtoReflect.Descriptor instead. 2327 func (*StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) Descriptor() ([]byte, []int) { 2328 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{4, 1, 4, 2} 2329 } 2330 2331 func (x *StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition) GetValues() []string { 2332 if x != nil { 2333 return x.Values 2334 } 2335 return nil 2336 } 2337 2338 // A message representing a metric in the measurement. 2339 type Measurement_Metric struct { 2340 state protoimpl.MessageState 2341 sizeCache protoimpl.SizeCache 2342 unknownFields protoimpl.UnknownFields 2343 2344 // Output only. The ID of the Metric. The Metric should be defined in 2345 // [StudySpec's Metrics][google.cloud.aiplatform.v1.StudySpec.metrics]. 2346 MetricId string `protobuf:"bytes,1,opt,name=metric_id,json=metricId,proto3" json:"metric_id,omitempty"` 2347 // Output only. The value for this metric. 2348 Value float64 `protobuf:"fixed64,2,opt,name=value,proto3" json:"value,omitempty"` 2349 } 2350 2351 func (x *Measurement_Metric) Reset() { 2352 *x = Measurement_Metric{} 2353 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[23] 2354 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2355 ms.StoreMessageInfo(mi) 2356 } 2357 2358 func (x *Measurement_Metric) String() string { 2359 return protoimpl.X.MessageStringOf(x) 2360 } 2361 2362 func (*Measurement_Metric) ProtoMessage() {} 2363 2364 func (x *Measurement_Metric) ProtoReflect() protoreflect.Message { 2365 mi := &file_google_cloud_aiplatform_v1_study_proto_msgTypes[23] 2366 if x != nil { 2367 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2368 if ms.LoadMessageInfo() == nil { 2369 ms.StoreMessageInfo(mi) 2370 } 2371 return ms 2372 } 2373 return mi.MessageOf(x) 2374 } 2375 2376 // Deprecated: Use Measurement_Metric.ProtoReflect.Descriptor instead. 2377 func (*Measurement_Metric) Descriptor() ([]byte, []int) { 2378 return file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP(), []int{5, 0} 2379 } 2380 2381 func (x *Measurement_Metric) GetMetricId() string { 2382 if x != nil { 2383 return x.MetricId 2384 } 2385 return "" 2386 } 2387 2388 func (x *Measurement_Metric) GetValue() float64 { 2389 if x != nil { 2390 return x.Value 2391 } 2392 return 0 2393 } 2394 2395 var File_google_cloud_aiplatform_v1_study_proto protoreflect.FileDescriptor 2396 2397 var file_google_cloud_aiplatform_v1_study_proto_rawDesc = []byte{ 2398 0x0a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 2399 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 2400 0x64, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2401 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 2402 0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 2403 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 2404 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 2405 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2406 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2407 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2408 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2409 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 2410 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 2411 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 2412 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2413 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 2414 0xef, 0x03, 0x0a, 0x05, 0x53, 0x74, 0x75, 0x64, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 2415 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 2416 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 2417 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 2418 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x73, 0x74, 2419 0x75, 0x64, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 2420 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 2421 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 2422 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x75, 0x64, 2423 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 2424 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2425 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 2426 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 2427 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 2428 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 2429 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2430 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 2431 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 2432 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x06, 2433 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x69, 0x6e, 0x61, 0x63, 0x74, 2434 0x69, 0x76, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x05, 0x53, 0x74, 0x61, 2435 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 2436 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 2437 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 2438 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 2439 0x10, 0x03, 0x3a, 0x5d, 0xea, 0x41, 0x5a, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 2440 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 2441 0x6f, 0x6d, 0x2f, 0x53, 0x74, 0x75, 0x64, 0x79, 0x12, 0x37, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 2442 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 2443 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2444 0x7d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x75, 0x64, 0x79, 2445 0x7d, 0x22, 0xf7, 0x08, 0x0a, 0x05, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 2446 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 2447 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 2448 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 2449 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2450 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 2451 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 2452 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a, 2453 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 2454 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2455 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 2456 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, 0x03, 2457 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 2458 0x59, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 2459 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 2460 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2461 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 2462 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 2463 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x65, 2464 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 2465 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2466 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 2467 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 2468 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 2469 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 2470 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 2471 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 2472 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 2473 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 2474 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2475 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 2476 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 2477 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 2478 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x69, 0x6e, 2479 0x66, 0x65, 0x61, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 2480 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x69, 0x6e, 0x66, 0x65, 2481 0x61, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 2482 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 2483 0x42, 0x2b, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2484 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 2485 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x52, 0x09, 0x63, 2486 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x12, 0x61, 0x0a, 0x0f, 0x77, 0x65, 0x62, 0x5f, 2487 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 2488 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2489 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 2490 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 2491 0x69, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x77, 0x65, 2492 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x1a, 0x66, 0x0a, 0x09, 0x50, 2493 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x61, 2494 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 2495 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 2496 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 2497 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2498 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x76, 0x61, 2499 0x6c, 0x75, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 2500 0x55, 0x72, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 2501 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 2502 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 2503 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x66, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 2504 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 2505 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 2506 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 2507 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 2508 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0e, 0x0a, 2509 0x0a, 0x49, 0x4e, 0x46, 0x45, 0x41, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x3a, 0x6c, 0xea, 2510 0x41, 0x69, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 2511 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x72, 2512 0x69, 0x61, 0x6c, 0x12, 0x46, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 2513 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2514 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x74, 0x75, 2515 0x64, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x75, 0x64, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x69, 2516 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x7d, 0x22, 0x7d, 0x0a, 0x0c, 0x54, 2517 0x72, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 2518 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2519 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 2520 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 2521 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2522 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 2523 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0a, 2524 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x13, 0x53, 2525 0x74, 0x75, 0x64, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 2526 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 2527 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2528 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 2529 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 2530 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 2531 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2532 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 2533 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x63, 2534 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x22, 0xe4, 0x28, 0x0a, 0x09, 0x53, 0x74, 2535 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x82, 0x01, 0x0a, 0x19, 0x64, 0x65, 0x63, 0x61, 2536 0x79, 0x5f, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 2537 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 2538 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2539 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 2540 0x65, 0x63, 0x2e, 0x44, 0x65, 0x63, 0x61, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 0x41, 0x75, 0x74, 2541 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 2542 0x65, 0x63, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x63, 0x61, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 2543 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x88, 0x01, 0x0a, 2544 0x1e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 2545 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 2546 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2547 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 2548 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x64, 2549 0x69, 0x61, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 2550 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x65, 0x64, 0x69, 2551 0x61, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 2552 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x88, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x76, 2553 0x65, 0x78, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x6f, 2554 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 2555 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2556 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 2557 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x78, 0x41, 0x75, 2558 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 2559 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x78, 0x41, 0x75, 0x74, 2560 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 2561 0x65, 0x63, 0x12, 0x4f, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 2562 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2563 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2564 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 2565 0x63, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 2566 0x69, 0x63, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 2567 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2568 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 2569 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 2570 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 2571 0x02, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 2572 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 2573 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2574 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 2575 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 2576 0x6d, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x63, 0x0a, 0x11, 2577 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x69, 0x73, 2578 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2579 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 2580 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4f, 2581 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x52, 2582 0x10, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x69, 0x73, 2583 0x65, 0x12, 0x7c, 0x0a, 0x1a, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 2584 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 2585 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2586 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 2587 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x61, 2588 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 2589 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x18, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 2590 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 2591 0x72, 0x0a, 0x15, 0x73, 0x74, 0x75, 0x64, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 2592 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 2593 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 2594 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 2595 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x74, 0x6f, 0x70, 0x70, 2596 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x13, 0x73, 0x74, 0x75, 2597 0x64, 0x79, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2598 0x88, 0x01, 0x01, 0x1a, 0xfa, 0x03, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 2599 0x65, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 2600 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x72, 2601 0x69, 0x63, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 2602 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2603 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 2604 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 2605 0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x6f, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 2606 0x41, 0x02, 0x52, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x6d, 0x0a, 0x0d, 0x73, 0x61, 0x66, 0x65, 2607 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 2608 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 2609 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 2610 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 2611 0x63, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 2612 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x43, 0x6f, 2613 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x1a, 0xb1, 0x01, 0x0a, 0x12, 0x53, 0x61, 0x66, 0x65, 2614 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 2615 0x0a, 0x10, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 2616 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 2617 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x20, 0x64, 0x65, 0x73, 2618 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x72, 2619 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 2620 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x69, 2621 0x6e, 0x53, 0x61, 0x66, 0x65, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x72, 0x61, 0x63, 0x74, 2622 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 2623 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x61, 2624 0x6c, 0x73, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x08, 0x47, 2625 0x6f, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 2626 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 2627 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x01, 2628 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x42, 0x10, 2629 0x0a, 0x0e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2630 0x1a, 0xa8, 0x11, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 2631 0x65, 0x63, 0x12, 0x71, 0x0a, 0x11, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 2632 0x75, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 2633 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 2634 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 2635 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 2636 0x65, 0x63, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 2637 0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 2638 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x74, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 2639 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 2640 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2641 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 2642 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 2643 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 2644 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x67, 2645 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x80, 0x01, 0x0a, 0x16, 2646 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 2647 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 2648 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2649 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 2650 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 2651 0x63, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 2652 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x14, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 2653 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x77, 2654 0x0a, 0x13, 0x64, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 2655 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 2656 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2657 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 2658 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 2659 0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 2660 0x65, 0x63, 0x48, 0x00, 0x52, 0x11, 0x64, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 2661 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x61, 0x6d, 2662 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 2663 0x41, 0x02, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 2664 0x5c, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 2665 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2666 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2667 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 2668 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x79, 2669 0x70, 0x65, 0x52, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x8c, 0x01, 2670 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x61, 2671 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x0a, 0x20, 2672 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2673 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2674 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 2675 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 2676 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 2677 0x63, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 2678 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0x91, 0x01, 0x0a, 2679 0x0f, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 2680 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 2681 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 2682 0x75, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 2683 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 2684 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 2685 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x64, 2686 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 2687 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 2688 0x1a, 0x92, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 2689 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 2690 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6d, 2691 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 2692 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 2693 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66, 2694 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 2695 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 2696 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 2697 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6f, 0x0a, 0x14, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 2698 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a, 2699 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 2700 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 2701 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 2702 0x09, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 2703 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 2704 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6c, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 2705 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a, 0x06, 0x76, 2706 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 2707 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 2708 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 2709 0x00, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 2710 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 2711 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x8c, 0x06, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 2712 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 2713 0x63, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 2714 0x63, 0x72, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 2715 0x28, 0x0b, 0x32, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2716 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 2717 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 2718 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 2719 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 2720 0x2e, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 2721 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 2722 0x74, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 2723 0x8c, 0x01, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 2724 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f, 2725 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2726 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 2727 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 2728 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 2729 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 2730 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x70, 2731 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0xa4, 2732 0x01, 0x0a, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 2733 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 2734 0x28, 0x0b, 0x32, 0x66, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2735 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 2736 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 2737 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 2738 0x6e, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 2739 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 2740 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x70, 0x61, 2741 0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 2742 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 2743 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 2744 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 2745 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 2746 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 2747 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 2748 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x35, 0x0a, 0x16, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 2749 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 2750 0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 2751 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x30, 0x0a, 2752 0x11, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 2753 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 2754 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 2755 0x38, 0x0a, 0x19, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x61, 2756 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 2757 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 2758 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x72, 2759 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 2760 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0x0a, 0x09, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 2761 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 2762 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 2763 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x43, 0x41, 0x4c, 2764 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 2765 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x49, 0x54, 0x5f, 2766 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x53, 0x43, 0x41, 0x4c, 2767 0x45, 0x10, 0x03, 0x42, 0x16, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 2768 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x1a, 0x53, 0x0a, 0x1f, 0x44, 2769 0x65, 0x63, 0x61, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 2770 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 2771 0x0a, 0x14, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x75, 2772 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x75, 0x73, 2773 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2774 0x1a, 0x4f, 0x0a, 0x1b, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 2775 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 2776 0x30, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x64, 2777 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x75, 2778 0x73, 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 2779 0x6e, 0x1a, 0xee, 0x02, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x78, 0x41, 0x75, 0x74, 0x6f, 2780 0x6d, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 2781 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 2782 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x74, 2783 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 2784 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 2785 0x0c, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 2786 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 2787 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x69, 2788 0x6e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 2789 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 2790 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 2791 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 2792 0x67, 0x52, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4e, 0x61, 2793 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 2794 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 2795 0x52, 0x12, 0x75, 0x73, 0x65, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 2796 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 2797 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x61, 0x6c, 2798 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 2799 0x65, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x54, 0x72, 0x69, 0x61, 0x6c, 2800 0x73, 0x88, 0x01, 0x01, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 2801 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x61, 2802 0x6c, 0x73, 0x1a, 0xec, 0x04, 0x0a, 0x13, 0x53, 0x74, 0x75, 0x64, 0x79, 0x53, 0x74, 0x6f, 0x70, 2803 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x68, 2804 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x73, 0x61, 0x70, 0x18, 0x01, 2805 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2806 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 2807 0x52, 0x0e, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x73, 0x61, 0x70, 2808 0x12, 0x6d, 0x0a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x75, 0x6e, 0x74, 2809 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x02, 2810 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2811 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 2812 0x31, 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 2813 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x18, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x75, 2814 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 2815 0x6d, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 2816 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 2817 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2818 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2819 0x2e, 0x53, 0x74, 0x75, 0x64, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 2820 0x61, 0x69, 0x6e, 0x74, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x75, 0x6e, 2821 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x41, 2822 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x73, 2823 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2824 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 2825 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x69, 0x61, 0x6c, 2826 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x69, 2827 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2828 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 2829 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x54, 0x72, 2830 0x69, 0x61, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 2831 0x74, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 2832 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2833 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 2834 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x69, 2835 0x61, 0x6c, 0x73, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 2836 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 2837 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 2838 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2839 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x44, 2840 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 2841 0x73, 0x22, 0x4a, 0x0a, 0x09, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x19, 2842 0x0a, 0x15, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 2843 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x52, 0x49, 2844 0x44, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x41, 2845 0x4e, 0x44, 0x4f, 0x4d, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0x03, 0x22, 0x48, 0x0a, 2846 0x10, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x69, 0x73, 2847 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, 2848 0x5f, 0x4e, 0x4f, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 2849 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x08, 0x0a, 2850 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x02, 0x22, 0x72, 0x0a, 0x18, 0x4d, 0x65, 0x61, 0x73, 0x75, 2851 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 2852 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x4d, 0x45, 2853 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 2854 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 2855 0x14, 0x0a, 0x10, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x4d, 2856 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x45, 2857 0x41, 0x53, 0x55, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x19, 0x0a, 0x17, 0x61, 2858 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 2859 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x74, 0x75, 0x64, 0x79, 2860 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2861 0x22, 0x92, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 2862 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, 2863 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 2864 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 2865 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x65, 0x6c, 0x61, 0x70, 2866 0x73, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x73, 2867 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 2868 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 2869 0x4d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 2870 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2871 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 2872 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 2873 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x45, 2874 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x72, 2875 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 2876 0x52, 0x08, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 2877 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 2878 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0xc8, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 2879 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2880 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x53, 0x74, 0x75, 0x64, 0x79, 0x50, 2881 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 2882 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 2883 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 2884 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2885 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2886 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 2887 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 2888 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 2889 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 2890 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 2891 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2892 } 2893 2894 var ( 2895 file_google_cloud_aiplatform_v1_study_proto_rawDescOnce sync.Once 2896 file_google_cloud_aiplatform_v1_study_proto_rawDescData = file_google_cloud_aiplatform_v1_study_proto_rawDesc 2897 ) 2898 2899 func file_google_cloud_aiplatform_v1_study_proto_rawDescGZIP() []byte { 2900 file_google_cloud_aiplatform_v1_study_proto_rawDescOnce.Do(func() { 2901 file_google_cloud_aiplatform_v1_study_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1_study_proto_rawDescData) 2902 }) 2903 return file_google_cloud_aiplatform_v1_study_proto_rawDescData 2904 } 2905 2906 var file_google_cloud_aiplatform_v1_study_proto_enumTypes = make([]protoimpl.EnumInfo, 7) 2907 var file_google_cloud_aiplatform_v1_study_proto_msgTypes = make([]protoimpl.MessageInfo, 24) 2908 var file_google_cloud_aiplatform_v1_study_proto_goTypes = []any{ 2909 (Study_State)(0), // 0: google.cloud.aiplatform.v1.Study.State 2910 (Trial_State)(0), // 1: google.cloud.aiplatform.v1.Trial.State 2911 (StudySpec_Algorithm)(0), // 2: google.cloud.aiplatform.v1.StudySpec.Algorithm 2912 (StudySpec_ObservationNoise)(0), // 3: google.cloud.aiplatform.v1.StudySpec.ObservationNoise 2913 (StudySpec_MeasurementSelectionType)(0), // 4: google.cloud.aiplatform.v1.StudySpec.MeasurementSelectionType 2914 (StudySpec_MetricSpec_GoalType)(0), // 5: google.cloud.aiplatform.v1.StudySpec.MetricSpec.GoalType 2915 (StudySpec_ParameterSpec_ScaleType)(0), // 6: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ScaleType 2916 (*Study)(nil), // 7: google.cloud.aiplatform.v1.Study 2917 (*Trial)(nil), // 8: google.cloud.aiplatform.v1.Trial 2918 (*TrialContext)(nil), // 9: google.cloud.aiplatform.v1.TrialContext 2919 (*StudyTimeConstraint)(nil), // 10: google.cloud.aiplatform.v1.StudyTimeConstraint 2920 (*StudySpec)(nil), // 11: google.cloud.aiplatform.v1.StudySpec 2921 (*Measurement)(nil), // 12: google.cloud.aiplatform.v1.Measurement 2922 (*Trial_Parameter)(nil), // 13: google.cloud.aiplatform.v1.Trial.Parameter 2923 nil, // 14: google.cloud.aiplatform.v1.Trial.WebAccessUrisEntry 2924 (*StudySpec_MetricSpec)(nil), // 15: google.cloud.aiplatform.v1.StudySpec.MetricSpec 2925 (*StudySpec_ParameterSpec)(nil), // 16: google.cloud.aiplatform.v1.StudySpec.ParameterSpec 2926 (*StudySpec_DecayCurveAutomatedStoppingSpec)(nil), // 17: google.cloud.aiplatform.v1.StudySpec.DecayCurveAutomatedStoppingSpec 2927 (*StudySpec_MedianAutomatedStoppingSpec)(nil), // 18: google.cloud.aiplatform.v1.StudySpec.MedianAutomatedStoppingSpec 2928 (*StudySpec_ConvexAutomatedStoppingSpec)(nil), // 19: google.cloud.aiplatform.v1.StudySpec.ConvexAutomatedStoppingSpec 2929 (*StudySpec_StudyStoppingConfig)(nil), // 20: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig 2930 (*StudySpec_MetricSpec_SafetyMetricConfig)(nil), // 21: google.cloud.aiplatform.v1.StudySpec.MetricSpec.SafetyMetricConfig 2931 (*StudySpec_ParameterSpec_DoubleValueSpec)(nil), // 22: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DoubleValueSpec 2932 (*StudySpec_ParameterSpec_IntegerValueSpec)(nil), // 23: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.IntegerValueSpec 2933 (*StudySpec_ParameterSpec_CategoricalValueSpec)(nil), // 24: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.CategoricalValueSpec 2934 (*StudySpec_ParameterSpec_DiscreteValueSpec)(nil), // 25: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DiscreteValueSpec 2935 (*StudySpec_ParameterSpec_ConditionalParameterSpec)(nil), // 26: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec 2936 (*StudySpec_ParameterSpec_ConditionalParameterSpec_DiscreteValueCondition)(nil), // 27: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition 2937 (*StudySpec_ParameterSpec_ConditionalParameterSpec_IntValueCondition)(nil), // 28: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.IntValueCondition 2938 (*StudySpec_ParameterSpec_ConditionalParameterSpec_CategoricalValueCondition)(nil), // 29: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.CategoricalValueCondition 2939 (*Measurement_Metric)(nil), // 30: google.cloud.aiplatform.v1.Measurement.Metric 2940 (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp 2941 (*durationpb.Duration)(nil), // 32: google.protobuf.Duration 2942 (*structpb.Value)(nil), // 33: google.protobuf.Value 2943 (*wrapperspb.BoolValue)(nil), // 34: google.protobuf.BoolValue 2944 (*wrapperspb.Int32Value)(nil), // 35: google.protobuf.Int32Value 2945 } 2946 var file_google_cloud_aiplatform_v1_study_proto_depIdxs = []int32{ 2947 11, // 0: google.cloud.aiplatform.v1.Study.study_spec:type_name -> google.cloud.aiplatform.v1.StudySpec 2948 0, // 1: google.cloud.aiplatform.v1.Study.state:type_name -> google.cloud.aiplatform.v1.Study.State 2949 31, // 2: google.cloud.aiplatform.v1.Study.create_time:type_name -> google.protobuf.Timestamp 2950 1, // 3: google.cloud.aiplatform.v1.Trial.state:type_name -> google.cloud.aiplatform.v1.Trial.State 2951 13, // 4: google.cloud.aiplatform.v1.Trial.parameters:type_name -> google.cloud.aiplatform.v1.Trial.Parameter 2952 12, // 5: google.cloud.aiplatform.v1.Trial.final_measurement:type_name -> google.cloud.aiplatform.v1.Measurement 2953 12, // 6: google.cloud.aiplatform.v1.Trial.measurements:type_name -> google.cloud.aiplatform.v1.Measurement 2954 31, // 7: google.cloud.aiplatform.v1.Trial.start_time:type_name -> google.protobuf.Timestamp 2955 31, // 8: google.cloud.aiplatform.v1.Trial.end_time:type_name -> google.protobuf.Timestamp 2956 14, // 9: google.cloud.aiplatform.v1.Trial.web_access_uris:type_name -> google.cloud.aiplatform.v1.Trial.WebAccessUrisEntry 2957 13, // 10: google.cloud.aiplatform.v1.TrialContext.parameters:type_name -> google.cloud.aiplatform.v1.Trial.Parameter 2958 32, // 11: google.cloud.aiplatform.v1.StudyTimeConstraint.max_duration:type_name -> google.protobuf.Duration 2959 31, // 12: google.cloud.aiplatform.v1.StudyTimeConstraint.end_time:type_name -> google.protobuf.Timestamp 2960 17, // 13: google.cloud.aiplatform.v1.StudySpec.decay_curve_stopping_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.DecayCurveAutomatedStoppingSpec 2961 18, // 14: google.cloud.aiplatform.v1.StudySpec.median_automated_stopping_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.MedianAutomatedStoppingSpec 2962 19, // 15: google.cloud.aiplatform.v1.StudySpec.convex_automated_stopping_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ConvexAutomatedStoppingSpec 2963 15, // 16: google.cloud.aiplatform.v1.StudySpec.metrics:type_name -> google.cloud.aiplatform.v1.StudySpec.MetricSpec 2964 16, // 17: google.cloud.aiplatform.v1.StudySpec.parameters:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec 2965 2, // 18: google.cloud.aiplatform.v1.StudySpec.algorithm:type_name -> google.cloud.aiplatform.v1.StudySpec.Algorithm 2966 3, // 19: google.cloud.aiplatform.v1.StudySpec.observation_noise:type_name -> google.cloud.aiplatform.v1.StudySpec.ObservationNoise 2967 4, // 20: google.cloud.aiplatform.v1.StudySpec.measurement_selection_type:type_name -> google.cloud.aiplatform.v1.StudySpec.MeasurementSelectionType 2968 20, // 21: google.cloud.aiplatform.v1.StudySpec.study_stopping_config:type_name -> google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig 2969 32, // 22: google.cloud.aiplatform.v1.Measurement.elapsed_duration:type_name -> google.protobuf.Duration 2970 30, // 23: google.cloud.aiplatform.v1.Measurement.metrics:type_name -> google.cloud.aiplatform.v1.Measurement.Metric 2971 33, // 24: google.cloud.aiplatform.v1.Trial.Parameter.value:type_name -> google.protobuf.Value 2972 5, // 25: google.cloud.aiplatform.v1.StudySpec.MetricSpec.goal:type_name -> google.cloud.aiplatform.v1.StudySpec.MetricSpec.GoalType 2973 21, // 26: google.cloud.aiplatform.v1.StudySpec.MetricSpec.safety_config:type_name -> google.cloud.aiplatform.v1.StudySpec.MetricSpec.SafetyMetricConfig 2974 22, // 27: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.double_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DoubleValueSpec 2975 23, // 28: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.integer_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.IntegerValueSpec 2976 24, // 29: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.categorical_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.CategoricalValueSpec 2977 25, // 30: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.discrete_value_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.DiscreteValueSpec 2978 6, // 31: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.scale_type:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ScaleType 2979 26, // 32: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.conditional_parameter_specs:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec 2980 34, // 33: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.should_stop_asap:type_name -> google.protobuf.BoolValue 2981 10, // 34: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.minimum_runtime_constraint:type_name -> google.cloud.aiplatform.v1.StudyTimeConstraint 2982 10, // 35: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.maximum_runtime_constraint:type_name -> google.cloud.aiplatform.v1.StudyTimeConstraint 2983 35, // 36: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.min_num_trials:type_name -> google.protobuf.Int32Value 2984 35, // 37: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.max_num_trials:type_name -> google.protobuf.Int32Value 2985 35, // 38: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.max_num_trials_no_progress:type_name -> google.protobuf.Int32Value 2986 32, // 39: google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig.max_duration_no_progress:type_name -> google.protobuf.Duration 2987 27, // 40: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parent_discrete_values:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.DiscreteValueCondition 2988 28, // 41: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parent_int_values:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.IntValueCondition 2989 29, // 42: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parent_categorical_values:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.CategoricalValueCondition 2990 16, // 43: google.cloud.aiplatform.v1.StudySpec.ParameterSpec.ConditionalParameterSpec.parameter_spec:type_name -> google.cloud.aiplatform.v1.StudySpec.ParameterSpec 2991 44, // [44:44] is the sub-list for method output_type 2992 44, // [44:44] is the sub-list for method input_type 2993 44, // [44:44] is the sub-list for extension type_name 2994 44, // [44:44] is the sub-list for extension extendee 2995 0, // [0:44] is the sub-list for field type_name 2996 } 2997 2998 func init() { file_google_cloud_aiplatform_v1_study_proto_init() } 2999 func file_google_cloud_aiplatform_v1_study_proto_init() { 3000 if File_google_cloud_aiplatform_v1_study_proto != nil { 3001 return 3002 } 3003 file_google_cloud_aiplatform_v1_study_proto_msgTypes[3].OneofWrappers = []any{ 3004 (*StudyTimeConstraint_MaxDuration)(nil), 3005 (*StudyTimeConstraint_EndTime)(nil), 3006 } 3007 file_google_cloud_aiplatform_v1_study_proto_msgTypes[4].OneofWrappers = []any{ 3008 (*StudySpec_DecayCurveStoppingSpec)(nil), 3009 (*StudySpec_MedianAutomatedStoppingSpec_)(nil), 3010 (*StudySpec_ConvexAutomatedStoppingSpec_)(nil), 3011 } 3012 file_google_cloud_aiplatform_v1_study_proto_msgTypes[8].OneofWrappers = []any{} 3013 file_google_cloud_aiplatform_v1_study_proto_msgTypes[9].OneofWrappers = []any{ 3014 (*StudySpec_ParameterSpec_DoubleValueSpec_)(nil), 3015 (*StudySpec_ParameterSpec_IntegerValueSpec_)(nil), 3016 (*StudySpec_ParameterSpec_CategoricalValueSpec_)(nil), 3017 (*StudySpec_ParameterSpec_DiscreteValueSpec_)(nil), 3018 } 3019 file_google_cloud_aiplatform_v1_study_proto_msgTypes[12].OneofWrappers = []any{} 3020 file_google_cloud_aiplatform_v1_study_proto_msgTypes[14].OneofWrappers = []any{} 3021 file_google_cloud_aiplatform_v1_study_proto_msgTypes[15].OneofWrappers = []any{} 3022 file_google_cloud_aiplatform_v1_study_proto_msgTypes[16].OneofWrappers = []any{} 3023 file_google_cloud_aiplatform_v1_study_proto_msgTypes[17].OneofWrappers = []any{} 3024 file_google_cloud_aiplatform_v1_study_proto_msgTypes[18].OneofWrappers = []any{} 3025 file_google_cloud_aiplatform_v1_study_proto_msgTypes[19].OneofWrappers = []any{ 3026 (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentDiscreteValues)(nil), 3027 (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentIntValues)(nil), 3028 (*StudySpec_ParameterSpec_ConditionalParameterSpec_ParentCategoricalValues)(nil), 3029 } 3030 type x struct{} 3031 out := protoimpl.TypeBuilder{ 3032 File: protoimpl.DescBuilder{ 3033 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 3034 RawDescriptor: file_google_cloud_aiplatform_v1_study_proto_rawDesc, 3035 NumEnums: 7, 3036 NumMessages: 24, 3037 NumExtensions: 0, 3038 NumServices: 0, 3039 }, 3040 GoTypes: file_google_cloud_aiplatform_v1_study_proto_goTypes, 3041 DependencyIndexes: file_google_cloud_aiplatform_v1_study_proto_depIdxs, 3042 EnumInfos: file_google_cloud_aiplatform_v1_study_proto_enumTypes, 3043 MessageInfos: file_google_cloud_aiplatform_v1_study_proto_msgTypes, 3044 }.Build() 3045 File_google_cloud_aiplatform_v1_study_proto = out.File 3046 file_google_cloud_aiplatform_v1_study_proto_rawDesc = nil 3047 file_google_cloud_aiplatform_v1_study_proto_goTypes = nil 3048 file_google_cloud_aiplatform_v1_study_proto_depIdxs = nil 3049 }