cloud.google.com/go/aiplatform@v1.106.0/apiv1/aiplatformpb/explanation.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/explanation.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 structpb "google.golang.org/protobuf/types/known/structpb" 28 reflect "reflect" 29 sync "sync" 30 ) 31 32 const ( 33 // Verify that this generated code is sufficiently up-to-date. 34 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 35 // Verify that runtime/protoimpl is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 37 ) 38 39 // The format of the input example instances. 40 type Examples_ExampleGcsSource_DataFormat int32 41 42 const ( 43 // Format unspecified, used when unset. 44 Examples_ExampleGcsSource_DATA_FORMAT_UNSPECIFIED Examples_ExampleGcsSource_DataFormat = 0 45 // Examples are stored in JSONL files. 46 Examples_ExampleGcsSource_JSONL Examples_ExampleGcsSource_DataFormat = 1 47 ) 48 49 // Enum value maps for Examples_ExampleGcsSource_DataFormat. 50 var ( 51 Examples_ExampleGcsSource_DataFormat_name = map[int32]string{ 52 0: "DATA_FORMAT_UNSPECIFIED", 53 1: "JSONL", 54 } 55 Examples_ExampleGcsSource_DataFormat_value = map[string]int32{ 56 "DATA_FORMAT_UNSPECIFIED": 0, 57 "JSONL": 1, 58 } 59 ) 60 61 func (x Examples_ExampleGcsSource_DataFormat) Enum() *Examples_ExampleGcsSource_DataFormat { 62 p := new(Examples_ExampleGcsSource_DataFormat) 63 *p = x 64 return p 65 } 66 67 func (x Examples_ExampleGcsSource_DataFormat) String() string { 68 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 69 } 70 71 func (Examples_ExampleGcsSource_DataFormat) Descriptor() protoreflect.EnumDescriptor { 72 return file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[0].Descriptor() 73 } 74 75 func (Examples_ExampleGcsSource_DataFormat) Type() protoreflect.EnumType { 76 return &file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[0] 77 } 78 79 func (x Examples_ExampleGcsSource_DataFormat) Number() protoreflect.EnumNumber { 80 return protoreflect.EnumNumber(x) 81 } 82 83 // Deprecated: Use Examples_ExampleGcsSource_DataFormat.Descriptor instead. 84 func (Examples_ExampleGcsSource_DataFormat) EnumDescriptor() ([]byte, []int) { 85 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{12, 0, 0} 86 } 87 88 // Preset option controlling parameters for query speed-precision trade-off 89 type Presets_Query int32 90 91 const ( 92 // More precise neighbors as a trade-off against slower response. 93 Presets_PRECISE Presets_Query = 0 94 // Faster response as a trade-off against less precise neighbors. 95 Presets_FAST Presets_Query = 1 96 ) 97 98 // Enum value maps for Presets_Query. 99 var ( 100 Presets_Query_name = map[int32]string{ 101 0: "PRECISE", 102 1: "FAST", 103 } 104 Presets_Query_value = map[string]int32{ 105 "PRECISE": 0, 106 "FAST": 1, 107 } 108 ) 109 110 func (x Presets_Query) Enum() *Presets_Query { 111 p := new(Presets_Query) 112 *p = x 113 return p 114 } 115 116 func (x Presets_Query) String() string { 117 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 118 } 119 120 func (Presets_Query) Descriptor() protoreflect.EnumDescriptor { 121 return file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[1].Descriptor() 122 } 123 124 func (Presets_Query) Type() protoreflect.EnumType { 125 return &file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[1] 126 } 127 128 func (x Presets_Query) Number() protoreflect.EnumNumber { 129 return protoreflect.EnumNumber(x) 130 } 131 132 // Deprecated: Use Presets_Query.Descriptor instead. 133 func (Presets_Query) EnumDescriptor() ([]byte, []int) { 134 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{13, 0} 135 } 136 137 // Preset option controlling parameters for different modalities 138 type Presets_Modality int32 139 140 const ( 141 // Should not be set. Added as a recommended best practice for enums 142 Presets_MODALITY_UNSPECIFIED Presets_Modality = 0 143 // IMAGE modality 144 Presets_IMAGE Presets_Modality = 1 145 // TEXT modality 146 Presets_TEXT Presets_Modality = 2 147 // TABULAR modality 148 Presets_TABULAR Presets_Modality = 3 149 ) 150 151 // Enum value maps for Presets_Modality. 152 var ( 153 Presets_Modality_name = map[int32]string{ 154 0: "MODALITY_UNSPECIFIED", 155 1: "IMAGE", 156 2: "TEXT", 157 3: "TABULAR", 158 } 159 Presets_Modality_value = map[string]int32{ 160 "MODALITY_UNSPECIFIED": 0, 161 "IMAGE": 1, 162 "TEXT": 2, 163 "TABULAR": 3, 164 } 165 ) 166 167 func (x Presets_Modality) Enum() *Presets_Modality { 168 p := new(Presets_Modality) 169 *p = x 170 return p 171 } 172 173 func (x Presets_Modality) String() string { 174 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 175 } 176 177 func (Presets_Modality) Descriptor() protoreflect.EnumDescriptor { 178 return file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[2].Descriptor() 179 } 180 181 func (Presets_Modality) Type() protoreflect.EnumType { 182 return &file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[2] 183 } 184 185 func (x Presets_Modality) Number() protoreflect.EnumNumber { 186 return protoreflect.EnumNumber(x) 187 } 188 189 // Deprecated: Use Presets_Modality.Descriptor instead. 190 func (Presets_Modality) EnumDescriptor() ([]byte, []int) { 191 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{13, 1} 192 } 193 194 // Data format enum. 195 type ExamplesOverride_DataFormat int32 196 197 const ( 198 // Unspecified format. Must not be used. 199 ExamplesOverride_DATA_FORMAT_UNSPECIFIED ExamplesOverride_DataFormat = 0 200 // Provided data is a set of model inputs. 201 ExamplesOverride_INSTANCES ExamplesOverride_DataFormat = 1 202 // Provided data is a set of embeddings. 203 ExamplesOverride_EMBEDDINGS ExamplesOverride_DataFormat = 2 204 ) 205 206 // Enum value maps for ExamplesOverride_DataFormat. 207 var ( 208 ExamplesOverride_DataFormat_name = map[int32]string{ 209 0: "DATA_FORMAT_UNSPECIFIED", 210 1: "INSTANCES", 211 2: "EMBEDDINGS", 212 } 213 ExamplesOverride_DataFormat_value = map[string]int32{ 214 "DATA_FORMAT_UNSPECIFIED": 0, 215 "INSTANCES": 1, 216 "EMBEDDINGS": 2, 217 } 218 ) 219 220 func (x ExamplesOverride_DataFormat) Enum() *ExamplesOverride_DataFormat { 221 p := new(ExamplesOverride_DataFormat) 222 *p = x 223 return p 224 } 225 226 func (x ExamplesOverride_DataFormat) String() string { 227 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 228 } 229 230 func (ExamplesOverride_DataFormat) Descriptor() protoreflect.EnumDescriptor { 231 return file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[3].Descriptor() 232 } 233 234 func (ExamplesOverride_DataFormat) Type() protoreflect.EnumType { 235 return &file_google_cloud_aiplatform_v1_explanation_proto_enumTypes[3] 236 } 237 238 func (x ExamplesOverride_DataFormat) Number() protoreflect.EnumNumber { 239 return protoreflect.EnumNumber(x) 240 } 241 242 // Deprecated: Use ExamplesOverride_DataFormat.Descriptor instead. 243 func (ExamplesOverride_DataFormat) EnumDescriptor() ([]byte, []int) { 244 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{16, 0} 245 } 246 247 // Explanation of a prediction (provided in 248 // [PredictResponse.predictions][google.cloud.aiplatform.v1.PredictResponse.predictions]) 249 // produced by the Model on a given 250 // [instance][google.cloud.aiplatform.v1.ExplainRequest.instances]. 251 type Explanation struct { 252 state protoimpl.MessageState 253 sizeCache protoimpl.SizeCache 254 unknownFields protoimpl.UnknownFields 255 256 // Output only. Feature attributions grouped by predicted outputs. 257 // 258 // For Models that predict only one output, such as regression Models that 259 // predict only one score, there is only one attibution that explains the 260 // predicted output. For Models that predict multiple outputs, such as 261 // multiclass Models that predict multiple classes, each element explains one 262 // specific item. 263 // [Attribution.output_index][google.cloud.aiplatform.v1.Attribution.output_index] 264 // can be used to identify which output this attribution is explaining. 265 // 266 // By default, we provide Shapley values for the predicted class. However, 267 // you can configure the explanation request to generate Shapley values for 268 // any other classes too. For example, if a model predicts a probability of 269 // `0.4` for approving a loan application, the model's decision is to reject 270 // the application since `p(reject) = 0.6 > p(approve) = 0.4`, and the default 271 // Shapley values would be computed for rejection decision and not approval, 272 // even though the latter might be the positive class. 273 // 274 // If users set 275 // [ExplanationParameters.top_k][google.cloud.aiplatform.v1.ExplanationParameters.top_k], 276 // the attributions are sorted by 277 // [instance_output_value][google.cloud.aiplatform.v1.Attribution.instance_output_value] 278 // in descending order. If 279 // [ExplanationParameters.output_indices][google.cloud.aiplatform.v1.ExplanationParameters.output_indices] 280 // is specified, the attributions are stored by 281 // [Attribution.output_index][google.cloud.aiplatform.v1.Attribution.output_index] 282 // in the same order as they appear in the output_indices. 283 Attributions []*Attribution `protobuf:"bytes,1,rep,name=attributions,proto3" json:"attributions,omitempty"` 284 // Output only. List of the nearest neighbors for example-based explanations. 285 // 286 // For models deployed with the examples explanations feature enabled, the 287 // attributions field is empty and instead the neighbors field is populated. 288 Neighbors []*Neighbor `protobuf:"bytes,2,rep,name=neighbors,proto3" json:"neighbors,omitempty"` 289 } 290 291 func (x *Explanation) Reset() { 292 *x = Explanation{} 293 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[0] 294 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 295 ms.StoreMessageInfo(mi) 296 } 297 298 func (x *Explanation) String() string { 299 return protoimpl.X.MessageStringOf(x) 300 } 301 302 func (*Explanation) ProtoMessage() {} 303 304 func (x *Explanation) ProtoReflect() protoreflect.Message { 305 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[0] 306 if x != nil { 307 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 308 if ms.LoadMessageInfo() == nil { 309 ms.StoreMessageInfo(mi) 310 } 311 return ms 312 } 313 return mi.MessageOf(x) 314 } 315 316 // Deprecated: Use Explanation.ProtoReflect.Descriptor instead. 317 func (*Explanation) Descriptor() ([]byte, []int) { 318 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{0} 319 } 320 321 func (x *Explanation) GetAttributions() []*Attribution { 322 if x != nil { 323 return x.Attributions 324 } 325 return nil 326 } 327 328 func (x *Explanation) GetNeighbors() []*Neighbor { 329 if x != nil { 330 return x.Neighbors 331 } 332 return nil 333 } 334 335 // Aggregated explanation metrics for a Model over a set of instances. 336 type ModelExplanation struct { 337 state protoimpl.MessageState 338 sizeCache protoimpl.SizeCache 339 unknownFields protoimpl.UnknownFields 340 341 // Output only. Aggregated attributions explaining the Model's prediction 342 // outputs over the set of instances. The attributions are grouped by outputs. 343 // 344 // For Models that predict only one output, such as regression Models that 345 // predict only one score, there is only one attibution that explains the 346 // predicted output. For Models that predict multiple outputs, such as 347 // multiclass Models that predict multiple classes, each element explains one 348 // specific item. 349 // [Attribution.output_index][google.cloud.aiplatform.v1.Attribution.output_index] 350 // can be used to identify which output this attribution is explaining. 351 // 352 // The 353 // [baselineOutputValue][google.cloud.aiplatform.v1.Attribution.baseline_output_value], 354 // [instanceOutputValue][google.cloud.aiplatform.v1.Attribution.instance_output_value] 355 // and 356 // [featureAttributions][google.cloud.aiplatform.v1.Attribution.feature_attributions] 357 // fields are averaged over the test data. 358 // 359 // NOTE: Currently AutoML tabular classification Models produce only one 360 // attribution, which averages attributions over all the classes it predicts. 361 // [Attribution.approximation_error][google.cloud.aiplatform.v1.Attribution.approximation_error] 362 // is not populated. 363 MeanAttributions []*Attribution `protobuf:"bytes,1,rep,name=mean_attributions,json=meanAttributions,proto3" json:"mean_attributions,omitempty"` 364 } 365 366 func (x *ModelExplanation) Reset() { 367 *x = ModelExplanation{} 368 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[1] 369 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 370 ms.StoreMessageInfo(mi) 371 } 372 373 func (x *ModelExplanation) String() string { 374 return protoimpl.X.MessageStringOf(x) 375 } 376 377 func (*ModelExplanation) ProtoMessage() {} 378 379 func (x *ModelExplanation) ProtoReflect() protoreflect.Message { 380 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[1] 381 if x != nil { 382 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 383 if ms.LoadMessageInfo() == nil { 384 ms.StoreMessageInfo(mi) 385 } 386 return ms 387 } 388 return mi.MessageOf(x) 389 } 390 391 // Deprecated: Use ModelExplanation.ProtoReflect.Descriptor instead. 392 func (*ModelExplanation) Descriptor() ([]byte, []int) { 393 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{1} 394 } 395 396 func (x *ModelExplanation) GetMeanAttributions() []*Attribution { 397 if x != nil { 398 return x.MeanAttributions 399 } 400 return nil 401 } 402 403 // Attribution that explains a particular prediction output. 404 type Attribution struct { 405 state protoimpl.MessageState 406 sizeCache protoimpl.SizeCache 407 unknownFields protoimpl.UnknownFields 408 409 // Output only. Model predicted output if the input instance is constructed 410 // from the baselines of all the features defined in 411 // [ExplanationMetadata.inputs][google.cloud.aiplatform.v1.ExplanationMetadata.inputs]. 412 // The field name of the output is determined by the key in 413 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1.ExplanationMetadata.outputs]. 414 // 415 // If the Model's predicted output has multiple dimensions (rank > 1), this is 416 // the value in the output located by 417 // [output_index][google.cloud.aiplatform.v1.Attribution.output_index]. 418 // 419 // If there are multiple baselines, their output values are averaged. 420 BaselineOutputValue float64 `protobuf:"fixed64,1,opt,name=baseline_output_value,json=baselineOutputValue,proto3" json:"baseline_output_value,omitempty"` 421 // Output only. Model predicted output on the corresponding [explanation 422 // instance][ExplainRequest.instances]. The field name of the output is 423 // determined by the key in 424 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1.ExplanationMetadata.outputs]. 425 // 426 // If the Model predicted output has multiple dimensions, this is the value in 427 // the output located by 428 // [output_index][google.cloud.aiplatform.v1.Attribution.output_index]. 429 InstanceOutputValue float64 `protobuf:"fixed64,2,opt,name=instance_output_value,json=instanceOutputValue,proto3" json:"instance_output_value,omitempty"` 430 // Output only. Attributions of each explained feature. Features are extracted 431 // from the [prediction 432 // instances][google.cloud.aiplatform.v1.ExplainRequest.instances] according 433 // to [explanation metadata for 434 // inputs][google.cloud.aiplatform.v1.ExplanationMetadata.inputs]. 435 // 436 // The value is a struct, whose keys are the name of the feature. The values 437 // are how much the feature in the 438 // [instance][google.cloud.aiplatform.v1.ExplainRequest.instances] contributed 439 // to the predicted result. 440 // 441 // The format of the value is determined by the feature's input format: 442 // 443 // - If the feature is a scalar value, the attribution value is a 444 // [floating number][google.protobuf.Value.number_value]. 445 // 446 // - If the feature is an array of scalar values, the attribution value is 447 // an [array][google.protobuf.Value.list_value]. 448 // 449 // - If the feature is a struct, the attribution value is a 450 // [struct][google.protobuf.Value.struct_value]. The keys in the 451 // attribution value struct are the same as the keys in the feature 452 // struct. The formats of the values in the attribution struct are 453 // determined by the formats of the values in the feature struct. 454 // 455 // The 456 // [ExplanationMetadata.feature_attributions_schema_uri][google.cloud.aiplatform.v1.ExplanationMetadata.feature_attributions_schema_uri] 457 // field, pointed to by the 458 // [ExplanationSpec][google.cloud.aiplatform.v1.ExplanationSpec] field of the 459 // [Endpoint.deployed_models][google.cloud.aiplatform.v1.Endpoint.deployed_models] 460 // object, points to the schema file that describes the features and their 461 // attribution values (if it is populated). 462 FeatureAttributions *structpb.Value `protobuf:"bytes,3,opt,name=feature_attributions,json=featureAttributions,proto3" json:"feature_attributions,omitempty"` 463 // Output only. The index that locates the explained prediction output. 464 // 465 // If the prediction output is a scalar value, output_index is not populated. 466 // If the prediction output has multiple dimensions, the length of the 467 // output_index list is the same as the number of dimensions of the output. 468 // The i-th element in output_index is the element index of the i-th dimension 469 // of the output vector. Indices start from 0. 470 OutputIndex []int32 `protobuf:"varint,4,rep,packed,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` 471 // Output only. The display name of the output identified by 472 // [output_index][google.cloud.aiplatform.v1.Attribution.output_index]. For 473 // example, the predicted class name by a multi-classification Model. 474 // 475 // This field is only populated iff the Model predicts display names as a 476 // separate field along with the explained output. The predicted display name 477 // must has the same shape of the explained output, and can be located using 478 // output_index. 479 OutputDisplayName string `protobuf:"bytes,5,opt,name=output_display_name,json=outputDisplayName,proto3" json:"output_display_name,omitempty"` 480 // Output only. Error of 481 // [feature_attributions][google.cloud.aiplatform.v1.Attribution.feature_attributions] 482 // caused by approximation used in the explanation method. Lower value means 483 // more precise attributions. 484 // 485 // * For Sampled Shapley 486 // [attribution][google.cloud.aiplatform.v1.ExplanationParameters.sampled_shapley_attribution], 487 // increasing 488 // [path_count][google.cloud.aiplatform.v1.SampledShapleyAttribution.path_count] 489 // might reduce the error. 490 // * For Integrated Gradients 491 // [attribution][google.cloud.aiplatform.v1.ExplanationParameters.integrated_gradients_attribution], 492 // increasing 493 // [step_count][google.cloud.aiplatform.v1.IntegratedGradientsAttribution.step_count] 494 // might reduce the error. 495 // * For [XRAI 496 // attribution][google.cloud.aiplatform.v1.ExplanationParameters.xrai_attribution], 497 // increasing 498 // [step_count][google.cloud.aiplatform.v1.XraiAttribution.step_count] might 499 // reduce the error. 500 // 501 // See [this introduction](/vertex-ai/docs/explainable-ai/overview) 502 // for more information. 503 ApproximationError float64 `protobuf:"fixed64,6,opt,name=approximation_error,json=approximationError,proto3" json:"approximation_error,omitempty"` 504 // Output only. Name of the explain output. Specified as the key in 505 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1.ExplanationMetadata.outputs]. 506 OutputName string `protobuf:"bytes,7,opt,name=output_name,json=outputName,proto3" json:"output_name,omitempty"` 507 } 508 509 func (x *Attribution) Reset() { 510 *x = Attribution{} 511 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[2] 512 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 513 ms.StoreMessageInfo(mi) 514 } 515 516 func (x *Attribution) String() string { 517 return protoimpl.X.MessageStringOf(x) 518 } 519 520 func (*Attribution) ProtoMessage() {} 521 522 func (x *Attribution) ProtoReflect() protoreflect.Message { 523 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[2] 524 if x != nil { 525 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 526 if ms.LoadMessageInfo() == nil { 527 ms.StoreMessageInfo(mi) 528 } 529 return ms 530 } 531 return mi.MessageOf(x) 532 } 533 534 // Deprecated: Use Attribution.ProtoReflect.Descriptor instead. 535 func (*Attribution) Descriptor() ([]byte, []int) { 536 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{2} 537 } 538 539 func (x *Attribution) GetBaselineOutputValue() float64 { 540 if x != nil { 541 return x.BaselineOutputValue 542 } 543 return 0 544 } 545 546 func (x *Attribution) GetInstanceOutputValue() float64 { 547 if x != nil { 548 return x.InstanceOutputValue 549 } 550 return 0 551 } 552 553 func (x *Attribution) GetFeatureAttributions() *structpb.Value { 554 if x != nil { 555 return x.FeatureAttributions 556 } 557 return nil 558 } 559 560 func (x *Attribution) GetOutputIndex() []int32 { 561 if x != nil { 562 return x.OutputIndex 563 } 564 return nil 565 } 566 567 func (x *Attribution) GetOutputDisplayName() string { 568 if x != nil { 569 return x.OutputDisplayName 570 } 571 return "" 572 } 573 574 func (x *Attribution) GetApproximationError() float64 { 575 if x != nil { 576 return x.ApproximationError 577 } 578 return 0 579 } 580 581 func (x *Attribution) GetOutputName() string { 582 if x != nil { 583 return x.OutputName 584 } 585 return "" 586 } 587 588 // Neighbors for example-based explanations. 589 type Neighbor struct { 590 state protoimpl.MessageState 591 sizeCache protoimpl.SizeCache 592 unknownFields protoimpl.UnknownFields 593 594 // Output only. The neighbor id. 595 NeighborId string `protobuf:"bytes,1,opt,name=neighbor_id,json=neighborId,proto3" json:"neighbor_id,omitempty"` 596 // Output only. The neighbor distance. 597 NeighborDistance float64 `protobuf:"fixed64,2,opt,name=neighbor_distance,json=neighborDistance,proto3" json:"neighbor_distance,omitempty"` 598 } 599 600 func (x *Neighbor) Reset() { 601 *x = Neighbor{} 602 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[3] 603 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 604 ms.StoreMessageInfo(mi) 605 } 606 607 func (x *Neighbor) String() string { 608 return protoimpl.X.MessageStringOf(x) 609 } 610 611 func (*Neighbor) ProtoMessage() {} 612 613 func (x *Neighbor) ProtoReflect() protoreflect.Message { 614 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[3] 615 if x != nil { 616 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 617 if ms.LoadMessageInfo() == nil { 618 ms.StoreMessageInfo(mi) 619 } 620 return ms 621 } 622 return mi.MessageOf(x) 623 } 624 625 // Deprecated: Use Neighbor.ProtoReflect.Descriptor instead. 626 func (*Neighbor) Descriptor() ([]byte, []int) { 627 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{3} 628 } 629 630 func (x *Neighbor) GetNeighborId() string { 631 if x != nil { 632 return x.NeighborId 633 } 634 return "" 635 } 636 637 func (x *Neighbor) GetNeighborDistance() float64 { 638 if x != nil { 639 return x.NeighborDistance 640 } 641 return 0 642 } 643 644 // Specification of Model explanation. 645 type ExplanationSpec struct { 646 state protoimpl.MessageState 647 sizeCache protoimpl.SizeCache 648 unknownFields protoimpl.UnknownFields 649 650 // Required. Parameters that configure explaining of the Model's predictions. 651 Parameters *ExplanationParameters `protobuf:"bytes,1,opt,name=parameters,proto3" json:"parameters,omitempty"` 652 // Optional. Metadata describing the Model's input and output for explanation. 653 Metadata *ExplanationMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 654 } 655 656 func (x *ExplanationSpec) Reset() { 657 *x = ExplanationSpec{} 658 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[4] 659 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 660 ms.StoreMessageInfo(mi) 661 } 662 663 func (x *ExplanationSpec) String() string { 664 return protoimpl.X.MessageStringOf(x) 665 } 666 667 func (*ExplanationSpec) ProtoMessage() {} 668 669 func (x *ExplanationSpec) ProtoReflect() protoreflect.Message { 670 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[4] 671 if x != nil { 672 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 673 if ms.LoadMessageInfo() == nil { 674 ms.StoreMessageInfo(mi) 675 } 676 return ms 677 } 678 return mi.MessageOf(x) 679 } 680 681 // Deprecated: Use ExplanationSpec.ProtoReflect.Descriptor instead. 682 func (*ExplanationSpec) Descriptor() ([]byte, []int) { 683 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{4} 684 } 685 686 func (x *ExplanationSpec) GetParameters() *ExplanationParameters { 687 if x != nil { 688 return x.Parameters 689 } 690 return nil 691 } 692 693 func (x *ExplanationSpec) GetMetadata() *ExplanationMetadata { 694 if x != nil { 695 return x.Metadata 696 } 697 return nil 698 } 699 700 // Parameters to configure explaining for Model's predictions. 701 type ExplanationParameters struct { 702 state protoimpl.MessageState 703 sizeCache protoimpl.SizeCache 704 unknownFields protoimpl.UnknownFields 705 706 // Types that are assignable to Method: 707 // 708 // *ExplanationParameters_SampledShapleyAttribution 709 // *ExplanationParameters_IntegratedGradientsAttribution 710 // *ExplanationParameters_XraiAttribution 711 // *ExplanationParameters_Examples 712 Method isExplanationParameters_Method `protobuf_oneof:"method"` 713 // If populated, returns attributions for top K indices of outputs 714 // (defaults to 1). Only applies to Models that predicts more than one outputs 715 // (e,g, multi-class Models). When set to -1, returns explanations for all 716 // outputs. 717 TopK int32 `protobuf:"varint,4,opt,name=top_k,json=topK,proto3" json:"top_k,omitempty"` 718 // If populated, only returns attributions that have 719 // [output_index][google.cloud.aiplatform.v1.Attribution.output_index] 720 // contained in output_indices. It must be an ndarray of integers, with the 721 // same shape of the output it's explaining. 722 // 723 // If not populated, returns attributions for 724 // [top_k][google.cloud.aiplatform.v1.ExplanationParameters.top_k] indices of 725 // outputs. If neither top_k nor output_indices is populated, returns the 726 // argmax index of the outputs. 727 // 728 // Only applicable to Models that predict multiple outputs (e,g, multi-class 729 // Models that predict multiple classes). 730 OutputIndices *structpb.ListValue `protobuf:"bytes,5,opt,name=output_indices,json=outputIndices,proto3" json:"output_indices,omitempty"` 731 } 732 733 func (x *ExplanationParameters) Reset() { 734 *x = ExplanationParameters{} 735 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[5] 736 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 737 ms.StoreMessageInfo(mi) 738 } 739 740 func (x *ExplanationParameters) String() string { 741 return protoimpl.X.MessageStringOf(x) 742 } 743 744 func (*ExplanationParameters) ProtoMessage() {} 745 746 func (x *ExplanationParameters) ProtoReflect() protoreflect.Message { 747 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[5] 748 if x != nil { 749 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 750 if ms.LoadMessageInfo() == nil { 751 ms.StoreMessageInfo(mi) 752 } 753 return ms 754 } 755 return mi.MessageOf(x) 756 } 757 758 // Deprecated: Use ExplanationParameters.ProtoReflect.Descriptor instead. 759 func (*ExplanationParameters) Descriptor() ([]byte, []int) { 760 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{5} 761 } 762 763 func (m *ExplanationParameters) GetMethod() isExplanationParameters_Method { 764 if m != nil { 765 return m.Method 766 } 767 return nil 768 } 769 770 func (x *ExplanationParameters) GetSampledShapleyAttribution() *SampledShapleyAttribution { 771 if x, ok := x.GetMethod().(*ExplanationParameters_SampledShapleyAttribution); ok { 772 return x.SampledShapleyAttribution 773 } 774 return nil 775 } 776 777 func (x *ExplanationParameters) GetIntegratedGradientsAttribution() *IntegratedGradientsAttribution { 778 if x, ok := x.GetMethod().(*ExplanationParameters_IntegratedGradientsAttribution); ok { 779 return x.IntegratedGradientsAttribution 780 } 781 return nil 782 } 783 784 func (x *ExplanationParameters) GetXraiAttribution() *XraiAttribution { 785 if x, ok := x.GetMethod().(*ExplanationParameters_XraiAttribution); ok { 786 return x.XraiAttribution 787 } 788 return nil 789 } 790 791 func (x *ExplanationParameters) GetExamples() *Examples { 792 if x, ok := x.GetMethod().(*ExplanationParameters_Examples); ok { 793 return x.Examples 794 } 795 return nil 796 } 797 798 func (x *ExplanationParameters) GetTopK() int32 { 799 if x != nil { 800 return x.TopK 801 } 802 return 0 803 } 804 805 func (x *ExplanationParameters) GetOutputIndices() *structpb.ListValue { 806 if x != nil { 807 return x.OutputIndices 808 } 809 return nil 810 } 811 812 type isExplanationParameters_Method interface { 813 isExplanationParameters_Method() 814 } 815 816 type ExplanationParameters_SampledShapleyAttribution struct { 817 // An attribution method that approximates Shapley values for features that 818 // contribute to the label being predicted. A sampling strategy is used to 819 // approximate the value rather than considering all subsets of features. 820 // Refer to this paper for model details: https://arxiv.org/abs/1306.4265. 821 SampledShapleyAttribution *SampledShapleyAttribution `protobuf:"bytes,1,opt,name=sampled_shapley_attribution,json=sampledShapleyAttribution,proto3,oneof"` 822 } 823 824 type ExplanationParameters_IntegratedGradientsAttribution struct { 825 // An attribution method that computes Aumann-Shapley values taking 826 // advantage of the model's fully differentiable structure. Refer to this 827 // paper for more details: https://arxiv.org/abs/1703.01365 828 IntegratedGradientsAttribution *IntegratedGradientsAttribution `protobuf:"bytes,2,opt,name=integrated_gradients_attribution,json=integratedGradientsAttribution,proto3,oneof"` 829 } 830 831 type ExplanationParameters_XraiAttribution struct { 832 // An attribution method that redistributes Integrated Gradients 833 // attribution to segmented regions, taking advantage of the model's fully 834 // differentiable structure. Refer to this paper for 835 // more details: https://arxiv.org/abs/1906.02825 836 // 837 // XRAI currently performs better on natural images, like a picture of a 838 // house or an animal. If the images are taken in artificial environments, 839 // like a lab or manufacturing line, or from diagnostic equipment, like 840 // x-rays or quality-control cameras, use Integrated Gradients instead. 841 XraiAttribution *XraiAttribution `protobuf:"bytes,3,opt,name=xrai_attribution,json=xraiAttribution,proto3,oneof"` 842 } 843 844 type ExplanationParameters_Examples struct { 845 // Example-based explanations that returns the nearest neighbors from the 846 // provided dataset. 847 Examples *Examples `protobuf:"bytes,7,opt,name=examples,proto3,oneof"` 848 } 849 850 func (*ExplanationParameters_SampledShapleyAttribution) isExplanationParameters_Method() {} 851 852 func (*ExplanationParameters_IntegratedGradientsAttribution) isExplanationParameters_Method() {} 853 854 func (*ExplanationParameters_XraiAttribution) isExplanationParameters_Method() {} 855 856 func (*ExplanationParameters_Examples) isExplanationParameters_Method() {} 857 858 // An attribution method that approximates Shapley values for features that 859 // contribute to the label being predicted. A sampling strategy is used to 860 // approximate the value rather than considering all subsets of features. 861 type SampledShapleyAttribution struct { 862 state protoimpl.MessageState 863 sizeCache protoimpl.SizeCache 864 unknownFields protoimpl.UnknownFields 865 866 // Required. The number of feature permutations to consider when approximating 867 // the Shapley values. 868 // 869 // Valid range of its value is [1, 50], inclusively. 870 PathCount int32 `protobuf:"varint,1,opt,name=path_count,json=pathCount,proto3" json:"path_count,omitempty"` 871 } 872 873 func (x *SampledShapleyAttribution) Reset() { 874 *x = SampledShapleyAttribution{} 875 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[6] 876 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 877 ms.StoreMessageInfo(mi) 878 } 879 880 func (x *SampledShapleyAttribution) String() string { 881 return protoimpl.X.MessageStringOf(x) 882 } 883 884 func (*SampledShapleyAttribution) ProtoMessage() {} 885 886 func (x *SampledShapleyAttribution) ProtoReflect() protoreflect.Message { 887 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[6] 888 if x != nil { 889 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 890 if ms.LoadMessageInfo() == nil { 891 ms.StoreMessageInfo(mi) 892 } 893 return ms 894 } 895 return mi.MessageOf(x) 896 } 897 898 // Deprecated: Use SampledShapleyAttribution.ProtoReflect.Descriptor instead. 899 func (*SampledShapleyAttribution) Descriptor() ([]byte, []int) { 900 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{6} 901 } 902 903 func (x *SampledShapleyAttribution) GetPathCount() int32 { 904 if x != nil { 905 return x.PathCount 906 } 907 return 0 908 } 909 910 // An attribution method that computes the Aumann-Shapley value taking advantage 911 // of the model's fully differentiable structure. Refer to this paper for 912 // more details: https://arxiv.org/abs/1703.01365 913 type IntegratedGradientsAttribution struct { 914 state protoimpl.MessageState 915 sizeCache protoimpl.SizeCache 916 unknownFields protoimpl.UnknownFields 917 918 // Required. The number of steps for approximating the path integral. 919 // A good value to start is 50 and gradually increase until the 920 // sum to diff property is within the desired error range. 921 // 922 // Valid range of its value is [1, 100], inclusively. 923 StepCount int32 `protobuf:"varint,1,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 924 // Config for SmoothGrad approximation of gradients. 925 // 926 // When enabled, the gradients are approximated by averaging the gradients 927 // from noisy samples in the vicinity of the inputs. Adding 928 // noise can help improve the computed gradients. Refer to this paper for more 929 // details: https://arxiv.org/pdf/1706.03825.pdf 930 SmoothGradConfig *SmoothGradConfig `protobuf:"bytes,2,opt,name=smooth_grad_config,json=smoothGradConfig,proto3" json:"smooth_grad_config,omitempty"` 931 // Config for IG with blur baseline. 932 // 933 // When enabled, a linear path from the maximally blurred image to the input 934 // image is created. Using a blurred baseline instead of zero (black image) is 935 // motivated by the BlurIG approach explained here: 936 // https://arxiv.org/abs/2004.03383 937 BlurBaselineConfig *BlurBaselineConfig `protobuf:"bytes,3,opt,name=blur_baseline_config,json=blurBaselineConfig,proto3" json:"blur_baseline_config,omitempty"` 938 } 939 940 func (x *IntegratedGradientsAttribution) Reset() { 941 *x = IntegratedGradientsAttribution{} 942 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[7] 943 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 944 ms.StoreMessageInfo(mi) 945 } 946 947 func (x *IntegratedGradientsAttribution) String() string { 948 return protoimpl.X.MessageStringOf(x) 949 } 950 951 func (*IntegratedGradientsAttribution) ProtoMessage() {} 952 953 func (x *IntegratedGradientsAttribution) ProtoReflect() protoreflect.Message { 954 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[7] 955 if x != nil { 956 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 957 if ms.LoadMessageInfo() == nil { 958 ms.StoreMessageInfo(mi) 959 } 960 return ms 961 } 962 return mi.MessageOf(x) 963 } 964 965 // Deprecated: Use IntegratedGradientsAttribution.ProtoReflect.Descriptor instead. 966 func (*IntegratedGradientsAttribution) Descriptor() ([]byte, []int) { 967 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{7} 968 } 969 970 func (x *IntegratedGradientsAttribution) GetStepCount() int32 { 971 if x != nil { 972 return x.StepCount 973 } 974 return 0 975 } 976 977 func (x *IntegratedGradientsAttribution) GetSmoothGradConfig() *SmoothGradConfig { 978 if x != nil { 979 return x.SmoothGradConfig 980 } 981 return nil 982 } 983 984 func (x *IntegratedGradientsAttribution) GetBlurBaselineConfig() *BlurBaselineConfig { 985 if x != nil { 986 return x.BlurBaselineConfig 987 } 988 return nil 989 } 990 991 // An explanation method that redistributes Integrated Gradients 992 // attributions to segmented regions, taking advantage of the model's fully 993 // differentiable structure. Refer to this paper for more details: 994 // https://arxiv.org/abs/1906.02825 995 // 996 // Supported only by image Models. 997 type XraiAttribution struct { 998 state protoimpl.MessageState 999 sizeCache protoimpl.SizeCache 1000 unknownFields protoimpl.UnknownFields 1001 1002 // Required. The number of steps for approximating the path integral. 1003 // A good value to start is 50 and gradually increase until the 1004 // sum to diff property is met within the desired error range. 1005 // 1006 // Valid range of its value is [1, 100], inclusively. 1007 StepCount int32 `protobuf:"varint,1,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 1008 // Config for SmoothGrad approximation of gradients. 1009 // 1010 // When enabled, the gradients are approximated by averaging the gradients 1011 // from noisy samples in the vicinity of the inputs. Adding 1012 // noise can help improve the computed gradients. Refer to this paper for more 1013 // details: https://arxiv.org/pdf/1706.03825.pdf 1014 SmoothGradConfig *SmoothGradConfig `protobuf:"bytes,2,opt,name=smooth_grad_config,json=smoothGradConfig,proto3" json:"smooth_grad_config,omitempty"` 1015 // Config for XRAI with blur baseline. 1016 // 1017 // When enabled, a linear path from the maximally blurred image to the input 1018 // image is created. Using a blurred baseline instead of zero (black image) is 1019 // motivated by the BlurIG approach explained here: 1020 // https://arxiv.org/abs/2004.03383 1021 BlurBaselineConfig *BlurBaselineConfig `protobuf:"bytes,3,opt,name=blur_baseline_config,json=blurBaselineConfig,proto3" json:"blur_baseline_config,omitempty"` 1022 } 1023 1024 func (x *XraiAttribution) Reset() { 1025 *x = XraiAttribution{} 1026 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[8] 1027 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1028 ms.StoreMessageInfo(mi) 1029 } 1030 1031 func (x *XraiAttribution) String() string { 1032 return protoimpl.X.MessageStringOf(x) 1033 } 1034 1035 func (*XraiAttribution) ProtoMessage() {} 1036 1037 func (x *XraiAttribution) ProtoReflect() protoreflect.Message { 1038 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[8] 1039 if x != nil { 1040 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1041 if ms.LoadMessageInfo() == nil { 1042 ms.StoreMessageInfo(mi) 1043 } 1044 return ms 1045 } 1046 return mi.MessageOf(x) 1047 } 1048 1049 // Deprecated: Use XraiAttribution.ProtoReflect.Descriptor instead. 1050 func (*XraiAttribution) Descriptor() ([]byte, []int) { 1051 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{8} 1052 } 1053 1054 func (x *XraiAttribution) GetStepCount() int32 { 1055 if x != nil { 1056 return x.StepCount 1057 } 1058 return 0 1059 } 1060 1061 func (x *XraiAttribution) GetSmoothGradConfig() *SmoothGradConfig { 1062 if x != nil { 1063 return x.SmoothGradConfig 1064 } 1065 return nil 1066 } 1067 1068 func (x *XraiAttribution) GetBlurBaselineConfig() *BlurBaselineConfig { 1069 if x != nil { 1070 return x.BlurBaselineConfig 1071 } 1072 return nil 1073 } 1074 1075 // Config for SmoothGrad approximation of gradients. 1076 // 1077 // When enabled, the gradients are approximated by averaging the gradients from 1078 // noisy samples in the vicinity of the inputs. Adding noise can help improve 1079 // the computed gradients. Refer to this paper for more details: 1080 // https://arxiv.org/pdf/1706.03825.pdf 1081 type SmoothGradConfig struct { 1082 state protoimpl.MessageState 1083 sizeCache protoimpl.SizeCache 1084 unknownFields protoimpl.UnknownFields 1085 1086 // Represents the standard deviation of the gaussian kernel 1087 // that will be used to add noise to the interpolated inputs 1088 // prior to computing gradients. 1089 // 1090 // Types that are assignable to GradientNoiseSigma: 1091 // 1092 // *SmoothGradConfig_NoiseSigma 1093 // *SmoothGradConfig_FeatureNoiseSigma 1094 GradientNoiseSigma isSmoothGradConfig_GradientNoiseSigma `protobuf_oneof:"GradientNoiseSigma"` 1095 // The number of gradient samples to use for 1096 // approximation. The higher this number, the more accurate the gradient 1097 // is, but the runtime complexity increases by this factor as well. 1098 // Valid range of its value is [1, 50]. Defaults to 3. 1099 NoisySampleCount int32 `protobuf:"varint,3,opt,name=noisy_sample_count,json=noisySampleCount,proto3" json:"noisy_sample_count,omitempty"` 1100 } 1101 1102 func (x *SmoothGradConfig) Reset() { 1103 *x = SmoothGradConfig{} 1104 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[9] 1105 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1106 ms.StoreMessageInfo(mi) 1107 } 1108 1109 func (x *SmoothGradConfig) String() string { 1110 return protoimpl.X.MessageStringOf(x) 1111 } 1112 1113 func (*SmoothGradConfig) ProtoMessage() {} 1114 1115 func (x *SmoothGradConfig) ProtoReflect() protoreflect.Message { 1116 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[9] 1117 if x != nil { 1118 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1119 if ms.LoadMessageInfo() == nil { 1120 ms.StoreMessageInfo(mi) 1121 } 1122 return ms 1123 } 1124 return mi.MessageOf(x) 1125 } 1126 1127 // Deprecated: Use SmoothGradConfig.ProtoReflect.Descriptor instead. 1128 func (*SmoothGradConfig) Descriptor() ([]byte, []int) { 1129 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{9} 1130 } 1131 1132 func (m *SmoothGradConfig) GetGradientNoiseSigma() isSmoothGradConfig_GradientNoiseSigma { 1133 if m != nil { 1134 return m.GradientNoiseSigma 1135 } 1136 return nil 1137 } 1138 1139 func (x *SmoothGradConfig) GetNoiseSigma() float32 { 1140 if x, ok := x.GetGradientNoiseSigma().(*SmoothGradConfig_NoiseSigma); ok { 1141 return x.NoiseSigma 1142 } 1143 return 0 1144 } 1145 1146 func (x *SmoothGradConfig) GetFeatureNoiseSigma() *FeatureNoiseSigma { 1147 if x, ok := x.GetGradientNoiseSigma().(*SmoothGradConfig_FeatureNoiseSigma); ok { 1148 return x.FeatureNoiseSigma 1149 } 1150 return nil 1151 } 1152 1153 func (x *SmoothGradConfig) GetNoisySampleCount() int32 { 1154 if x != nil { 1155 return x.NoisySampleCount 1156 } 1157 return 0 1158 } 1159 1160 type isSmoothGradConfig_GradientNoiseSigma interface { 1161 isSmoothGradConfig_GradientNoiseSigma() 1162 } 1163 1164 type SmoothGradConfig_NoiseSigma struct { 1165 // This is a single float value and will be used to add noise to all the 1166 // features. Use this field when all features are normalized to have the 1167 // same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where 1168 // features are normalized to have 0-mean and 1-variance. Learn more about 1169 // [normalization](https://developers.google.com/machine-learning/data-prep/transform/normalization). 1170 // 1171 // For best results the recommended value is about 10% - 20% of the standard 1172 // deviation of the input feature. Refer to section 3.2 of the SmoothGrad 1173 // paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. 1174 // 1175 // If the distribution is different per feature, set 1176 // [feature_noise_sigma][google.cloud.aiplatform.v1.SmoothGradConfig.feature_noise_sigma] 1177 // instead for each feature. 1178 NoiseSigma float32 `protobuf:"fixed32,1,opt,name=noise_sigma,json=noiseSigma,proto3,oneof"` 1179 } 1180 1181 type SmoothGradConfig_FeatureNoiseSigma struct { 1182 // This is similar to 1183 // [noise_sigma][google.cloud.aiplatform.v1.SmoothGradConfig.noise_sigma], 1184 // but provides additional flexibility. A separate noise sigma can be 1185 // provided for each feature, which is useful if their distributions are 1186 // different. No noise is added to features that are not set. If this field 1187 // is unset, 1188 // [noise_sigma][google.cloud.aiplatform.v1.SmoothGradConfig.noise_sigma] 1189 // will be used for all features. 1190 FeatureNoiseSigma *FeatureNoiseSigma `protobuf:"bytes,2,opt,name=feature_noise_sigma,json=featureNoiseSigma,proto3,oneof"` 1191 } 1192 1193 func (*SmoothGradConfig_NoiseSigma) isSmoothGradConfig_GradientNoiseSigma() {} 1194 1195 func (*SmoothGradConfig_FeatureNoiseSigma) isSmoothGradConfig_GradientNoiseSigma() {} 1196 1197 // Noise sigma by features. Noise sigma represents the standard deviation of the 1198 // gaussian kernel that will be used to add noise to interpolated inputs prior 1199 // to computing gradients. 1200 type FeatureNoiseSigma struct { 1201 state protoimpl.MessageState 1202 sizeCache protoimpl.SizeCache 1203 unknownFields protoimpl.UnknownFields 1204 1205 // Noise sigma per feature. No noise is added to features that are not set. 1206 NoiseSigma []*FeatureNoiseSigma_NoiseSigmaForFeature `protobuf:"bytes,1,rep,name=noise_sigma,json=noiseSigma,proto3" json:"noise_sigma,omitempty"` 1207 } 1208 1209 func (x *FeatureNoiseSigma) Reset() { 1210 *x = FeatureNoiseSigma{} 1211 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[10] 1212 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1213 ms.StoreMessageInfo(mi) 1214 } 1215 1216 func (x *FeatureNoiseSigma) String() string { 1217 return protoimpl.X.MessageStringOf(x) 1218 } 1219 1220 func (*FeatureNoiseSigma) ProtoMessage() {} 1221 1222 func (x *FeatureNoiseSigma) ProtoReflect() protoreflect.Message { 1223 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[10] 1224 if x != nil { 1225 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1226 if ms.LoadMessageInfo() == nil { 1227 ms.StoreMessageInfo(mi) 1228 } 1229 return ms 1230 } 1231 return mi.MessageOf(x) 1232 } 1233 1234 // Deprecated: Use FeatureNoiseSigma.ProtoReflect.Descriptor instead. 1235 func (*FeatureNoiseSigma) Descriptor() ([]byte, []int) { 1236 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{10} 1237 } 1238 1239 func (x *FeatureNoiseSigma) GetNoiseSigma() []*FeatureNoiseSigma_NoiseSigmaForFeature { 1240 if x != nil { 1241 return x.NoiseSigma 1242 } 1243 return nil 1244 } 1245 1246 // Config for blur baseline. 1247 // 1248 // When enabled, a linear path from the maximally blurred image to the input 1249 // image is created. Using a blurred baseline instead of zero (black image) is 1250 // motivated by the BlurIG approach explained here: 1251 // https://arxiv.org/abs/2004.03383 1252 type BlurBaselineConfig struct { 1253 state protoimpl.MessageState 1254 sizeCache protoimpl.SizeCache 1255 unknownFields protoimpl.UnknownFields 1256 1257 // The standard deviation of the blur kernel for the blurred baseline. The 1258 // same blurring parameter is used for both the height and the width 1259 // dimension. If not set, the method defaults to the zero (i.e. black for 1260 // images) baseline. 1261 MaxBlurSigma float32 `protobuf:"fixed32,1,opt,name=max_blur_sigma,json=maxBlurSigma,proto3" json:"max_blur_sigma,omitempty"` 1262 } 1263 1264 func (x *BlurBaselineConfig) Reset() { 1265 *x = BlurBaselineConfig{} 1266 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[11] 1267 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1268 ms.StoreMessageInfo(mi) 1269 } 1270 1271 func (x *BlurBaselineConfig) String() string { 1272 return protoimpl.X.MessageStringOf(x) 1273 } 1274 1275 func (*BlurBaselineConfig) ProtoMessage() {} 1276 1277 func (x *BlurBaselineConfig) ProtoReflect() protoreflect.Message { 1278 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[11] 1279 if x != nil { 1280 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1281 if ms.LoadMessageInfo() == nil { 1282 ms.StoreMessageInfo(mi) 1283 } 1284 return ms 1285 } 1286 return mi.MessageOf(x) 1287 } 1288 1289 // Deprecated: Use BlurBaselineConfig.ProtoReflect.Descriptor instead. 1290 func (*BlurBaselineConfig) Descriptor() ([]byte, []int) { 1291 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{11} 1292 } 1293 1294 func (x *BlurBaselineConfig) GetMaxBlurSigma() float32 { 1295 if x != nil { 1296 return x.MaxBlurSigma 1297 } 1298 return 0 1299 } 1300 1301 // Example-based explainability that returns the nearest neighbors from the 1302 // provided dataset. 1303 type Examples struct { 1304 state protoimpl.MessageState 1305 sizeCache protoimpl.SizeCache 1306 unknownFields protoimpl.UnknownFields 1307 1308 // Types that are assignable to Source: 1309 // 1310 // *Examples_ExampleGcsSource_ 1311 Source isExamples_Source `protobuf_oneof:"source"` 1312 // Types that are assignable to Config: 1313 // 1314 // *Examples_NearestNeighborSearchConfig 1315 // *Examples_Presets 1316 Config isExamples_Config `protobuf_oneof:"config"` 1317 // The number of neighbors to return when querying for examples. 1318 NeighborCount int32 `protobuf:"varint,3,opt,name=neighbor_count,json=neighborCount,proto3" json:"neighbor_count,omitempty"` 1319 } 1320 1321 func (x *Examples) Reset() { 1322 *x = Examples{} 1323 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[12] 1324 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1325 ms.StoreMessageInfo(mi) 1326 } 1327 1328 func (x *Examples) String() string { 1329 return protoimpl.X.MessageStringOf(x) 1330 } 1331 1332 func (*Examples) ProtoMessage() {} 1333 1334 func (x *Examples) ProtoReflect() protoreflect.Message { 1335 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[12] 1336 if x != nil { 1337 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1338 if ms.LoadMessageInfo() == nil { 1339 ms.StoreMessageInfo(mi) 1340 } 1341 return ms 1342 } 1343 return mi.MessageOf(x) 1344 } 1345 1346 // Deprecated: Use Examples.ProtoReflect.Descriptor instead. 1347 func (*Examples) Descriptor() ([]byte, []int) { 1348 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{12} 1349 } 1350 1351 func (m *Examples) GetSource() isExamples_Source { 1352 if m != nil { 1353 return m.Source 1354 } 1355 return nil 1356 } 1357 1358 func (x *Examples) GetExampleGcsSource() *Examples_ExampleGcsSource { 1359 if x, ok := x.GetSource().(*Examples_ExampleGcsSource_); ok { 1360 return x.ExampleGcsSource 1361 } 1362 return nil 1363 } 1364 1365 func (m *Examples) GetConfig() isExamples_Config { 1366 if m != nil { 1367 return m.Config 1368 } 1369 return nil 1370 } 1371 1372 func (x *Examples) GetNearestNeighborSearchConfig() *structpb.Value { 1373 if x, ok := x.GetConfig().(*Examples_NearestNeighborSearchConfig); ok { 1374 return x.NearestNeighborSearchConfig 1375 } 1376 return nil 1377 } 1378 1379 func (x *Examples) GetPresets() *Presets { 1380 if x, ok := x.GetConfig().(*Examples_Presets); ok { 1381 return x.Presets 1382 } 1383 return nil 1384 } 1385 1386 func (x *Examples) GetNeighborCount() int32 { 1387 if x != nil { 1388 return x.NeighborCount 1389 } 1390 return 0 1391 } 1392 1393 type isExamples_Source interface { 1394 isExamples_Source() 1395 } 1396 1397 type Examples_ExampleGcsSource_ struct { 1398 // The Cloud Storage input instances. 1399 ExampleGcsSource *Examples_ExampleGcsSource `protobuf:"bytes,5,opt,name=example_gcs_source,json=exampleGcsSource,proto3,oneof"` 1400 } 1401 1402 func (*Examples_ExampleGcsSource_) isExamples_Source() {} 1403 1404 type isExamples_Config interface { 1405 isExamples_Config() 1406 } 1407 1408 type Examples_NearestNeighborSearchConfig struct { 1409 // The full configuration for the generated index, the semantics are the 1410 // same as [metadata][google.cloud.aiplatform.v1.Index.metadata] and should 1411 // match 1412 // [NearestNeighborSearchConfig](https://cloud.google.com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#nearest-neighbor-search-config). 1413 NearestNeighborSearchConfig *structpb.Value `protobuf:"bytes,2,opt,name=nearest_neighbor_search_config,json=nearestNeighborSearchConfig,proto3,oneof"` 1414 } 1415 1416 type Examples_Presets struct { 1417 // Simplified preset configuration, which automatically sets configuration 1418 // values based on the desired query speed-precision trade-off and modality. 1419 Presets *Presets `protobuf:"bytes,4,opt,name=presets,proto3,oneof"` 1420 } 1421 1422 func (*Examples_NearestNeighborSearchConfig) isExamples_Config() {} 1423 1424 func (*Examples_Presets) isExamples_Config() {} 1425 1426 // Preset configuration for example-based explanations 1427 type Presets struct { 1428 state protoimpl.MessageState 1429 sizeCache protoimpl.SizeCache 1430 unknownFields protoimpl.UnknownFields 1431 1432 // Preset option controlling parameters for speed-precision trade-off when 1433 // querying for examples. If omitted, defaults to `PRECISE`. 1434 Query *Presets_Query `protobuf:"varint,1,opt,name=query,proto3,enum=google.cloud.aiplatform.v1.Presets_Query,oneof" json:"query,omitempty"` 1435 // The modality of the uploaded model, which automatically configures the 1436 // distance measurement and feature normalization for the underlying example 1437 // index and queries. If your model does not precisely fit one of these types, 1438 // it is okay to choose the closest type. 1439 Modality Presets_Modality `protobuf:"varint,2,opt,name=modality,proto3,enum=google.cloud.aiplatform.v1.Presets_Modality" json:"modality,omitempty"` 1440 } 1441 1442 func (x *Presets) Reset() { 1443 *x = Presets{} 1444 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[13] 1445 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1446 ms.StoreMessageInfo(mi) 1447 } 1448 1449 func (x *Presets) String() string { 1450 return protoimpl.X.MessageStringOf(x) 1451 } 1452 1453 func (*Presets) ProtoMessage() {} 1454 1455 func (x *Presets) ProtoReflect() protoreflect.Message { 1456 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[13] 1457 if x != nil { 1458 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1459 if ms.LoadMessageInfo() == nil { 1460 ms.StoreMessageInfo(mi) 1461 } 1462 return ms 1463 } 1464 return mi.MessageOf(x) 1465 } 1466 1467 // Deprecated: Use Presets.ProtoReflect.Descriptor instead. 1468 func (*Presets) Descriptor() ([]byte, []int) { 1469 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{13} 1470 } 1471 1472 func (x *Presets) GetQuery() Presets_Query { 1473 if x != nil && x.Query != nil { 1474 return *x.Query 1475 } 1476 return Presets_PRECISE 1477 } 1478 1479 func (x *Presets) GetModality() Presets_Modality { 1480 if x != nil { 1481 return x.Modality 1482 } 1483 return Presets_MODALITY_UNSPECIFIED 1484 } 1485 1486 // The [ExplanationSpec][google.cloud.aiplatform.v1.ExplanationSpec] entries 1487 // that can be overridden at [online 1488 // explanation][google.cloud.aiplatform.v1.PredictionService.Explain] time. 1489 type ExplanationSpecOverride struct { 1490 state protoimpl.MessageState 1491 sizeCache protoimpl.SizeCache 1492 unknownFields protoimpl.UnknownFields 1493 1494 // The parameters to be overridden. Note that the 1495 // attribution method cannot be changed. If not specified, 1496 // no parameter is overridden. 1497 Parameters *ExplanationParameters `protobuf:"bytes,1,opt,name=parameters,proto3" json:"parameters,omitempty"` 1498 // The metadata to be overridden. If not specified, no metadata is overridden. 1499 Metadata *ExplanationMetadataOverride `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1500 // The example-based explanations parameter overrides. 1501 ExamplesOverride *ExamplesOverride `protobuf:"bytes,3,opt,name=examples_override,json=examplesOverride,proto3" json:"examples_override,omitempty"` 1502 } 1503 1504 func (x *ExplanationSpecOverride) Reset() { 1505 *x = ExplanationSpecOverride{} 1506 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[14] 1507 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1508 ms.StoreMessageInfo(mi) 1509 } 1510 1511 func (x *ExplanationSpecOverride) String() string { 1512 return protoimpl.X.MessageStringOf(x) 1513 } 1514 1515 func (*ExplanationSpecOverride) ProtoMessage() {} 1516 1517 func (x *ExplanationSpecOverride) ProtoReflect() protoreflect.Message { 1518 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[14] 1519 if x != nil { 1520 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1521 if ms.LoadMessageInfo() == nil { 1522 ms.StoreMessageInfo(mi) 1523 } 1524 return ms 1525 } 1526 return mi.MessageOf(x) 1527 } 1528 1529 // Deprecated: Use ExplanationSpecOverride.ProtoReflect.Descriptor instead. 1530 func (*ExplanationSpecOverride) Descriptor() ([]byte, []int) { 1531 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{14} 1532 } 1533 1534 func (x *ExplanationSpecOverride) GetParameters() *ExplanationParameters { 1535 if x != nil { 1536 return x.Parameters 1537 } 1538 return nil 1539 } 1540 1541 func (x *ExplanationSpecOverride) GetMetadata() *ExplanationMetadataOverride { 1542 if x != nil { 1543 return x.Metadata 1544 } 1545 return nil 1546 } 1547 1548 func (x *ExplanationSpecOverride) GetExamplesOverride() *ExamplesOverride { 1549 if x != nil { 1550 return x.ExamplesOverride 1551 } 1552 return nil 1553 } 1554 1555 // The [ExplanationMetadata][google.cloud.aiplatform.v1.ExplanationMetadata] 1556 // entries that can be overridden at [online 1557 // explanation][google.cloud.aiplatform.v1.PredictionService.Explain] time. 1558 type ExplanationMetadataOverride struct { 1559 state protoimpl.MessageState 1560 sizeCache protoimpl.SizeCache 1561 unknownFields protoimpl.UnknownFields 1562 1563 // Required. Overrides the [input 1564 // metadata][google.cloud.aiplatform.v1.ExplanationMetadata.inputs] of the 1565 // features. The key is the name of the feature to be overridden. The keys 1566 // specified here must exist in the input metadata to be overridden. If a 1567 // feature is not specified here, the corresponding feature's input metadata 1568 // is not overridden. 1569 Inputs map[string]*ExplanationMetadataOverride_InputMetadataOverride `protobuf:"bytes,1,rep,name=inputs,proto3" json:"inputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1570 } 1571 1572 func (x *ExplanationMetadataOverride) Reset() { 1573 *x = ExplanationMetadataOverride{} 1574 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[15] 1575 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1576 ms.StoreMessageInfo(mi) 1577 } 1578 1579 func (x *ExplanationMetadataOverride) String() string { 1580 return protoimpl.X.MessageStringOf(x) 1581 } 1582 1583 func (*ExplanationMetadataOverride) ProtoMessage() {} 1584 1585 func (x *ExplanationMetadataOverride) ProtoReflect() protoreflect.Message { 1586 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[15] 1587 if x != nil { 1588 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1589 if ms.LoadMessageInfo() == nil { 1590 ms.StoreMessageInfo(mi) 1591 } 1592 return ms 1593 } 1594 return mi.MessageOf(x) 1595 } 1596 1597 // Deprecated: Use ExplanationMetadataOverride.ProtoReflect.Descriptor instead. 1598 func (*ExplanationMetadataOverride) Descriptor() ([]byte, []int) { 1599 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{15} 1600 } 1601 1602 func (x *ExplanationMetadataOverride) GetInputs() map[string]*ExplanationMetadataOverride_InputMetadataOverride { 1603 if x != nil { 1604 return x.Inputs 1605 } 1606 return nil 1607 } 1608 1609 // Overrides for example-based explanations. 1610 type ExamplesOverride struct { 1611 state protoimpl.MessageState 1612 sizeCache protoimpl.SizeCache 1613 unknownFields protoimpl.UnknownFields 1614 1615 // The number of neighbors to return. 1616 NeighborCount int32 `protobuf:"varint,1,opt,name=neighbor_count,json=neighborCount,proto3" json:"neighbor_count,omitempty"` 1617 // The number of neighbors to return that have the same crowding tag. 1618 CrowdingCount int32 `protobuf:"varint,2,opt,name=crowding_count,json=crowdingCount,proto3" json:"crowding_count,omitempty"` 1619 // Restrict the resulting nearest neighbors to respect these constraints. 1620 Restrictions []*ExamplesRestrictionsNamespace `protobuf:"bytes,3,rep,name=restrictions,proto3" json:"restrictions,omitempty"` 1621 // If true, return the embeddings instead of neighbors. 1622 ReturnEmbeddings bool `protobuf:"varint,4,opt,name=return_embeddings,json=returnEmbeddings,proto3" json:"return_embeddings,omitempty"` 1623 // The format of the data being provided with each call. 1624 DataFormat ExamplesOverride_DataFormat `protobuf:"varint,5,opt,name=data_format,json=dataFormat,proto3,enum=google.cloud.aiplatform.v1.ExamplesOverride_DataFormat" json:"data_format,omitempty"` 1625 } 1626 1627 func (x *ExamplesOverride) Reset() { 1628 *x = ExamplesOverride{} 1629 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[16] 1630 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1631 ms.StoreMessageInfo(mi) 1632 } 1633 1634 func (x *ExamplesOverride) String() string { 1635 return protoimpl.X.MessageStringOf(x) 1636 } 1637 1638 func (*ExamplesOverride) ProtoMessage() {} 1639 1640 func (x *ExamplesOverride) ProtoReflect() protoreflect.Message { 1641 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[16] 1642 if x != nil { 1643 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1644 if ms.LoadMessageInfo() == nil { 1645 ms.StoreMessageInfo(mi) 1646 } 1647 return ms 1648 } 1649 return mi.MessageOf(x) 1650 } 1651 1652 // Deprecated: Use ExamplesOverride.ProtoReflect.Descriptor instead. 1653 func (*ExamplesOverride) Descriptor() ([]byte, []int) { 1654 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{16} 1655 } 1656 1657 func (x *ExamplesOverride) GetNeighborCount() int32 { 1658 if x != nil { 1659 return x.NeighborCount 1660 } 1661 return 0 1662 } 1663 1664 func (x *ExamplesOverride) GetCrowdingCount() int32 { 1665 if x != nil { 1666 return x.CrowdingCount 1667 } 1668 return 0 1669 } 1670 1671 func (x *ExamplesOverride) GetRestrictions() []*ExamplesRestrictionsNamespace { 1672 if x != nil { 1673 return x.Restrictions 1674 } 1675 return nil 1676 } 1677 1678 func (x *ExamplesOverride) GetReturnEmbeddings() bool { 1679 if x != nil { 1680 return x.ReturnEmbeddings 1681 } 1682 return false 1683 } 1684 1685 func (x *ExamplesOverride) GetDataFormat() ExamplesOverride_DataFormat { 1686 if x != nil { 1687 return x.DataFormat 1688 } 1689 return ExamplesOverride_DATA_FORMAT_UNSPECIFIED 1690 } 1691 1692 // Restrictions namespace for example-based explanations overrides. 1693 type ExamplesRestrictionsNamespace struct { 1694 state protoimpl.MessageState 1695 sizeCache protoimpl.SizeCache 1696 unknownFields protoimpl.UnknownFields 1697 1698 // The namespace name. 1699 NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` 1700 // The list of allowed tags. 1701 Allow []string `protobuf:"bytes,2,rep,name=allow,proto3" json:"allow,omitempty"` 1702 // The list of deny tags. 1703 Deny []string `protobuf:"bytes,3,rep,name=deny,proto3" json:"deny,omitempty"` 1704 } 1705 1706 func (x *ExamplesRestrictionsNamespace) Reset() { 1707 *x = ExamplesRestrictionsNamespace{} 1708 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[17] 1709 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1710 ms.StoreMessageInfo(mi) 1711 } 1712 1713 func (x *ExamplesRestrictionsNamespace) String() string { 1714 return protoimpl.X.MessageStringOf(x) 1715 } 1716 1717 func (*ExamplesRestrictionsNamespace) ProtoMessage() {} 1718 1719 func (x *ExamplesRestrictionsNamespace) ProtoReflect() protoreflect.Message { 1720 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[17] 1721 if x != nil { 1722 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1723 if ms.LoadMessageInfo() == nil { 1724 ms.StoreMessageInfo(mi) 1725 } 1726 return ms 1727 } 1728 return mi.MessageOf(x) 1729 } 1730 1731 // Deprecated: Use ExamplesRestrictionsNamespace.ProtoReflect.Descriptor instead. 1732 func (*ExamplesRestrictionsNamespace) Descriptor() ([]byte, []int) { 1733 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{17} 1734 } 1735 1736 func (x *ExamplesRestrictionsNamespace) GetNamespaceName() string { 1737 if x != nil { 1738 return x.NamespaceName 1739 } 1740 return "" 1741 } 1742 1743 func (x *ExamplesRestrictionsNamespace) GetAllow() []string { 1744 if x != nil { 1745 return x.Allow 1746 } 1747 return nil 1748 } 1749 1750 func (x *ExamplesRestrictionsNamespace) GetDeny() []string { 1751 if x != nil { 1752 return x.Deny 1753 } 1754 return nil 1755 } 1756 1757 // Noise sigma for a single feature. 1758 type FeatureNoiseSigma_NoiseSigmaForFeature struct { 1759 state protoimpl.MessageState 1760 sizeCache protoimpl.SizeCache 1761 unknownFields protoimpl.UnknownFields 1762 1763 // The name of the input feature for which noise sigma is provided. The 1764 // features are defined in 1765 // [explanation metadata 1766 // inputs][google.cloud.aiplatform.v1.ExplanationMetadata.inputs]. 1767 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1768 // This represents the standard deviation of the Gaussian kernel that will 1769 // be used to add noise to the feature prior to computing gradients. Similar 1770 // to [noise_sigma][google.cloud.aiplatform.v1.SmoothGradConfig.noise_sigma] 1771 // but represents the noise added to the current feature. Defaults to 0.1. 1772 Sigma float32 `protobuf:"fixed32,2,opt,name=sigma,proto3" json:"sigma,omitempty"` 1773 } 1774 1775 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) Reset() { 1776 *x = FeatureNoiseSigma_NoiseSigmaForFeature{} 1777 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[18] 1778 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1779 ms.StoreMessageInfo(mi) 1780 } 1781 1782 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) String() string { 1783 return protoimpl.X.MessageStringOf(x) 1784 } 1785 1786 func (*FeatureNoiseSigma_NoiseSigmaForFeature) ProtoMessage() {} 1787 1788 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) ProtoReflect() protoreflect.Message { 1789 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[18] 1790 if x != nil { 1791 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1792 if ms.LoadMessageInfo() == nil { 1793 ms.StoreMessageInfo(mi) 1794 } 1795 return ms 1796 } 1797 return mi.MessageOf(x) 1798 } 1799 1800 // Deprecated: Use FeatureNoiseSigma_NoiseSigmaForFeature.ProtoReflect.Descriptor instead. 1801 func (*FeatureNoiseSigma_NoiseSigmaForFeature) Descriptor() ([]byte, []int) { 1802 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{10, 0} 1803 } 1804 1805 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) GetName() string { 1806 if x != nil { 1807 return x.Name 1808 } 1809 return "" 1810 } 1811 1812 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) GetSigma() float32 { 1813 if x != nil { 1814 return x.Sigma 1815 } 1816 return 0 1817 } 1818 1819 // The Cloud Storage input instances. 1820 type Examples_ExampleGcsSource struct { 1821 state protoimpl.MessageState 1822 sizeCache protoimpl.SizeCache 1823 unknownFields protoimpl.UnknownFields 1824 1825 // The format in which instances are given, if not specified, assume it's 1826 // JSONL format. Currently only JSONL format is supported. 1827 DataFormat Examples_ExampleGcsSource_DataFormat `protobuf:"varint,1,opt,name=data_format,json=dataFormat,proto3,enum=google.cloud.aiplatform.v1.Examples_ExampleGcsSource_DataFormat" json:"data_format,omitempty"` 1828 // The Cloud Storage location for the input instances. 1829 GcsSource *GcsSource `protobuf:"bytes,2,opt,name=gcs_source,json=gcsSource,proto3" json:"gcs_source,omitempty"` 1830 } 1831 1832 func (x *Examples_ExampleGcsSource) Reset() { 1833 *x = Examples_ExampleGcsSource{} 1834 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[19] 1835 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1836 ms.StoreMessageInfo(mi) 1837 } 1838 1839 func (x *Examples_ExampleGcsSource) String() string { 1840 return protoimpl.X.MessageStringOf(x) 1841 } 1842 1843 func (*Examples_ExampleGcsSource) ProtoMessage() {} 1844 1845 func (x *Examples_ExampleGcsSource) ProtoReflect() protoreflect.Message { 1846 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[19] 1847 if x != nil { 1848 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1849 if ms.LoadMessageInfo() == nil { 1850 ms.StoreMessageInfo(mi) 1851 } 1852 return ms 1853 } 1854 return mi.MessageOf(x) 1855 } 1856 1857 // Deprecated: Use Examples_ExampleGcsSource.ProtoReflect.Descriptor instead. 1858 func (*Examples_ExampleGcsSource) Descriptor() ([]byte, []int) { 1859 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{12, 0} 1860 } 1861 1862 func (x *Examples_ExampleGcsSource) GetDataFormat() Examples_ExampleGcsSource_DataFormat { 1863 if x != nil { 1864 return x.DataFormat 1865 } 1866 return Examples_ExampleGcsSource_DATA_FORMAT_UNSPECIFIED 1867 } 1868 1869 func (x *Examples_ExampleGcsSource) GetGcsSource() *GcsSource { 1870 if x != nil { 1871 return x.GcsSource 1872 } 1873 return nil 1874 } 1875 1876 // The [input 1877 // metadata][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata] 1878 // entries to be overridden. 1879 type ExplanationMetadataOverride_InputMetadataOverride struct { 1880 state protoimpl.MessageState 1881 sizeCache protoimpl.SizeCache 1882 unknownFields protoimpl.UnknownFields 1883 1884 // Baseline inputs for this feature. 1885 // 1886 // This overrides the `input_baseline` field of the 1887 // [ExplanationMetadata.InputMetadata][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata] 1888 // object of the corresponding feature's input metadata. If it's not 1889 // specified, the original baselines are not overridden. 1890 InputBaselines []*structpb.Value `protobuf:"bytes,1,rep,name=input_baselines,json=inputBaselines,proto3" json:"input_baselines,omitempty"` 1891 } 1892 1893 func (x *ExplanationMetadataOverride_InputMetadataOverride) Reset() { 1894 *x = ExplanationMetadataOverride_InputMetadataOverride{} 1895 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[20] 1896 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1897 ms.StoreMessageInfo(mi) 1898 } 1899 1900 func (x *ExplanationMetadataOverride_InputMetadataOverride) String() string { 1901 return protoimpl.X.MessageStringOf(x) 1902 } 1903 1904 func (*ExplanationMetadataOverride_InputMetadataOverride) ProtoMessage() {} 1905 1906 func (x *ExplanationMetadataOverride_InputMetadataOverride) ProtoReflect() protoreflect.Message { 1907 mi := &file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[20] 1908 if x != nil { 1909 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1910 if ms.LoadMessageInfo() == nil { 1911 ms.StoreMessageInfo(mi) 1912 } 1913 return ms 1914 } 1915 return mi.MessageOf(x) 1916 } 1917 1918 // Deprecated: Use ExplanationMetadataOverride_InputMetadataOverride.ProtoReflect.Descriptor instead. 1919 func (*ExplanationMetadataOverride_InputMetadataOverride) Descriptor() ([]byte, []int) { 1920 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP(), []int{15, 0} 1921 } 1922 1923 func (x *ExplanationMetadataOverride_InputMetadataOverride) GetInputBaselines() []*structpb.Value { 1924 if x != nil { 1925 return x.InputBaselines 1926 } 1927 return nil 1928 } 1929 1930 var File_google_cloud_aiplatform_v1_explanation_proto protoreflect.FileDescriptor 1931 1932 var file_google_cloud_aiplatform_v1_explanation_proto_rawDesc = []byte{ 1933 0x0a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 1934 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 1935 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 1936 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 1937 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 1938 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 1939 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f, 0x6f, 1940 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1941 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 1942 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 1943 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 1944 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 1945 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 1946 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 1947 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x01, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 1948 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 1949 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 1950 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 1951 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 1952 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 1953 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 1954 0x62, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 1955 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1956 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 1957 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 1958 0x22, 0x6d, 0x0a, 0x10, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 1959 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x11, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x61, 0x74, 0x74, 1960 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 1961 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 1962 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 1963 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6d, 1964 0x65, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 1965 0x88, 0x03, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 1966 0x37, 0x0a, 0x15, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 1967 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 1968 0xe0, 0x41, 0x03, 0x52, 0x13, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4f, 0x75, 0x74, 1969 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74, 1970 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 1971 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x69, 0x6e, 1972 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 1973 0x65, 0x12, 0x4e, 0x0a, 0x14, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x74, 0x74, 1974 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 1975 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 1976 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x66, 0x65, 1977 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 1978 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 1979 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x6f, 0x75, 1980 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x33, 0x0a, 0x13, 0x6f, 0x75, 0x74, 1981 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 1982 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x6f, 0x75, 0x74, 1983 0x70, 0x75, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 1984 0x0a, 0x13, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 1985 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 1986 0x52, 0x12, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 1987 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6e, 1988 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 1989 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x08, 0x4e, 0x65, 1990 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 1991 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 1992 0x52, 0x0a, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 1993 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 1994 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6e, 0x65, 1995 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xbb, 1996 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 1997 0x65, 0x63, 0x12, 0x56, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 1998 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 1999 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 2000 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 2001 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 2002 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x6d, 0x65, 2003 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 2004 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2005 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 2006 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 2007 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x99, 0x04, 0x0a, 2008 0x15, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 2009 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x1b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 2010 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 2011 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 2012 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2013 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 2014 0x53, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 2015 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x53, 0x68, 0x61, 2016 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 2017 0x86, 0x01, 0x0a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 2018 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 2019 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 2020 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2021 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 2022 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 2023 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 2024 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 2025 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x10, 0x78, 0x72, 0x61, 0x69, 2026 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 2027 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2028 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 2029 0x58, 0x72, 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 2030 0x00, 0x52, 0x0f, 0x78, 0x72, 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 2031 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, 2032 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2033 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 2034 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 2035 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x5f, 0x6b, 0x18, 2036 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x4b, 0x12, 0x41, 0x0a, 0x0e, 0x6f, 2037 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 2038 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 2039 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 2040 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x42, 0x08, 2041 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x3f, 0x0a, 0x19, 0x53, 0x61, 0x6d, 0x70, 2042 0x6c, 0x65, 0x64, 0x53, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 2043 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 0x6f, 2044 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 2045 0x70, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, 0x02, 0x0a, 0x1e, 0x49, 0x6e, 2046 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 2047 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 2048 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 2049 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 2050 0x12, 0x5a, 0x0a, 0x12, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x5f, 0x67, 0x72, 0x61, 0x64, 0x5f, 2051 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 2052 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2053 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 2054 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x73, 0x6d, 0x6f, 0x6f, 2055 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x14, 2056 0x62, 0x6c, 0x75, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 2057 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 2058 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2059 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 2060 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x62, 0x6c, 0x75, 0x72, 2061 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xf3, 2062 0x01, 0x0a, 0x0f, 0x58, 0x72, 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 2063 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 2064 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x65, 2065 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x12, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 2066 0x5f, 0x67, 0x72, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 2067 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2068 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 2069 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2070 0x52, 0x10, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 2071 0x69, 0x67, 0x12, 0x60, 0x0a, 0x14, 0x62, 0x6c, 0x75, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 2072 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 2073 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2074 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 2075 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2076 0x52, 0x12, 0x62, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 2077 0x6e, 0x66, 0x69, 0x67, 0x22, 0xda, 0x01, 0x0a, 0x10, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 2078 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6e, 0x6f, 0x69, 2079 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 2080 0x52, 0x0a, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x5f, 0x0a, 0x13, 2081 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x73, 0x69, 2082 0x67, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2083 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 2084 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 2085 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x11, 0x66, 0x65, 0x61, 0x74, 2086 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x2c, 0x0a, 2087 0x12, 0x6e, 0x6f, 0x69, 0x73, 0x79, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 2088 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 0x6f, 0x69, 0x73, 0x79, 2089 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x47, 2090 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 2091 0x61, 0x22, 0xba, 0x01, 0x0a, 0x11, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 2092 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x63, 0x0a, 0x0b, 0x6e, 0x6f, 0x69, 0x73, 0x65, 2093 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 2094 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2095 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 2096 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x2e, 0x4e, 0x6f, 0x69, 0x73, 2097 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 2098 0x52, 0x0a, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x1a, 0x40, 0x0a, 0x14, 2099 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x46, 0x65, 0x61, 2100 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 2101 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x69, 0x67, 0x6d, 2102 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x22, 0x3a, 2103 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 2104 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x6c, 0x75, 0x72, 2105 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x61, 2106 0x78, 0x42, 0x6c, 0x75, 0x72, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x22, 0xc0, 0x04, 0x0a, 0x08, 0x45, 2107 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x12, 0x65, 0x78, 0x61, 0x6d, 0x70, 2108 0x6c, 0x65, 0x5f, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 2109 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2110 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2111 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 2112 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 2113 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5d, 2114 0x0a, 0x1e, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 2115 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2116 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2117 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x01, 2118 0x52, 0x1b, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 2119 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 2120 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 2121 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 2122 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 2123 0x65, 0x74, 0x73, 0x48, 0x01, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x12, 0x25, 2124 0x0a, 0x0e, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 2125 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 2126 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xf1, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 2127 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x0b, 0x64, 0x61, 2128 0x74, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 2129 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 2130 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 2131 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x47, 0x63, 0x73, 2132 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 2133 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x44, 0x0a, 2134 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 2135 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2136 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 2137 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 2138 0x72, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 2139 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 2140 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 2141 0x0a, 0x05, 0x4a, 0x53, 0x4f, 0x4e, 0x4c, 0x10, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 2142 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8b, 0x02, 2143 0x0a, 0x07, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x71, 0x75, 0x65, 2144 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2145 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 2146 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x2e, 0x51, 0x75, 2147 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 2148 0x48, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 2149 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2150 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 2151 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 2152 0x08, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x1e, 0x0a, 0x05, 0x51, 0x75, 0x65, 2153 0x72, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x43, 0x49, 0x53, 0x45, 0x10, 0x00, 0x12, 2154 0x08, 0x0a, 0x04, 0x46, 0x41, 0x53, 0x54, 0x10, 0x01, 0x22, 0x46, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 2155 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x44, 0x41, 0x4c, 0x49, 0x54, 2156 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 2157 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 2158 0x58, 0x54, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x41, 0x42, 0x55, 0x4c, 0x41, 0x52, 0x10, 2159 0x03, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x9c, 0x02, 0x0a, 0x17, 2160 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 2161 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 2162 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 2163 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2164 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 2165 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 2166 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x53, 0x0a, 0x08, 0x6d, 0x65, 2167 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 2168 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2169 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 2170 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 2171 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 2172 0x59, 0x0a, 0x11, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x76, 0x65, 0x72, 2173 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 2174 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2175 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 2176 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x10, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 2177 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xe4, 0x02, 0x0a, 0x1b, 0x45, 2178 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 2179 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x60, 0x0a, 0x06, 0x69, 0x6e, 2180 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 2181 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2182 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 2183 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 2184 0x69, 0x64, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 2185 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x15, 2186 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 2187 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 2188 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 2189 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2190 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x61, 0x73, 2191 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x1a, 0x88, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x70, 0x75, 0x74, 2192 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 2193 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x63, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 2194 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2195 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 2196 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2197 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 2198 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 2199 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 2200 0x01, 0x22, 0x90, 0x03, 0x0a, 0x10, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x76, 2201 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 2202 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 2203 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 2204 0x0e, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 2205 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x69, 0x6e, 0x67, 0x43, 2206 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 2207 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 2208 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2209 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 2210 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 2211 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 2212 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x65, 0x6d, 2213 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 2214 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x73, 2215 0x12, 0x58, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 2216 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2217 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 2218 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 2219 0x69, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 2220 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x48, 0x0a, 0x0a, 0x44, 0x61, 2221 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 2222 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 2223 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 2224 0x45, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x49, 0x4e, 2225 0x47, 0x53, 0x10, 0x02, 0x22, 0x70, 0x0a, 0x1d, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 2226 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 2227 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 2228 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 2229 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 2230 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x6c, 2231 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 2232 0x52, 0x04, 0x64, 0x65, 0x6e, 0x79, 0x42, 0xce, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 2233 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2234 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x45, 0x78, 0x70, 0x6c, 0x61, 2235 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 2236 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 2237 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 2238 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 2239 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 2240 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 2241 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 2242 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 2243 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2244 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 2245 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2246 } 2247 2248 var ( 2249 file_google_cloud_aiplatform_v1_explanation_proto_rawDescOnce sync.Once 2250 file_google_cloud_aiplatform_v1_explanation_proto_rawDescData = file_google_cloud_aiplatform_v1_explanation_proto_rawDesc 2251 ) 2252 2253 func file_google_cloud_aiplatform_v1_explanation_proto_rawDescGZIP() []byte { 2254 file_google_cloud_aiplatform_v1_explanation_proto_rawDescOnce.Do(func() { 2255 file_google_cloud_aiplatform_v1_explanation_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1_explanation_proto_rawDescData) 2256 }) 2257 return file_google_cloud_aiplatform_v1_explanation_proto_rawDescData 2258 } 2259 2260 var file_google_cloud_aiplatform_v1_explanation_proto_enumTypes = make([]protoimpl.EnumInfo, 4) 2261 var file_google_cloud_aiplatform_v1_explanation_proto_msgTypes = make([]protoimpl.MessageInfo, 22) 2262 var file_google_cloud_aiplatform_v1_explanation_proto_goTypes = []any{ 2263 (Examples_ExampleGcsSource_DataFormat)(0), // 0: google.cloud.aiplatform.v1.Examples.ExampleGcsSource.DataFormat 2264 (Presets_Query)(0), // 1: google.cloud.aiplatform.v1.Presets.Query 2265 (Presets_Modality)(0), // 2: google.cloud.aiplatform.v1.Presets.Modality 2266 (ExamplesOverride_DataFormat)(0), // 3: google.cloud.aiplatform.v1.ExamplesOverride.DataFormat 2267 (*Explanation)(nil), // 4: google.cloud.aiplatform.v1.Explanation 2268 (*ModelExplanation)(nil), // 5: google.cloud.aiplatform.v1.ModelExplanation 2269 (*Attribution)(nil), // 6: google.cloud.aiplatform.v1.Attribution 2270 (*Neighbor)(nil), // 7: google.cloud.aiplatform.v1.Neighbor 2271 (*ExplanationSpec)(nil), // 8: google.cloud.aiplatform.v1.ExplanationSpec 2272 (*ExplanationParameters)(nil), // 9: google.cloud.aiplatform.v1.ExplanationParameters 2273 (*SampledShapleyAttribution)(nil), // 10: google.cloud.aiplatform.v1.SampledShapleyAttribution 2274 (*IntegratedGradientsAttribution)(nil), // 11: google.cloud.aiplatform.v1.IntegratedGradientsAttribution 2275 (*XraiAttribution)(nil), // 12: google.cloud.aiplatform.v1.XraiAttribution 2276 (*SmoothGradConfig)(nil), // 13: google.cloud.aiplatform.v1.SmoothGradConfig 2277 (*FeatureNoiseSigma)(nil), // 14: google.cloud.aiplatform.v1.FeatureNoiseSigma 2278 (*BlurBaselineConfig)(nil), // 15: google.cloud.aiplatform.v1.BlurBaselineConfig 2279 (*Examples)(nil), // 16: google.cloud.aiplatform.v1.Examples 2280 (*Presets)(nil), // 17: google.cloud.aiplatform.v1.Presets 2281 (*ExplanationSpecOverride)(nil), // 18: google.cloud.aiplatform.v1.ExplanationSpecOverride 2282 (*ExplanationMetadataOverride)(nil), // 19: google.cloud.aiplatform.v1.ExplanationMetadataOverride 2283 (*ExamplesOverride)(nil), // 20: google.cloud.aiplatform.v1.ExamplesOverride 2284 (*ExamplesRestrictionsNamespace)(nil), // 21: google.cloud.aiplatform.v1.ExamplesRestrictionsNamespace 2285 (*FeatureNoiseSigma_NoiseSigmaForFeature)(nil), // 22: google.cloud.aiplatform.v1.FeatureNoiseSigma.NoiseSigmaForFeature 2286 (*Examples_ExampleGcsSource)(nil), // 23: google.cloud.aiplatform.v1.Examples.ExampleGcsSource 2287 (*ExplanationMetadataOverride_InputMetadataOverride)(nil), // 24: google.cloud.aiplatform.v1.ExplanationMetadataOverride.InputMetadataOverride 2288 nil, // 25: google.cloud.aiplatform.v1.ExplanationMetadataOverride.InputsEntry 2289 (*structpb.Value)(nil), // 26: google.protobuf.Value 2290 (*ExplanationMetadata)(nil), // 27: google.cloud.aiplatform.v1.ExplanationMetadata 2291 (*structpb.ListValue)(nil), // 28: google.protobuf.ListValue 2292 (*GcsSource)(nil), // 29: google.cloud.aiplatform.v1.GcsSource 2293 } 2294 var file_google_cloud_aiplatform_v1_explanation_proto_depIdxs = []int32{ 2295 6, // 0: google.cloud.aiplatform.v1.Explanation.attributions:type_name -> google.cloud.aiplatform.v1.Attribution 2296 7, // 1: google.cloud.aiplatform.v1.Explanation.neighbors:type_name -> google.cloud.aiplatform.v1.Neighbor 2297 6, // 2: google.cloud.aiplatform.v1.ModelExplanation.mean_attributions:type_name -> google.cloud.aiplatform.v1.Attribution 2298 26, // 3: google.cloud.aiplatform.v1.Attribution.feature_attributions:type_name -> google.protobuf.Value 2299 9, // 4: google.cloud.aiplatform.v1.ExplanationSpec.parameters:type_name -> google.cloud.aiplatform.v1.ExplanationParameters 2300 27, // 5: google.cloud.aiplatform.v1.ExplanationSpec.metadata:type_name -> google.cloud.aiplatform.v1.ExplanationMetadata 2301 10, // 6: google.cloud.aiplatform.v1.ExplanationParameters.sampled_shapley_attribution:type_name -> google.cloud.aiplatform.v1.SampledShapleyAttribution 2302 11, // 7: google.cloud.aiplatform.v1.ExplanationParameters.integrated_gradients_attribution:type_name -> google.cloud.aiplatform.v1.IntegratedGradientsAttribution 2303 12, // 8: google.cloud.aiplatform.v1.ExplanationParameters.xrai_attribution:type_name -> google.cloud.aiplatform.v1.XraiAttribution 2304 16, // 9: google.cloud.aiplatform.v1.ExplanationParameters.examples:type_name -> google.cloud.aiplatform.v1.Examples 2305 28, // 10: google.cloud.aiplatform.v1.ExplanationParameters.output_indices:type_name -> google.protobuf.ListValue 2306 13, // 11: google.cloud.aiplatform.v1.IntegratedGradientsAttribution.smooth_grad_config:type_name -> google.cloud.aiplatform.v1.SmoothGradConfig 2307 15, // 12: google.cloud.aiplatform.v1.IntegratedGradientsAttribution.blur_baseline_config:type_name -> google.cloud.aiplatform.v1.BlurBaselineConfig 2308 13, // 13: google.cloud.aiplatform.v1.XraiAttribution.smooth_grad_config:type_name -> google.cloud.aiplatform.v1.SmoothGradConfig 2309 15, // 14: google.cloud.aiplatform.v1.XraiAttribution.blur_baseline_config:type_name -> google.cloud.aiplatform.v1.BlurBaselineConfig 2310 14, // 15: google.cloud.aiplatform.v1.SmoothGradConfig.feature_noise_sigma:type_name -> google.cloud.aiplatform.v1.FeatureNoiseSigma 2311 22, // 16: google.cloud.aiplatform.v1.FeatureNoiseSigma.noise_sigma:type_name -> google.cloud.aiplatform.v1.FeatureNoiseSigma.NoiseSigmaForFeature 2312 23, // 17: google.cloud.aiplatform.v1.Examples.example_gcs_source:type_name -> google.cloud.aiplatform.v1.Examples.ExampleGcsSource 2313 26, // 18: google.cloud.aiplatform.v1.Examples.nearest_neighbor_search_config:type_name -> google.protobuf.Value 2314 17, // 19: google.cloud.aiplatform.v1.Examples.presets:type_name -> google.cloud.aiplatform.v1.Presets 2315 1, // 20: google.cloud.aiplatform.v1.Presets.query:type_name -> google.cloud.aiplatform.v1.Presets.Query 2316 2, // 21: google.cloud.aiplatform.v1.Presets.modality:type_name -> google.cloud.aiplatform.v1.Presets.Modality 2317 9, // 22: google.cloud.aiplatform.v1.ExplanationSpecOverride.parameters:type_name -> google.cloud.aiplatform.v1.ExplanationParameters 2318 19, // 23: google.cloud.aiplatform.v1.ExplanationSpecOverride.metadata:type_name -> google.cloud.aiplatform.v1.ExplanationMetadataOverride 2319 20, // 24: google.cloud.aiplatform.v1.ExplanationSpecOverride.examples_override:type_name -> google.cloud.aiplatform.v1.ExamplesOverride 2320 25, // 25: google.cloud.aiplatform.v1.ExplanationMetadataOverride.inputs:type_name -> google.cloud.aiplatform.v1.ExplanationMetadataOverride.InputsEntry 2321 21, // 26: google.cloud.aiplatform.v1.ExamplesOverride.restrictions:type_name -> google.cloud.aiplatform.v1.ExamplesRestrictionsNamespace 2322 3, // 27: google.cloud.aiplatform.v1.ExamplesOverride.data_format:type_name -> google.cloud.aiplatform.v1.ExamplesOverride.DataFormat 2323 0, // 28: google.cloud.aiplatform.v1.Examples.ExampleGcsSource.data_format:type_name -> google.cloud.aiplatform.v1.Examples.ExampleGcsSource.DataFormat 2324 29, // 29: google.cloud.aiplatform.v1.Examples.ExampleGcsSource.gcs_source:type_name -> google.cloud.aiplatform.v1.GcsSource 2325 26, // 30: google.cloud.aiplatform.v1.ExplanationMetadataOverride.InputMetadataOverride.input_baselines:type_name -> google.protobuf.Value 2326 24, // 31: google.cloud.aiplatform.v1.ExplanationMetadataOverride.InputsEntry.value:type_name -> google.cloud.aiplatform.v1.ExplanationMetadataOverride.InputMetadataOverride 2327 32, // [32:32] is the sub-list for method output_type 2328 32, // [32:32] is the sub-list for method input_type 2329 32, // [32:32] is the sub-list for extension type_name 2330 32, // [32:32] is the sub-list for extension extendee 2331 0, // [0:32] is the sub-list for field type_name 2332 } 2333 2334 func init() { file_google_cloud_aiplatform_v1_explanation_proto_init() } 2335 func file_google_cloud_aiplatform_v1_explanation_proto_init() { 2336 if File_google_cloud_aiplatform_v1_explanation_proto != nil { 2337 return 2338 } 2339 file_google_cloud_aiplatform_v1_explanation_metadata_proto_init() 2340 file_google_cloud_aiplatform_v1_io_proto_init() 2341 file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[5].OneofWrappers = []any{ 2342 (*ExplanationParameters_SampledShapleyAttribution)(nil), 2343 (*ExplanationParameters_IntegratedGradientsAttribution)(nil), 2344 (*ExplanationParameters_XraiAttribution)(nil), 2345 (*ExplanationParameters_Examples)(nil), 2346 } 2347 file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[9].OneofWrappers = []any{ 2348 (*SmoothGradConfig_NoiseSigma)(nil), 2349 (*SmoothGradConfig_FeatureNoiseSigma)(nil), 2350 } 2351 file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[12].OneofWrappers = []any{ 2352 (*Examples_ExampleGcsSource_)(nil), 2353 (*Examples_NearestNeighborSearchConfig)(nil), 2354 (*Examples_Presets)(nil), 2355 } 2356 file_google_cloud_aiplatform_v1_explanation_proto_msgTypes[13].OneofWrappers = []any{} 2357 type x struct{} 2358 out := protoimpl.TypeBuilder{ 2359 File: protoimpl.DescBuilder{ 2360 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2361 RawDescriptor: file_google_cloud_aiplatform_v1_explanation_proto_rawDesc, 2362 NumEnums: 4, 2363 NumMessages: 22, 2364 NumExtensions: 0, 2365 NumServices: 0, 2366 }, 2367 GoTypes: file_google_cloud_aiplatform_v1_explanation_proto_goTypes, 2368 DependencyIndexes: file_google_cloud_aiplatform_v1_explanation_proto_depIdxs, 2369 EnumInfos: file_google_cloud_aiplatform_v1_explanation_proto_enumTypes, 2370 MessageInfos: file_google_cloud_aiplatform_v1_explanation_proto_msgTypes, 2371 }.Build() 2372 File_google_cloud_aiplatform_v1_explanation_proto = out.File 2373 file_google_cloud_aiplatform_v1_explanation_proto_rawDesc = nil 2374 file_google_cloud_aiplatform_v1_explanation_proto_goTypes = nil 2375 file_google_cloud_aiplatform_v1_explanation_proto_depIdxs = nil 2376 }