cloud.google.com/go/aiplatform@v1.106.0/apiv1beta1/aiplatformpb/feature_monitor.pb.go (about) 1 // Copyright 2025 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.35.2 18 // protoc v4.25.7 19 // source: google/cloud/aiplatform/v1beta1/feature_monitor.proto 20 21 package aiplatformpb 22 23 import ( 24 _ "google.golang.org/genproto/googleapis/api/annotations" 25 interval "google.golang.org/genproto/googleapis/type/interval" 26 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 27 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 28 structpb "google.golang.org/protobuf/types/known/structpb" 29 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 30 reflect "reflect" 31 sync "sync" 32 ) 33 34 const ( 35 // Verify that this generated code is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 37 // Verify that runtime/protoimpl is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 39 ) 40 41 // Vertex AI Feature Monitor. 42 type FeatureMonitor struct { 43 state protoimpl.MessageState 44 sizeCache protoimpl.SizeCache 45 unknownFields protoimpl.UnknownFields 46 47 // Identifier. Name of the FeatureMonitor. Format: 48 // `projects/{project}/locations/{location}/featureGroups/{featureGroup}/featureMonitors/{featureMonitor}` 49 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 50 // Output only. Timestamp when this FeatureMonitor was created. 51 CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` 52 // Output only. Timestamp when this FeatureMonitor was last updated. 53 UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` 54 // Optional. Used to perform consistent read-modify-write updates. If not set, 55 // a blind "overwrite" update happens. 56 Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"` 57 // Optional. The labels with user-defined metadata to organize your 58 // FeatureMonitor. 59 // 60 // Label keys and values can be no longer than 64 characters 61 // (Unicode codepoints), can only contain lowercase letters, numeric 62 // characters, underscores and dashes. International characters are allowed. 63 // 64 // See https://goo.gl/xmQnxf for more information on and examples of labels. 65 // No more than 64 user labels can be associated with one 66 // FeatureMonitor(System labels are excluded)." System reserved label keys 67 // are prefixed with "aiplatform.googleapis.com/" and are immutable. 68 Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 69 // Optional. Description of the FeatureMonitor. 70 Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` 71 // Required. Schedule config for the FeatureMonitor. 72 ScheduleConfig *ScheduleConfig `protobuf:"bytes,7,opt,name=schedule_config,json=scheduleConfig,proto3" json:"schedule_config,omitempty"` 73 // Required. Feature selection config for the FeatureMonitor. 74 FeatureSelectionConfig *FeatureSelectionConfig `protobuf:"bytes,8,opt,name=feature_selection_config,json=featureSelectionConfig,proto3" json:"feature_selection_config,omitempty"` 75 } 76 77 func (x *FeatureMonitor) Reset() { 78 *x = FeatureMonitor{} 79 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[0] 80 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 81 ms.StoreMessageInfo(mi) 82 } 83 84 func (x *FeatureMonitor) String() string { 85 return protoimpl.X.MessageStringOf(x) 86 } 87 88 func (*FeatureMonitor) ProtoMessage() {} 89 90 func (x *FeatureMonitor) ProtoReflect() protoreflect.Message { 91 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[0] 92 if x != nil { 93 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 94 if ms.LoadMessageInfo() == nil { 95 ms.StoreMessageInfo(mi) 96 } 97 return ms 98 } 99 return mi.MessageOf(x) 100 } 101 102 // Deprecated: Use FeatureMonitor.ProtoReflect.Descriptor instead. 103 func (*FeatureMonitor) Descriptor() ([]byte, []int) { 104 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP(), []int{0} 105 } 106 107 func (x *FeatureMonitor) GetName() string { 108 if x != nil { 109 return x.Name 110 } 111 return "" 112 } 113 114 func (x *FeatureMonitor) GetCreateTime() *timestamppb.Timestamp { 115 if x != nil { 116 return x.CreateTime 117 } 118 return nil 119 } 120 121 func (x *FeatureMonitor) GetUpdateTime() *timestamppb.Timestamp { 122 if x != nil { 123 return x.UpdateTime 124 } 125 return nil 126 } 127 128 func (x *FeatureMonitor) GetEtag() string { 129 if x != nil { 130 return x.Etag 131 } 132 return "" 133 } 134 135 func (x *FeatureMonitor) GetLabels() map[string]string { 136 if x != nil { 137 return x.Labels 138 } 139 return nil 140 } 141 142 func (x *FeatureMonitor) GetDescription() string { 143 if x != nil { 144 return x.Description 145 } 146 return "" 147 } 148 149 func (x *FeatureMonitor) GetScheduleConfig() *ScheduleConfig { 150 if x != nil { 151 return x.ScheduleConfig 152 } 153 return nil 154 } 155 156 func (x *FeatureMonitor) GetFeatureSelectionConfig() *FeatureSelectionConfig { 157 if x != nil { 158 return x.FeatureSelectionConfig 159 } 160 return nil 161 } 162 163 // Schedule configuration for the FeatureMonitor. 164 type ScheduleConfig struct { 165 state protoimpl.MessageState 166 sizeCache protoimpl.SizeCache 167 unknownFields protoimpl.UnknownFields 168 169 // Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled 170 // runs. To explicitly set a timezone to the cron tab, apply a prefix in 171 // the cron tab: "CRON_TZ=${IANA_TIME_ZONE}" or "TZ=${IANA_TIME_ZONE}". 172 // The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone 173 // database. For example, "CRON_TZ=America/New_York 1 * * * *", or 174 // "TZ=America/New_York 1 * * * *". 175 Cron string `protobuf:"bytes,1,opt,name=cron,proto3" json:"cron,omitempty"` 176 } 177 178 func (x *ScheduleConfig) Reset() { 179 *x = ScheduleConfig{} 180 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[1] 181 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 182 ms.StoreMessageInfo(mi) 183 } 184 185 func (x *ScheduleConfig) String() string { 186 return protoimpl.X.MessageStringOf(x) 187 } 188 189 func (*ScheduleConfig) ProtoMessage() {} 190 191 func (x *ScheduleConfig) ProtoReflect() protoreflect.Message { 192 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[1] 193 if x != nil { 194 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 195 if ms.LoadMessageInfo() == nil { 196 ms.StoreMessageInfo(mi) 197 } 198 return ms 199 } 200 return mi.MessageOf(x) 201 } 202 203 // Deprecated: Use ScheduleConfig.ProtoReflect.Descriptor instead. 204 func (*ScheduleConfig) Descriptor() ([]byte, []int) { 205 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP(), []int{1} 206 } 207 208 func (x *ScheduleConfig) GetCron() string { 209 if x != nil { 210 return x.Cron 211 } 212 return "" 213 } 214 215 // Feature selection configuration for the FeatureMonitor. 216 type FeatureSelectionConfig struct { 217 state protoimpl.MessageState 218 sizeCache protoimpl.SizeCache 219 unknownFields protoimpl.UnknownFields 220 221 // Optional. A list of features to be monitored and each feature's drift 222 // threshold. 223 FeatureConfigs []*FeatureSelectionConfig_FeatureConfig `protobuf:"bytes,1,rep,name=feature_configs,json=featureConfigs,proto3" json:"feature_configs,omitempty"` 224 } 225 226 func (x *FeatureSelectionConfig) Reset() { 227 *x = FeatureSelectionConfig{} 228 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[2] 229 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 230 ms.StoreMessageInfo(mi) 231 } 232 233 func (x *FeatureSelectionConfig) String() string { 234 return protoimpl.X.MessageStringOf(x) 235 } 236 237 func (*FeatureSelectionConfig) ProtoMessage() {} 238 239 func (x *FeatureSelectionConfig) ProtoReflect() protoreflect.Message { 240 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[2] 241 if x != nil { 242 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 243 if ms.LoadMessageInfo() == nil { 244 ms.StoreMessageInfo(mi) 245 } 246 return ms 247 } 248 return mi.MessageOf(x) 249 } 250 251 // Deprecated: Use FeatureSelectionConfig.ProtoReflect.Descriptor instead. 252 func (*FeatureSelectionConfig) Descriptor() ([]byte, []int) { 253 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP(), []int{2} 254 } 255 256 func (x *FeatureSelectionConfig) GetFeatureConfigs() []*FeatureSelectionConfig_FeatureConfig { 257 if x != nil { 258 return x.FeatureConfigs 259 } 260 return nil 261 } 262 263 // Stats and Anomaly generated by FeatureMonitorJobs. Anomaly only includes 264 // Drift. 265 type FeatureStatsAndAnomaly struct { 266 state protoimpl.MessageState 267 sizeCache protoimpl.SizeCache 268 unknownFields protoimpl.UnknownFields 269 270 // Feature Id. 271 FeatureId string `protobuf:"bytes,1,opt,name=feature_id,json=featureId,proto3" json:"feature_id,omitempty"` 272 // Feature stats. e.g. histogram buckets. 273 // In the format of tensorflow.metadata.v0.DatasetFeatureStatistics. 274 FeatureStats *structpb.Value `protobuf:"bytes,2,opt,name=feature_stats,json=featureStats,proto3" json:"feature_stats,omitempty"` 275 // Deviation from the current stats to baseline stats. 276 // 1. For categorical feature, the distribution distance is calculated by 277 // L-inifinity norm. 278 // 2. For numerical feature, the distribution distance is calculated by 279 // Jensen–Shannon divergence. 280 DistributionDeviation float64 `protobuf:"fixed64,3,opt,name=distribution_deviation,json=distributionDeviation,proto3" json:"distribution_deviation,omitempty"` 281 // This is the threshold used when detecting drifts, which is set in 282 // FeatureMonitor.FeatureSelectionConfig.FeatureConfig.drift_threshold 283 DriftDetectionThreshold float64 `protobuf:"fixed64,4,opt,name=drift_detection_threshold,json=driftDetectionThreshold,proto3" json:"drift_detection_threshold,omitempty"` 284 // If set to true, indicates current stats is detected as and comparing 285 // with baseline stats. 286 DriftDetected bool `protobuf:"varint,5,opt,name=drift_detected,json=driftDetected,proto3" json:"drift_detected,omitempty"` 287 // The timestamp we take snapshot for feature values to generate stats. 288 StatsTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=stats_time,json=statsTime,proto3" json:"stats_time,omitempty"` 289 // The ID of the FeatureMonitorJob that generated this FeatureStatsAndAnomaly. 290 FeatureMonitorJobId int64 `protobuf:"varint,7,opt,name=feature_monitor_job_id,json=featureMonitorJobId,proto3" json:"feature_monitor_job_id,omitempty"` 291 // The ID of the FeatureMonitor that this FeatureStatsAndAnomaly generated 292 // according to. 293 FeatureMonitorId string `protobuf:"bytes,8,opt,name=feature_monitor_id,json=featureMonitorId,proto3" json:"feature_monitor_id,omitempty"` 294 } 295 296 func (x *FeatureStatsAndAnomaly) Reset() { 297 *x = FeatureStatsAndAnomaly{} 298 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[3] 299 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 300 ms.StoreMessageInfo(mi) 301 } 302 303 func (x *FeatureStatsAndAnomaly) String() string { 304 return protoimpl.X.MessageStringOf(x) 305 } 306 307 func (*FeatureStatsAndAnomaly) ProtoMessage() {} 308 309 func (x *FeatureStatsAndAnomaly) ProtoReflect() protoreflect.Message { 310 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[3] 311 if x != nil { 312 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 313 if ms.LoadMessageInfo() == nil { 314 ms.StoreMessageInfo(mi) 315 } 316 return ms 317 } 318 return mi.MessageOf(x) 319 } 320 321 // Deprecated: Use FeatureStatsAndAnomaly.ProtoReflect.Descriptor instead. 322 func (*FeatureStatsAndAnomaly) Descriptor() ([]byte, []int) { 323 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP(), []int{3} 324 } 325 326 func (x *FeatureStatsAndAnomaly) GetFeatureId() string { 327 if x != nil { 328 return x.FeatureId 329 } 330 return "" 331 } 332 333 func (x *FeatureStatsAndAnomaly) GetFeatureStats() *structpb.Value { 334 if x != nil { 335 return x.FeatureStats 336 } 337 return nil 338 } 339 340 func (x *FeatureStatsAndAnomaly) GetDistributionDeviation() float64 { 341 if x != nil { 342 return x.DistributionDeviation 343 } 344 return 0 345 } 346 347 func (x *FeatureStatsAndAnomaly) GetDriftDetectionThreshold() float64 { 348 if x != nil { 349 return x.DriftDetectionThreshold 350 } 351 return 0 352 } 353 354 func (x *FeatureStatsAndAnomaly) GetDriftDetected() bool { 355 if x != nil { 356 return x.DriftDetected 357 } 358 return false 359 } 360 361 func (x *FeatureStatsAndAnomaly) GetStatsTime() *timestamppb.Timestamp { 362 if x != nil { 363 return x.StatsTime 364 } 365 return nil 366 } 367 368 func (x *FeatureStatsAndAnomaly) GetFeatureMonitorJobId() int64 { 369 if x != nil { 370 return x.FeatureMonitorJobId 371 } 372 return 0 373 } 374 375 func (x *FeatureStatsAndAnomaly) GetFeatureMonitorId() string { 376 if x != nil { 377 return x.FeatureMonitorId 378 } 379 return "" 380 } 381 382 // Defines how to select FeatureStatsAndAnomaly to be populated in response. 383 // If set, retrieves FeatureStatsAndAnomaly generated by FeatureMonitors based 384 // on this spec. 385 type FeatureStatsAndAnomalySpec struct { 386 state protoimpl.MessageState 387 sizeCache protoimpl.SizeCache 388 unknownFields protoimpl.UnknownFields 389 390 // Optional. If set, returns the most recent count of stats. Valid value is 391 // [0, 100]. If stats_time_range is set, return most recent count of stats 392 // within the stats_time_range. 393 LatestStatsCount *int32 `protobuf:"varint,1,opt,name=latest_stats_count,json=latestStatsCount,proto3,oneof" json:"latest_stats_count,omitempty"` 394 // Optional. If set, return all stats generated between [start_time, 395 // end_time). If latest_stats_count is set, return the most recent count of 396 // stats within the stats_time_range. 397 StatsTimeRange *interval.Interval `protobuf:"bytes,2,opt,name=stats_time_range,json=statsTimeRange,proto3" json:"stats_time_range,omitempty"` 398 } 399 400 func (x *FeatureStatsAndAnomalySpec) Reset() { 401 *x = FeatureStatsAndAnomalySpec{} 402 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[4] 403 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 404 ms.StoreMessageInfo(mi) 405 } 406 407 func (x *FeatureStatsAndAnomalySpec) String() string { 408 return protoimpl.X.MessageStringOf(x) 409 } 410 411 func (*FeatureStatsAndAnomalySpec) ProtoMessage() {} 412 413 func (x *FeatureStatsAndAnomalySpec) ProtoReflect() protoreflect.Message { 414 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[4] 415 if x != nil { 416 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 417 if ms.LoadMessageInfo() == nil { 418 ms.StoreMessageInfo(mi) 419 } 420 return ms 421 } 422 return mi.MessageOf(x) 423 } 424 425 // Deprecated: Use FeatureStatsAndAnomalySpec.ProtoReflect.Descriptor instead. 426 func (*FeatureStatsAndAnomalySpec) Descriptor() ([]byte, []int) { 427 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP(), []int{4} 428 } 429 430 func (x *FeatureStatsAndAnomalySpec) GetLatestStatsCount() int32 { 431 if x != nil && x.LatestStatsCount != nil { 432 return *x.LatestStatsCount 433 } 434 return 0 435 } 436 437 func (x *FeatureStatsAndAnomalySpec) GetStatsTimeRange() *interval.Interval { 438 if x != nil { 439 return x.StatsTimeRange 440 } 441 return nil 442 } 443 444 // Feature configuration. 445 type FeatureSelectionConfig_FeatureConfig struct { 446 state protoimpl.MessageState 447 sizeCache protoimpl.SizeCache 448 unknownFields protoimpl.UnknownFields 449 450 // Required. The ID of the feature resource. Final component of the 451 // Feature's resource name. 452 FeatureId string `protobuf:"bytes,1,opt,name=feature_id,json=featureId,proto3" json:"feature_id,omitempty"` 453 // Optional. Drift threshold. If calculated difference with baseline data 454 // larger than threshold, it will be considered as the feature has drift. If 455 // not present, the threshold will be default to 0.3. 456 DriftThreshold float64 `protobuf:"fixed64,2,opt,name=drift_threshold,json=driftThreshold,proto3" json:"drift_threshold,omitempty"` 457 } 458 459 func (x *FeatureSelectionConfig_FeatureConfig) Reset() { 460 *x = FeatureSelectionConfig_FeatureConfig{} 461 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[6] 462 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 463 ms.StoreMessageInfo(mi) 464 } 465 466 func (x *FeatureSelectionConfig_FeatureConfig) String() string { 467 return protoimpl.X.MessageStringOf(x) 468 } 469 470 func (*FeatureSelectionConfig_FeatureConfig) ProtoMessage() {} 471 472 func (x *FeatureSelectionConfig_FeatureConfig) ProtoReflect() protoreflect.Message { 473 mi := &file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[6] 474 if x != nil { 475 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 476 if ms.LoadMessageInfo() == nil { 477 ms.StoreMessageInfo(mi) 478 } 479 return ms 480 } 481 return mi.MessageOf(x) 482 } 483 484 // Deprecated: Use FeatureSelectionConfig_FeatureConfig.ProtoReflect.Descriptor instead. 485 func (*FeatureSelectionConfig_FeatureConfig) Descriptor() ([]byte, []int) { 486 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP(), []int{2, 0} 487 } 488 489 func (x *FeatureSelectionConfig_FeatureConfig) GetFeatureId() string { 490 if x != nil { 491 return x.FeatureId 492 } 493 return "" 494 } 495 496 func (x *FeatureSelectionConfig_FeatureConfig) GetDriftThreshold() float64 { 497 if x != nil { 498 return x.DriftThreshold 499 } 500 return 0 501 } 502 503 var File_google_cloud_aiplatform_v1beta1_feature_monitor_proto protoreflect.FileDescriptor 504 505 var file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDesc = []byte{ 506 0x0a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 507 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 508 0x31, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 509 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 510 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 511 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 512 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 513 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 514 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 515 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 516 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 517 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 518 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 519 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 520 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 521 0x94, 0x06, 0x0a, 0x0e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 522 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 523 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 524 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 525 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 526 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 527 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 528 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 529 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 530 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 531 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 532 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 533 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x58, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 534 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 535 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 536 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 537 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 538 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 539 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 540 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 541 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0f, 0x73, 0x63, 0x68, 542 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 543 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 544 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 545 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 546 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 547 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x76, 0x0a, 0x18, 0x66, 0x65, 0x61, 0x74, 548 0x75, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 549 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 550 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 551 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x61, 552 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 553 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x16, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 554 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 555 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 556 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 557 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 558 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xb8, 0x01, 0xea, 0x41, 559 0xb4, 0x01, 0x0a, 0x28, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 560 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 561 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x67, 0x70, 0x72, 562 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 563 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 564 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x47, 0x72, 0x6f, 565 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x67, 0x72, 0x6f, 566 0x75, 0x70, 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 567 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 568 0x69, 0x74, 0x6f, 0x72, 0x7d, 0x2a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 569 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x73, 0x32, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 570 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x22, 0x24, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 571 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x6e, 572 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x22, 0xf0, 0x01, 0x0a, 573 0x16, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 574 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x73, 0x0a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 575 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 576 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 577 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 578 0x61, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 579 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 580 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x66, 0x65, 581 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x61, 0x0a, 0x0d, 582 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x0a, 583 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 584 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 585 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 586 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 587 0x0e, 0x64, 0x72, 0x69, 0x66, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 588 0xac, 0x03, 0x0a, 0x16, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 589 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 590 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 591 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0d, 0x66, 0x65, 0x61, 592 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 593 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 594 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 595 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 596 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 597 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 598 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 599 0x19, 0x64, 0x72, 0x69, 0x66, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 600 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 601 0x52, 0x17, 0x64, 0x72, 0x69, 0x66, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 602 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x72, 0x69, 603 0x66, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 604 0x08, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x66, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 605 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 606 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 607 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 608 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x66, 609 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6a, 610 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x66, 0x65, 0x61, 611 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x49, 0x64, 612 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 613 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x65, 614 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0xb1, 615 0x01, 0x0a, 0x1a, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x41, 616 0x6e, 0x64, 0x41, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x36, 0x0a, 617 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 618 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 619 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 620 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x74, 621 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 622 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 623 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, 624 0x74, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 625 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 626 0x6e, 0x74, 0x42, 0xea, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 627 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 628 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x13, 0x46, 0x65, 0x61, 0x74, 629 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 630 0x01, 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 631 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 632 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 633 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 634 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 635 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 636 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 637 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 638 0x72, 0x6d, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 639 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 640 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 641 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 642 } 643 644 var ( 645 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescOnce sync.Once 646 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescData = file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDesc 647 ) 648 649 func file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescGZIP() []byte { 650 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescOnce.Do(func() { 651 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescData) 652 }) 653 return file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDescData 654 } 655 656 var file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes = make([]protoimpl.MessageInfo, 7) 657 var file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_goTypes = []any{ 658 (*FeatureMonitor)(nil), // 0: google.cloud.aiplatform.v1beta1.FeatureMonitor 659 (*ScheduleConfig)(nil), // 1: google.cloud.aiplatform.v1beta1.ScheduleConfig 660 (*FeatureSelectionConfig)(nil), // 2: google.cloud.aiplatform.v1beta1.FeatureSelectionConfig 661 (*FeatureStatsAndAnomaly)(nil), // 3: google.cloud.aiplatform.v1beta1.FeatureStatsAndAnomaly 662 (*FeatureStatsAndAnomalySpec)(nil), // 4: google.cloud.aiplatform.v1beta1.FeatureStatsAndAnomalySpec 663 nil, // 5: google.cloud.aiplatform.v1beta1.FeatureMonitor.LabelsEntry 664 (*FeatureSelectionConfig_FeatureConfig)(nil), // 6: google.cloud.aiplatform.v1beta1.FeatureSelectionConfig.FeatureConfig 665 (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp 666 (*structpb.Value)(nil), // 8: google.protobuf.Value 667 (*interval.Interval)(nil), // 9: google.type.Interval 668 } 669 var file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_depIdxs = []int32{ 670 7, // 0: google.cloud.aiplatform.v1beta1.FeatureMonitor.create_time:type_name -> google.protobuf.Timestamp 671 7, // 1: google.cloud.aiplatform.v1beta1.FeatureMonitor.update_time:type_name -> google.protobuf.Timestamp 672 5, // 2: google.cloud.aiplatform.v1beta1.FeatureMonitor.labels:type_name -> google.cloud.aiplatform.v1beta1.FeatureMonitor.LabelsEntry 673 1, // 3: google.cloud.aiplatform.v1beta1.FeatureMonitor.schedule_config:type_name -> google.cloud.aiplatform.v1beta1.ScheduleConfig 674 2, // 4: google.cloud.aiplatform.v1beta1.FeatureMonitor.feature_selection_config:type_name -> google.cloud.aiplatform.v1beta1.FeatureSelectionConfig 675 6, // 5: google.cloud.aiplatform.v1beta1.FeatureSelectionConfig.feature_configs:type_name -> google.cloud.aiplatform.v1beta1.FeatureSelectionConfig.FeatureConfig 676 8, // 6: google.cloud.aiplatform.v1beta1.FeatureStatsAndAnomaly.feature_stats:type_name -> google.protobuf.Value 677 7, // 7: google.cloud.aiplatform.v1beta1.FeatureStatsAndAnomaly.stats_time:type_name -> google.protobuf.Timestamp 678 9, // 8: google.cloud.aiplatform.v1beta1.FeatureStatsAndAnomalySpec.stats_time_range:type_name -> google.type.Interval 679 9, // [9:9] is the sub-list for method output_type 680 9, // [9:9] is the sub-list for method input_type 681 9, // [9:9] is the sub-list for extension type_name 682 9, // [9:9] is the sub-list for extension extendee 683 0, // [0:9] is the sub-list for field type_name 684 } 685 686 func init() { file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_init() } 687 func file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_init() { 688 if File_google_cloud_aiplatform_v1beta1_feature_monitor_proto != nil { 689 return 690 } 691 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes[4].OneofWrappers = []any{} 692 type x struct{} 693 out := protoimpl.TypeBuilder{ 694 File: protoimpl.DescBuilder{ 695 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 696 RawDescriptor: file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDesc, 697 NumEnums: 0, 698 NumMessages: 7, 699 NumExtensions: 0, 700 NumServices: 0, 701 }, 702 GoTypes: file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_goTypes, 703 DependencyIndexes: file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_depIdxs, 704 MessageInfos: file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_msgTypes, 705 }.Build() 706 File_google_cloud_aiplatform_v1beta1_feature_monitor_proto = out.File 707 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_rawDesc = nil 708 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_goTypes = nil 709 file_google_cloud_aiplatform_v1beta1_feature_monitor_proto_depIdxs = nil 710 }