1// Copyright 2018 Google Inc. All Rights Reserved. 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.33.0 18// protoc v3.21.12 19// source: metrics.proto 20 21package metrics_proto 22 23import ( 24 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 25 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 26 reflect "reflect" 27 sync "sync" 28) 29 30const ( 31 // Verify that this generated code is sufficiently up-to-date. 32 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 33 // Verify that runtime/protoimpl is sufficiently up-to-date. 34 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 35) 36 37type MetricsBase_BuildVariant int32 38 39const ( 40 MetricsBase_USER MetricsBase_BuildVariant = 0 41 MetricsBase_USERDEBUG MetricsBase_BuildVariant = 1 42 MetricsBase_ENG MetricsBase_BuildVariant = 2 43) 44 45// Enum value maps for MetricsBase_BuildVariant. 46var ( 47 MetricsBase_BuildVariant_name = map[int32]string{ 48 0: "USER", 49 1: "USERDEBUG", 50 2: "ENG", 51 } 52 MetricsBase_BuildVariant_value = map[string]int32{ 53 "USER": 0, 54 "USERDEBUG": 1, 55 "ENG": 2, 56 } 57) 58 59func (x MetricsBase_BuildVariant) Enum() *MetricsBase_BuildVariant { 60 p := new(MetricsBase_BuildVariant) 61 *p = x 62 return p 63} 64 65func (x MetricsBase_BuildVariant) String() string { 66 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 67} 68 69func (MetricsBase_BuildVariant) Descriptor() protoreflect.EnumDescriptor { 70 return file_metrics_proto_enumTypes[0].Descriptor() 71} 72 73func (MetricsBase_BuildVariant) Type() protoreflect.EnumType { 74 return &file_metrics_proto_enumTypes[0] 75} 76 77func (x MetricsBase_BuildVariant) Number() protoreflect.EnumNumber { 78 return protoreflect.EnumNumber(x) 79} 80 81// Deprecated: Do not use. 82func (x *MetricsBase_BuildVariant) UnmarshalJSON(b []byte) error { 83 num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) 84 if err != nil { 85 return err 86 } 87 *x = MetricsBase_BuildVariant(num) 88 return nil 89} 90 91// Deprecated: Use MetricsBase_BuildVariant.Descriptor instead. 92func (MetricsBase_BuildVariant) EnumDescriptor() ([]byte, []int) { 93 return file_metrics_proto_rawDescGZIP(), []int{0, 0} 94} 95 96type MetricsBase_Arch int32 97 98const ( 99 MetricsBase_UNKNOWN MetricsBase_Arch = 0 100 MetricsBase_ARM MetricsBase_Arch = 1 101 MetricsBase_ARM64 MetricsBase_Arch = 2 102 MetricsBase_X86 MetricsBase_Arch = 3 103 MetricsBase_X86_64 MetricsBase_Arch = 4 104) 105 106// Enum value maps for MetricsBase_Arch. 107var ( 108 MetricsBase_Arch_name = map[int32]string{ 109 0: "UNKNOWN", 110 1: "ARM", 111 2: "ARM64", 112 3: "X86", 113 4: "X86_64", 114 } 115 MetricsBase_Arch_value = map[string]int32{ 116 "UNKNOWN": 0, 117 "ARM": 1, 118 "ARM64": 2, 119 "X86": 3, 120 "X86_64": 4, 121 } 122) 123 124func (x MetricsBase_Arch) Enum() *MetricsBase_Arch { 125 p := new(MetricsBase_Arch) 126 *p = x 127 return p 128} 129 130func (x MetricsBase_Arch) String() string { 131 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 132} 133 134func (MetricsBase_Arch) Descriptor() protoreflect.EnumDescriptor { 135 return file_metrics_proto_enumTypes[1].Descriptor() 136} 137 138func (MetricsBase_Arch) Type() protoreflect.EnumType { 139 return &file_metrics_proto_enumTypes[1] 140} 141 142func (x MetricsBase_Arch) Number() protoreflect.EnumNumber { 143 return protoreflect.EnumNumber(x) 144} 145 146// Deprecated: Do not use. 147func (x *MetricsBase_Arch) UnmarshalJSON(b []byte) error { 148 num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) 149 if err != nil { 150 return err 151 } 152 *x = MetricsBase_Arch(num) 153 return nil 154} 155 156// Deprecated: Use MetricsBase_Arch.Descriptor instead. 157func (MetricsBase_Arch) EnumDescriptor() ([]byte, []int) { 158 return file_metrics_proto_rawDescGZIP(), []int{0, 1} 159} 160 161type BuildConfig_NinjaWeightListSource int32 162 163const ( 164 BuildConfig_NOT_USED BuildConfig_NinjaWeightListSource = 0 165 BuildConfig_NINJA_LOG BuildConfig_NinjaWeightListSource = 1 166 BuildConfig_EVENLY_DISTRIBUTED BuildConfig_NinjaWeightListSource = 2 167 BuildConfig_EXTERNAL_FILE BuildConfig_NinjaWeightListSource = 3 168 BuildConfig_HINT_FROM_SOONG BuildConfig_NinjaWeightListSource = 4 169) 170 171// Enum value maps for BuildConfig_NinjaWeightListSource. 172var ( 173 BuildConfig_NinjaWeightListSource_name = map[int32]string{ 174 0: "NOT_USED", 175 1: "NINJA_LOG", 176 2: "EVENLY_DISTRIBUTED", 177 3: "EXTERNAL_FILE", 178 4: "HINT_FROM_SOONG", 179 } 180 BuildConfig_NinjaWeightListSource_value = map[string]int32{ 181 "NOT_USED": 0, 182 "NINJA_LOG": 1, 183 "EVENLY_DISTRIBUTED": 2, 184 "EXTERNAL_FILE": 3, 185 "HINT_FROM_SOONG": 4, 186 } 187) 188 189func (x BuildConfig_NinjaWeightListSource) Enum() *BuildConfig_NinjaWeightListSource { 190 p := new(BuildConfig_NinjaWeightListSource) 191 *p = x 192 return p 193} 194 195func (x BuildConfig_NinjaWeightListSource) String() string { 196 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 197} 198 199func (BuildConfig_NinjaWeightListSource) Descriptor() protoreflect.EnumDescriptor { 200 return file_metrics_proto_enumTypes[2].Descriptor() 201} 202 203func (BuildConfig_NinjaWeightListSource) Type() protoreflect.EnumType { 204 return &file_metrics_proto_enumTypes[2] 205} 206 207func (x BuildConfig_NinjaWeightListSource) Number() protoreflect.EnumNumber { 208 return protoreflect.EnumNumber(x) 209} 210 211// Deprecated: Do not use. 212func (x *BuildConfig_NinjaWeightListSource) UnmarshalJSON(b []byte) error { 213 num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) 214 if err != nil { 215 return err 216 } 217 *x = BuildConfig_NinjaWeightListSource(num) 218 return nil 219} 220 221// Deprecated: Use BuildConfig_NinjaWeightListSource.Descriptor instead. 222func (BuildConfig_NinjaWeightListSource) EnumDescriptor() ([]byte, []int) { 223 return file_metrics_proto_rawDescGZIP(), []int{1, 0} 224} 225 226type ModuleTypeInfo_BuildSystem int32 227 228const ( 229 ModuleTypeInfo_UNKNOWN ModuleTypeInfo_BuildSystem = 0 230 ModuleTypeInfo_SOONG ModuleTypeInfo_BuildSystem = 1 231 ModuleTypeInfo_MAKE ModuleTypeInfo_BuildSystem = 2 232) 233 234// Enum value maps for ModuleTypeInfo_BuildSystem. 235var ( 236 ModuleTypeInfo_BuildSystem_name = map[int32]string{ 237 0: "UNKNOWN", 238 1: "SOONG", 239 2: "MAKE", 240 } 241 ModuleTypeInfo_BuildSystem_value = map[string]int32{ 242 "UNKNOWN": 0, 243 "SOONG": 1, 244 "MAKE": 2, 245 } 246) 247 248func (x ModuleTypeInfo_BuildSystem) Enum() *ModuleTypeInfo_BuildSystem { 249 p := new(ModuleTypeInfo_BuildSystem) 250 *p = x 251 return p 252} 253 254func (x ModuleTypeInfo_BuildSystem) String() string { 255 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 256} 257 258func (ModuleTypeInfo_BuildSystem) Descriptor() protoreflect.EnumDescriptor { 259 return file_metrics_proto_enumTypes[3].Descriptor() 260} 261 262func (ModuleTypeInfo_BuildSystem) Type() protoreflect.EnumType { 263 return &file_metrics_proto_enumTypes[3] 264} 265 266func (x ModuleTypeInfo_BuildSystem) Number() protoreflect.EnumNumber { 267 return protoreflect.EnumNumber(x) 268} 269 270// Deprecated: Do not use. 271func (x *ModuleTypeInfo_BuildSystem) UnmarshalJSON(b []byte) error { 272 num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) 273 if err != nil { 274 return err 275 } 276 *x = ModuleTypeInfo_BuildSystem(num) 277 return nil 278} 279 280// Deprecated: Use ModuleTypeInfo_BuildSystem.Descriptor instead. 281func (ModuleTypeInfo_BuildSystem) EnumDescriptor() ([]byte, []int) { 282 return file_metrics_proto_rawDescGZIP(), []int{10, 0} 283} 284 285type ExpConfigFetcher_ConfigStatus int32 286 287const ( 288 ExpConfigFetcher_NO_CONFIG ExpConfigFetcher_ConfigStatus = 0 289 ExpConfigFetcher_CONFIG ExpConfigFetcher_ConfigStatus = 1 290 ExpConfigFetcher_ERROR ExpConfigFetcher_ConfigStatus = 2 291 ExpConfigFetcher_MISSING_GCERT ExpConfigFetcher_ConfigStatus = 3 292) 293 294// Enum value maps for ExpConfigFetcher_ConfigStatus. 295var ( 296 ExpConfigFetcher_ConfigStatus_name = map[int32]string{ 297 0: "NO_CONFIG", 298 1: "CONFIG", 299 2: "ERROR", 300 3: "MISSING_GCERT", 301 } 302 ExpConfigFetcher_ConfigStatus_value = map[string]int32{ 303 "NO_CONFIG": 0, 304 "CONFIG": 1, 305 "ERROR": 2, 306 "MISSING_GCERT": 3, 307 } 308) 309 310func (x ExpConfigFetcher_ConfigStatus) Enum() *ExpConfigFetcher_ConfigStatus { 311 p := new(ExpConfigFetcher_ConfigStatus) 312 *p = x 313 return p 314} 315 316func (x ExpConfigFetcher_ConfigStatus) String() string { 317 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 318} 319 320func (ExpConfigFetcher_ConfigStatus) Descriptor() protoreflect.EnumDescriptor { 321 return file_metrics_proto_enumTypes[4].Descriptor() 322} 323 324func (ExpConfigFetcher_ConfigStatus) Type() protoreflect.EnumType { 325 return &file_metrics_proto_enumTypes[4] 326} 327 328func (x ExpConfigFetcher_ConfigStatus) Number() protoreflect.EnumNumber { 329 return protoreflect.EnumNumber(x) 330} 331 332// Deprecated: Do not use. 333func (x *ExpConfigFetcher_ConfigStatus) UnmarshalJSON(b []byte) error { 334 num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) 335 if err != nil { 336 return err 337 } 338 *x = ExpConfigFetcher_ConfigStatus(num) 339 return nil 340} 341 342// Deprecated: Use ExpConfigFetcher_ConfigStatus.Descriptor instead. 343func (ExpConfigFetcher_ConfigStatus) EnumDescriptor() ([]byte, []int) { 344 return file_metrics_proto_rawDescGZIP(), []int{14, 0} 345} 346 347type MetricsBase struct { 348 state protoimpl.MessageState 349 sizeCache protoimpl.SizeCache 350 unknownFields protoimpl.UnknownFields 351 352 // Timestamp generated when the build starts. 353 BuildDateTimestamp *int64 `protobuf:"varint,1,opt,name=build_date_timestamp,json=buildDateTimestamp" json:"build_date_timestamp,omitempty"` 354 // It is usually used to specify the branch name [and release candidate]. 355 BuildId *string `protobuf:"bytes,2,opt,name=build_id,json=buildId" json:"build_id,omitempty"` 356 // The platform version codename, eg. P, Q, REL. 357 PlatformVersionCodename *string `protobuf:"bytes,3,opt,name=platform_version_codename,json=platformVersionCodename" json:"platform_version_codename,omitempty"` 358 // The target product information, eg. aosp_arm. 359 TargetProduct *string `protobuf:"bytes,4,opt,name=target_product,json=targetProduct" json:"target_product,omitempty"` 360 // The target build variant information, eg. eng. 361 TargetBuildVariant *MetricsBase_BuildVariant `protobuf:"varint,5,opt,name=target_build_variant,json=targetBuildVariant,enum=soong_build_metrics.MetricsBase_BuildVariant,def=2" json:"target_build_variant,omitempty"` 362 // The target arch information, eg. arm. 363 TargetArch *MetricsBase_Arch `protobuf:"varint,6,opt,name=target_arch,json=targetArch,enum=soong_build_metrics.MetricsBase_Arch,def=0" json:"target_arch,omitempty"` 364 // The target arch variant information, eg. armv7-a-neon. 365 TargetArchVariant *string `protobuf:"bytes,7,opt,name=target_arch_variant,json=targetArchVariant" json:"target_arch_variant,omitempty"` 366 // The target cpu variant information, eg. generic. 367 TargetCpuVariant *string `protobuf:"bytes,8,opt,name=target_cpu_variant,json=targetCpuVariant" json:"target_cpu_variant,omitempty"` 368 // The host arch information, eg. x86_64. 369 HostArch *MetricsBase_Arch `protobuf:"varint,9,opt,name=host_arch,json=hostArch,enum=soong_build_metrics.MetricsBase_Arch,def=0" json:"host_arch,omitempty"` 370 // The host 2nd arch information, eg. x86. 371 Host_2NdArch *MetricsBase_Arch `protobuf:"varint,10,opt,name=host_2nd_arch,json=host2ndArch,enum=soong_build_metrics.MetricsBase_Arch,def=0" json:"host_2nd_arch,omitempty"` 372 // The host os information, eg. linux. 373 HostOs *string `protobuf:"bytes,11,opt,name=host_os,json=hostOs" json:"host_os,omitempty"` 374 // The host os extra information, eg. Linux-4.17.0-3rodete2-amd64-x86_64-Debian-GNU. 375 HostOsExtra *string `protobuf:"bytes,12,opt,name=host_os_extra,json=hostOsExtra" json:"host_os_extra,omitempty"` 376 // The host cross os information, eg. windows. 377 HostCrossOs *string `protobuf:"bytes,13,opt,name=host_cross_os,json=hostCrossOs" json:"host_cross_os,omitempty"` 378 // The host cross arch information, eg. x86. 379 HostCrossArch *string `protobuf:"bytes,14,opt,name=host_cross_arch,json=hostCrossArch" json:"host_cross_arch,omitempty"` 380 // The host cross 2nd arch information, eg. x86_64. 381 HostCross_2NdArch *string `protobuf:"bytes,15,opt,name=host_cross_2nd_arch,json=hostCross2ndArch" json:"host_cross_2nd_arch,omitempty"` 382 // The directory for generated built artifacts installation, eg. out. 383 OutDir *string `protobuf:"bytes,16,opt,name=out_dir,json=outDir" json:"out_dir,omitempty"` 384 // The metrics for calling various tools (microfactory) before Soong_UI starts. 385 SetupTools []*PerfInfo `protobuf:"bytes,17,rep,name=setup_tools,json=setupTools" json:"setup_tools,omitempty"` 386 // The metrics for calling Kati by multiple times. 387 KatiRuns []*PerfInfo `protobuf:"bytes,18,rep,name=kati_runs,json=katiRuns" json:"kati_runs,omitempty"` 388 // The metrics for calling Soong. 389 SoongRuns []*PerfInfo `protobuf:"bytes,19,rep,name=soong_runs,json=soongRuns" json:"soong_runs,omitempty"` 390 // The metrics for calling Ninja. 391 NinjaRuns []*PerfInfo `protobuf:"bytes,20,rep,name=ninja_runs,json=ninjaRuns" json:"ninja_runs,omitempty"` 392 // The metrics for the whole build 393 Total *PerfInfo `protobuf:"bytes,21,opt,name=total" json:"total,omitempty"` 394 // Deprecated because instead of embedding in a MetricsBase, we keep 395 // SoongBuildMetrics in its own file 396 // 397 // Deprecated: Marked as deprecated in metrics.proto. 398 SoongBuildMetrics *SoongBuildMetrics `protobuf:"bytes,22,opt,name=soong_build_metrics,json=soongBuildMetrics" json:"soong_build_metrics,omitempty"` 399 BuildConfig *BuildConfig `protobuf:"bytes,23,opt,name=build_config,json=buildConfig" json:"build_config,omitempty"` 400 // The hostname of the machine. 401 Hostname *string `protobuf:"bytes,24,opt,name=hostname" json:"hostname,omitempty"` 402 // The system resource information such as total physical memory. 403 SystemResourceInfo *SystemResourceInfo `protobuf:"bytes,25,opt,name=system_resource_info,json=systemResourceInfo" json:"system_resource_info,omitempty"` 404 // The build command that the user entered to the build system. 405 BuildCommand *string `protobuf:"bytes,26,opt,name=build_command,json=buildCommand" json:"build_command,omitempty"` 406 // The metrics for calling Bazel. 407 BazelRuns []*PerfInfo `protobuf:"bytes,27,rep,name=bazel_runs,json=bazelRuns" json:"bazel_runs,omitempty"` 408 // The metrics of the experiment config fetcher 409 ExpConfigFetcher *ExpConfigFetcher `protobuf:"bytes,28,opt,name=exp_config_fetcher,json=expConfigFetcher" json:"exp_config_fetcher,omitempty"` 410 // Whether the build exited with a panic or non-zero exit code, includes both 411 // non-zero exits of recorded phases and non-recorded phases of the build. 412 NonZeroExit *bool `protobuf:"varint,29,opt,name=non_zero_exit,json=nonZeroExit" json:"non_zero_exit,omitempty"` 413 // The error message due to a non-zero exit _only_ if it did not occur in a 414 // recorded phase of the build. 415 ErrorMessage *string `protobuf:"bytes,30,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"` 416 // The Git Manifest for the user's branch. 417 ManifestUrl *string `protobuf:"bytes,31,opt,name=manifest_url,json=manifestUrl" json:"manifest_url,omitempty"` 418 // The branch on which the build occurred. 419 // Example: refs/heads/master 420 Branch *string `protobuf:"bytes,32,opt,name=branch" json:"branch,omitempty"` 421 // The metric of critical path in build 422 CriticalPathInfo *CriticalPathInfo `protobuf:"bytes,33,opt,name=critical_path_info,json=criticalPathInfo" json:"critical_path_info,omitempty"` 423 // Environment variables that have changed value since the previous build, 424 // which were responsible for retriggering build analysis. 425 // Note that not all changed environment variables result in analysis retriggering. 426 // If there was no previous build, this list will be empty. 427 ChangedEnvironmentVariable []string `protobuf:"bytes,34,rep,name=changed_environment_variable,json=changedEnvironmentVariable" json:"changed_environment_variable,omitempty"` 428 // Metrics related to optimized builds. 429 OptimizedBuildMetrics *OptimizedBuildMetrics `protobuf:"bytes,35,opt,name=optimized_build_metrics,json=optimizedBuildMetrics" json:"optimized_build_metrics,omitempty"` 430} 431 432// Default values for MetricsBase fields. 433const ( 434 Default_MetricsBase_TargetBuildVariant = MetricsBase_ENG 435 Default_MetricsBase_TargetArch = MetricsBase_UNKNOWN 436 Default_MetricsBase_HostArch = MetricsBase_UNKNOWN 437 Default_MetricsBase_Host_2NdArch = MetricsBase_UNKNOWN 438) 439 440func (x *MetricsBase) Reset() { 441 *x = MetricsBase{} 442 if protoimpl.UnsafeEnabled { 443 mi := &file_metrics_proto_msgTypes[0] 444 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 445 ms.StoreMessageInfo(mi) 446 } 447} 448 449func (x *MetricsBase) String() string { 450 return protoimpl.X.MessageStringOf(x) 451} 452 453func (*MetricsBase) ProtoMessage() {} 454 455func (x *MetricsBase) ProtoReflect() protoreflect.Message { 456 mi := &file_metrics_proto_msgTypes[0] 457 if protoimpl.UnsafeEnabled && x != nil { 458 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 459 if ms.LoadMessageInfo() == nil { 460 ms.StoreMessageInfo(mi) 461 } 462 return ms 463 } 464 return mi.MessageOf(x) 465} 466 467// Deprecated: Use MetricsBase.ProtoReflect.Descriptor instead. 468func (*MetricsBase) Descriptor() ([]byte, []int) { 469 return file_metrics_proto_rawDescGZIP(), []int{0} 470} 471 472func (x *MetricsBase) GetBuildDateTimestamp() int64 { 473 if x != nil && x.BuildDateTimestamp != nil { 474 return *x.BuildDateTimestamp 475 } 476 return 0 477} 478 479func (x *MetricsBase) GetBuildId() string { 480 if x != nil && x.BuildId != nil { 481 return *x.BuildId 482 } 483 return "" 484} 485 486func (x *MetricsBase) GetPlatformVersionCodename() string { 487 if x != nil && x.PlatformVersionCodename != nil { 488 return *x.PlatformVersionCodename 489 } 490 return "" 491} 492 493func (x *MetricsBase) GetTargetProduct() string { 494 if x != nil && x.TargetProduct != nil { 495 return *x.TargetProduct 496 } 497 return "" 498} 499 500func (x *MetricsBase) GetTargetBuildVariant() MetricsBase_BuildVariant { 501 if x != nil && x.TargetBuildVariant != nil { 502 return *x.TargetBuildVariant 503 } 504 return Default_MetricsBase_TargetBuildVariant 505} 506 507func (x *MetricsBase) GetTargetArch() MetricsBase_Arch { 508 if x != nil && x.TargetArch != nil { 509 return *x.TargetArch 510 } 511 return Default_MetricsBase_TargetArch 512} 513 514func (x *MetricsBase) GetTargetArchVariant() string { 515 if x != nil && x.TargetArchVariant != nil { 516 return *x.TargetArchVariant 517 } 518 return "" 519} 520 521func (x *MetricsBase) GetTargetCpuVariant() string { 522 if x != nil && x.TargetCpuVariant != nil { 523 return *x.TargetCpuVariant 524 } 525 return "" 526} 527 528func (x *MetricsBase) GetHostArch() MetricsBase_Arch { 529 if x != nil && x.HostArch != nil { 530 return *x.HostArch 531 } 532 return Default_MetricsBase_HostArch 533} 534 535func (x *MetricsBase) GetHost_2NdArch() MetricsBase_Arch { 536 if x != nil && x.Host_2NdArch != nil { 537 return *x.Host_2NdArch 538 } 539 return Default_MetricsBase_Host_2NdArch 540} 541 542func (x *MetricsBase) GetHostOs() string { 543 if x != nil && x.HostOs != nil { 544 return *x.HostOs 545 } 546 return "" 547} 548 549func (x *MetricsBase) GetHostOsExtra() string { 550 if x != nil && x.HostOsExtra != nil { 551 return *x.HostOsExtra 552 } 553 return "" 554} 555 556func (x *MetricsBase) GetHostCrossOs() string { 557 if x != nil && x.HostCrossOs != nil { 558 return *x.HostCrossOs 559 } 560 return "" 561} 562 563func (x *MetricsBase) GetHostCrossArch() string { 564 if x != nil && x.HostCrossArch != nil { 565 return *x.HostCrossArch 566 } 567 return "" 568} 569 570func (x *MetricsBase) GetHostCross_2NdArch() string { 571 if x != nil && x.HostCross_2NdArch != nil { 572 return *x.HostCross_2NdArch 573 } 574 return "" 575} 576 577func (x *MetricsBase) GetOutDir() string { 578 if x != nil && x.OutDir != nil { 579 return *x.OutDir 580 } 581 return "" 582} 583 584func (x *MetricsBase) GetSetupTools() []*PerfInfo { 585 if x != nil { 586 return x.SetupTools 587 } 588 return nil 589} 590 591func (x *MetricsBase) GetKatiRuns() []*PerfInfo { 592 if x != nil { 593 return x.KatiRuns 594 } 595 return nil 596} 597 598func (x *MetricsBase) GetSoongRuns() []*PerfInfo { 599 if x != nil { 600 return x.SoongRuns 601 } 602 return nil 603} 604 605func (x *MetricsBase) GetNinjaRuns() []*PerfInfo { 606 if x != nil { 607 return x.NinjaRuns 608 } 609 return nil 610} 611 612func (x *MetricsBase) GetTotal() *PerfInfo { 613 if x != nil { 614 return x.Total 615 } 616 return nil 617} 618 619// Deprecated: Marked as deprecated in metrics.proto. 620func (x *MetricsBase) GetSoongBuildMetrics() *SoongBuildMetrics { 621 if x != nil { 622 return x.SoongBuildMetrics 623 } 624 return nil 625} 626 627func (x *MetricsBase) GetBuildConfig() *BuildConfig { 628 if x != nil { 629 return x.BuildConfig 630 } 631 return nil 632} 633 634func (x *MetricsBase) GetHostname() string { 635 if x != nil && x.Hostname != nil { 636 return *x.Hostname 637 } 638 return "" 639} 640 641func (x *MetricsBase) GetSystemResourceInfo() *SystemResourceInfo { 642 if x != nil { 643 return x.SystemResourceInfo 644 } 645 return nil 646} 647 648func (x *MetricsBase) GetBuildCommand() string { 649 if x != nil && x.BuildCommand != nil { 650 return *x.BuildCommand 651 } 652 return "" 653} 654 655func (x *MetricsBase) GetBazelRuns() []*PerfInfo { 656 if x != nil { 657 return x.BazelRuns 658 } 659 return nil 660} 661 662func (x *MetricsBase) GetExpConfigFetcher() *ExpConfigFetcher { 663 if x != nil { 664 return x.ExpConfigFetcher 665 } 666 return nil 667} 668 669func (x *MetricsBase) GetNonZeroExit() bool { 670 if x != nil && x.NonZeroExit != nil { 671 return *x.NonZeroExit 672 } 673 return false 674} 675 676func (x *MetricsBase) GetErrorMessage() string { 677 if x != nil && x.ErrorMessage != nil { 678 return *x.ErrorMessage 679 } 680 return "" 681} 682 683func (x *MetricsBase) GetManifestUrl() string { 684 if x != nil && x.ManifestUrl != nil { 685 return *x.ManifestUrl 686 } 687 return "" 688} 689 690func (x *MetricsBase) GetBranch() string { 691 if x != nil && x.Branch != nil { 692 return *x.Branch 693 } 694 return "" 695} 696 697func (x *MetricsBase) GetCriticalPathInfo() *CriticalPathInfo { 698 if x != nil { 699 return x.CriticalPathInfo 700 } 701 return nil 702} 703 704func (x *MetricsBase) GetChangedEnvironmentVariable() []string { 705 if x != nil { 706 return x.ChangedEnvironmentVariable 707 } 708 return nil 709} 710 711func (x *MetricsBase) GetOptimizedBuildMetrics() *OptimizedBuildMetrics { 712 if x != nil { 713 return x.OptimizedBuildMetrics 714 } 715 return nil 716} 717 718type BuildConfig struct { 719 state protoimpl.MessageState 720 sizeCache protoimpl.SizeCache 721 unknownFields protoimpl.UnknownFields 722 723 UseGoma *bool `protobuf:"varint,1,opt,name=use_goma,json=useGoma" json:"use_goma,omitempty"` 724 UseRbe *bool `protobuf:"varint,2,opt,name=use_rbe,json=useRbe" json:"use_rbe,omitempty"` 725 ForceUseGoma *bool `protobuf:"varint,3,opt,name=force_use_goma,json=forceUseGoma" json:"force_use_goma,omitempty"` 726 // Whether the Bazel is acting as the Ninja executor for this build. 727 BazelAsNinja *bool `protobuf:"varint,4,opt,name=bazel_as_ninja,json=bazelAsNinja" json:"bazel_as_ninja,omitempty"` 728 // Whether build is occurring in a mixed build mode, where Bazel maintains the 729 // definition and build of some modules in cooperation with Soong. 730 BazelMixedBuild *bool `protobuf:"varint,5,opt,name=bazel_mixed_build,json=bazelMixedBuild" json:"bazel_mixed_build,omitempty"` 731 // These are the targets soong passes to ninja, these targets include special 732 // targets such as droid as well as the regular build targets. 733 Targets []string `protobuf:"bytes,6,rep,name=targets" json:"targets,omitempty"` 734 // Whether the user explicitly disabled bazel mixed builds for this build. 735 ForceDisableBazelMixedBuild *bool `protobuf:"varint,7,opt,name=force_disable_bazel_mixed_build,json=forceDisableBazelMixedBuild" json:"force_disable_bazel_mixed_build,omitempty"` 736 // NOT_USED - ninja doesn't use weight list. 737 // NINJA_LOG - ninja uses weight list based on previous builds by ninja log 738 // EVENLY_DISTRIBUTED - ninja thinks every task has the same weight. 739 // EXTERNAL_FILE - ninja uses an external custom weight list 740 // HINT_FROM_SOONG - ninja uses a prioritized module list from Soong 741 NinjaWeightListSource *BuildConfig_NinjaWeightListSource `protobuf:"varint,8,opt,name=ninja_weight_list_source,json=ninjaWeightListSource,enum=soong_build_metrics.BuildConfig_NinjaWeightListSource,def=0" json:"ninja_weight_list_source,omitempty"` 742} 743 744// Default values for BuildConfig fields. 745const ( 746 Default_BuildConfig_NinjaWeightListSource = BuildConfig_NOT_USED 747) 748 749func (x *BuildConfig) Reset() { 750 *x = BuildConfig{} 751 if protoimpl.UnsafeEnabled { 752 mi := &file_metrics_proto_msgTypes[1] 753 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 754 ms.StoreMessageInfo(mi) 755 } 756} 757 758func (x *BuildConfig) String() string { 759 return protoimpl.X.MessageStringOf(x) 760} 761 762func (*BuildConfig) ProtoMessage() {} 763 764func (x *BuildConfig) ProtoReflect() protoreflect.Message { 765 mi := &file_metrics_proto_msgTypes[1] 766 if protoimpl.UnsafeEnabled && x != nil { 767 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 768 if ms.LoadMessageInfo() == nil { 769 ms.StoreMessageInfo(mi) 770 } 771 return ms 772 } 773 return mi.MessageOf(x) 774} 775 776// Deprecated: Use BuildConfig.ProtoReflect.Descriptor instead. 777func (*BuildConfig) Descriptor() ([]byte, []int) { 778 return file_metrics_proto_rawDescGZIP(), []int{1} 779} 780 781func (x *BuildConfig) GetUseGoma() bool { 782 if x != nil && x.UseGoma != nil { 783 return *x.UseGoma 784 } 785 return false 786} 787 788func (x *BuildConfig) GetUseRbe() bool { 789 if x != nil && x.UseRbe != nil { 790 return *x.UseRbe 791 } 792 return false 793} 794 795func (x *BuildConfig) GetForceUseGoma() bool { 796 if x != nil && x.ForceUseGoma != nil { 797 return *x.ForceUseGoma 798 } 799 return false 800} 801 802func (x *BuildConfig) GetBazelAsNinja() bool { 803 if x != nil && x.BazelAsNinja != nil { 804 return *x.BazelAsNinja 805 } 806 return false 807} 808 809func (x *BuildConfig) GetBazelMixedBuild() bool { 810 if x != nil && x.BazelMixedBuild != nil { 811 return *x.BazelMixedBuild 812 } 813 return false 814} 815 816func (x *BuildConfig) GetTargets() []string { 817 if x != nil { 818 return x.Targets 819 } 820 return nil 821} 822 823func (x *BuildConfig) GetForceDisableBazelMixedBuild() bool { 824 if x != nil && x.ForceDisableBazelMixedBuild != nil { 825 return *x.ForceDisableBazelMixedBuild 826 } 827 return false 828} 829 830func (x *BuildConfig) GetNinjaWeightListSource() BuildConfig_NinjaWeightListSource { 831 if x != nil && x.NinjaWeightListSource != nil { 832 return *x.NinjaWeightListSource 833 } 834 return Default_BuildConfig_NinjaWeightListSource 835} 836 837type SystemResourceInfo struct { 838 state protoimpl.MessageState 839 sizeCache protoimpl.SizeCache 840 unknownFields protoimpl.UnknownFields 841 842 // The total physical memory in bytes. 843 TotalPhysicalMemory *uint64 `protobuf:"varint,1,opt,name=total_physical_memory,json=totalPhysicalMemory" json:"total_physical_memory,omitempty"` 844 // The total of available cores for building 845 AvailableCpus *int32 `protobuf:"varint,2,opt,name=available_cpus,json=availableCpus" json:"available_cpus,omitempty"` 846 // Information about the machine's CPU(s). 847 CpuInfo *SystemCpuInfo `protobuf:"bytes,3,opt,name=cpu_info,json=cpuInfo" json:"cpu_info,omitempty"` 848 // Information about the machine's memory. 849 MemInfo *SystemMemInfo `protobuf:"bytes,4,opt,name=mem_info,json=memInfo" json:"mem_info,omitempty"` 850} 851 852func (x *SystemResourceInfo) Reset() { 853 *x = SystemResourceInfo{} 854 if protoimpl.UnsafeEnabled { 855 mi := &file_metrics_proto_msgTypes[2] 856 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 857 ms.StoreMessageInfo(mi) 858 } 859} 860 861func (x *SystemResourceInfo) String() string { 862 return protoimpl.X.MessageStringOf(x) 863} 864 865func (*SystemResourceInfo) ProtoMessage() {} 866 867func (x *SystemResourceInfo) ProtoReflect() protoreflect.Message { 868 mi := &file_metrics_proto_msgTypes[2] 869 if protoimpl.UnsafeEnabled && x != nil { 870 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 871 if ms.LoadMessageInfo() == nil { 872 ms.StoreMessageInfo(mi) 873 } 874 return ms 875 } 876 return mi.MessageOf(x) 877} 878 879// Deprecated: Use SystemResourceInfo.ProtoReflect.Descriptor instead. 880func (*SystemResourceInfo) Descriptor() ([]byte, []int) { 881 return file_metrics_proto_rawDescGZIP(), []int{2} 882} 883 884func (x *SystemResourceInfo) GetTotalPhysicalMemory() uint64 { 885 if x != nil && x.TotalPhysicalMemory != nil { 886 return *x.TotalPhysicalMemory 887 } 888 return 0 889} 890 891func (x *SystemResourceInfo) GetAvailableCpus() int32 { 892 if x != nil && x.AvailableCpus != nil { 893 return *x.AvailableCpus 894 } 895 return 0 896} 897 898func (x *SystemResourceInfo) GetCpuInfo() *SystemCpuInfo { 899 if x != nil { 900 return x.CpuInfo 901 } 902 return nil 903} 904 905func (x *SystemResourceInfo) GetMemInfo() *SystemMemInfo { 906 if x != nil { 907 return x.MemInfo 908 } 909 return nil 910} 911 912type SystemCpuInfo struct { 913 state protoimpl.MessageState 914 sizeCache protoimpl.SizeCache 915 unknownFields protoimpl.UnknownFields 916 917 // The vendor id 918 VendorId *string `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId" json:"vendor_id,omitempty"` 919 // The model name 920 ModelName *string `protobuf:"bytes,2,opt,name=model_name,json=modelName" json:"model_name,omitempty"` 921 // The number of CPU cores 922 CpuCores *int32 `protobuf:"varint,3,opt,name=cpu_cores,json=cpuCores" json:"cpu_cores,omitempty"` 923 // The CPU flags 924 Flags *string `protobuf:"bytes,4,opt,name=flags" json:"flags,omitempty"` 925} 926 927func (x *SystemCpuInfo) Reset() { 928 *x = SystemCpuInfo{} 929 if protoimpl.UnsafeEnabled { 930 mi := &file_metrics_proto_msgTypes[3] 931 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 932 ms.StoreMessageInfo(mi) 933 } 934} 935 936func (x *SystemCpuInfo) String() string { 937 return protoimpl.X.MessageStringOf(x) 938} 939 940func (*SystemCpuInfo) ProtoMessage() {} 941 942func (x *SystemCpuInfo) ProtoReflect() protoreflect.Message { 943 mi := &file_metrics_proto_msgTypes[3] 944 if protoimpl.UnsafeEnabled && x != nil { 945 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 946 if ms.LoadMessageInfo() == nil { 947 ms.StoreMessageInfo(mi) 948 } 949 return ms 950 } 951 return mi.MessageOf(x) 952} 953 954// Deprecated: Use SystemCpuInfo.ProtoReflect.Descriptor instead. 955func (*SystemCpuInfo) Descriptor() ([]byte, []int) { 956 return file_metrics_proto_rawDescGZIP(), []int{3} 957} 958 959func (x *SystemCpuInfo) GetVendorId() string { 960 if x != nil && x.VendorId != nil { 961 return *x.VendorId 962 } 963 return "" 964} 965 966func (x *SystemCpuInfo) GetModelName() string { 967 if x != nil && x.ModelName != nil { 968 return *x.ModelName 969 } 970 return "" 971} 972 973func (x *SystemCpuInfo) GetCpuCores() int32 { 974 if x != nil && x.CpuCores != nil { 975 return *x.CpuCores 976 } 977 return 0 978} 979 980func (x *SystemCpuInfo) GetFlags() string { 981 if x != nil && x.Flags != nil { 982 return *x.Flags 983 } 984 return "" 985} 986 987type SystemMemInfo struct { 988 state protoimpl.MessageState 989 sizeCache protoimpl.SizeCache 990 unknownFields protoimpl.UnknownFields 991 992 // The total system memory 993 MemTotal *uint64 `protobuf:"varint,1,opt,name=mem_total,json=memTotal" json:"mem_total,omitempty"` 994 // The free system memory 995 MemFree *uint64 `protobuf:"varint,2,opt,name=mem_free,json=memFree" json:"mem_free,omitempty"` 996 // The available system memory 997 MemAvailable *uint64 `protobuf:"varint,3,opt,name=mem_available,json=memAvailable" json:"mem_available,omitempty"` 998} 999 1000func (x *SystemMemInfo) Reset() { 1001 *x = SystemMemInfo{} 1002 if protoimpl.UnsafeEnabled { 1003 mi := &file_metrics_proto_msgTypes[4] 1004 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1005 ms.StoreMessageInfo(mi) 1006 } 1007} 1008 1009func (x *SystemMemInfo) String() string { 1010 return protoimpl.X.MessageStringOf(x) 1011} 1012 1013func (*SystemMemInfo) ProtoMessage() {} 1014 1015func (x *SystemMemInfo) ProtoReflect() protoreflect.Message { 1016 mi := &file_metrics_proto_msgTypes[4] 1017 if protoimpl.UnsafeEnabled && x != nil { 1018 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1019 if ms.LoadMessageInfo() == nil { 1020 ms.StoreMessageInfo(mi) 1021 } 1022 return ms 1023 } 1024 return mi.MessageOf(x) 1025} 1026 1027// Deprecated: Use SystemMemInfo.ProtoReflect.Descriptor instead. 1028func (*SystemMemInfo) Descriptor() ([]byte, []int) { 1029 return file_metrics_proto_rawDescGZIP(), []int{4} 1030} 1031 1032func (x *SystemMemInfo) GetMemTotal() uint64 { 1033 if x != nil && x.MemTotal != nil { 1034 return *x.MemTotal 1035 } 1036 return 0 1037} 1038 1039func (x *SystemMemInfo) GetMemFree() uint64 { 1040 if x != nil && x.MemFree != nil { 1041 return *x.MemFree 1042 } 1043 return 0 1044} 1045 1046func (x *SystemMemInfo) GetMemAvailable() uint64 { 1047 if x != nil && x.MemAvailable != nil { 1048 return *x.MemAvailable 1049 } 1050 return 0 1051} 1052 1053type PerfInfo struct { 1054 state protoimpl.MessageState 1055 sizeCache protoimpl.SizeCache 1056 unknownFields protoimpl.UnknownFields 1057 1058 // The description for the phase/action/part while the tool running. 1059 Description *string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` 1060 // The name for the running phase/action/part. 1061 Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` 1062 // The absolute start time. 1063 // The number of nanoseconds elapsed since January 1, 1970 UTC. 1064 StartTime *uint64 `protobuf:"varint,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` 1065 // The real running time. 1066 // The number of nanoseconds elapsed since start_time. 1067 RealTime *uint64 `protobuf:"varint,4,opt,name=real_time,json=realTime" json:"real_time,omitempty"` 1068 // The number of MB for memory use (deprecated as it is too generic). 1069 // 1070 // Deprecated: Marked as deprecated in metrics.proto. 1071 MemoryUse *uint64 `protobuf:"varint,5,opt,name=memory_use,json=memoryUse" json:"memory_use,omitempty"` 1072 // The resource information of each executed process. 1073 ProcessesResourceInfo []*ProcessResourceInfo `protobuf:"bytes,6,rep,name=processes_resource_info,json=processesResourceInfo" json:"processes_resource_info,omitempty"` 1074 // Whether the phase of tool running exited with a panic or non-zero exit 1075 // code. 1076 NonZeroExit *bool `protobuf:"varint,7,opt,name=non_zero_exit,json=nonZeroExit" json:"non_zero_exit,omitempty"` 1077 // The error message, if any, due to a non-zero exit. 1078 ErrorMessage *string `protobuf:"bytes,8,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"` 1079} 1080 1081func (x *PerfInfo) Reset() { 1082 *x = PerfInfo{} 1083 if protoimpl.UnsafeEnabled { 1084 mi := &file_metrics_proto_msgTypes[5] 1085 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1086 ms.StoreMessageInfo(mi) 1087 } 1088} 1089 1090func (x *PerfInfo) String() string { 1091 return protoimpl.X.MessageStringOf(x) 1092} 1093 1094func (*PerfInfo) ProtoMessage() {} 1095 1096func (x *PerfInfo) ProtoReflect() protoreflect.Message { 1097 mi := &file_metrics_proto_msgTypes[5] 1098 if protoimpl.UnsafeEnabled && x != nil { 1099 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1100 if ms.LoadMessageInfo() == nil { 1101 ms.StoreMessageInfo(mi) 1102 } 1103 return ms 1104 } 1105 return mi.MessageOf(x) 1106} 1107 1108// Deprecated: Use PerfInfo.ProtoReflect.Descriptor instead. 1109func (*PerfInfo) Descriptor() ([]byte, []int) { 1110 return file_metrics_proto_rawDescGZIP(), []int{5} 1111} 1112 1113func (x *PerfInfo) GetDescription() string { 1114 if x != nil && x.Description != nil { 1115 return *x.Description 1116 } 1117 return "" 1118} 1119 1120func (x *PerfInfo) GetName() string { 1121 if x != nil && x.Name != nil { 1122 return *x.Name 1123 } 1124 return "" 1125} 1126 1127func (x *PerfInfo) GetStartTime() uint64 { 1128 if x != nil && x.StartTime != nil { 1129 return *x.StartTime 1130 } 1131 return 0 1132} 1133 1134func (x *PerfInfo) GetRealTime() uint64 { 1135 if x != nil && x.RealTime != nil { 1136 return *x.RealTime 1137 } 1138 return 0 1139} 1140 1141// Deprecated: Marked as deprecated in metrics.proto. 1142func (x *PerfInfo) GetMemoryUse() uint64 { 1143 if x != nil && x.MemoryUse != nil { 1144 return *x.MemoryUse 1145 } 1146 return 0 1147} 1148 1149func (x *PerfInfo) GetProcessesResourceInfo() []*ProcessResourceInfo { 1150 if x != nil { 1151 return x.ProcessesResourceInfo 1152 } 1153 return nil 1154} 1155 1156func (x *PerfInfo) GetNonZeroExit() bool { 1157 if x != nil && x.NonZeroExit != nil { 1158 return *x.NonZeroExit 1159 } 1160 return false 1161} 1162 1163func (x *PerfInfo) GetErrorMessage() string { 1164 if x != nil && x.ErrorMessage != nil { 1165 return *x.ErrorMessage 1166 } 1167 return "" 1168} 1169 1170type PerfCounters struct { 1171 state protoimpl.MessageState 1172 sizeCache protoimpl.SizeCache 1173 unknownFields protoimpl.UnknownFields 1174 1175 // The timestamp of these counters in nanoseconds. 1176 Time *uint64 `protobuf:"varint,1,opt,name=time" json:"time,omitempty"` 1177 // A list of counter names and values. 1178 Groups []*PerfCounterGroup `protobuf:"bytes,2,rep,name=groups" json:"groups,omitempty"` 1179} 1180 1181func (x *PerfCounters) Reset() { 1182 *x = PerfCounters{} 1183 if protoimpl.UnsafeEnabled { 1184 mi := &file_metrics_proto_msgTypes[6] 1185 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1186 ms.StoreMessageInfo(mi) 1187 } 1188} 1189 1190func (x *PerfCounters) String() string { 1191 return protoimpl.X.MessageStringOf(x) 1192} 1193 1194func (*PerfCounters) ProtoMessage() {} 1195 1196func (x *PerfCounters) ProtoReflect() protoreflect.Message { 1197 mi := &file_metrics_proto_msgTypes[6] 1198 if protoimpl.UnsafeEnabled && x != nil { 1199 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1200 if ms.LoadMessageInfo() == nil { 1201 ms.StoreMessageInfo(mi) 1202 } 1203 return ms 1204 } 1205 return mi.MessageOf(x) 1206} 1207 1208// Deprecated: Use PerfCounters.ProtoReflect.Descriptor instead. 1209func (*PerfCounters) Descriptor() ([]byte, []int) { 1210 return file_metrics_proto_rawDescGZIP(), []int{6} 1211} 1212 1213func (x *PerfCounters) GetTime() uint64 { 1214 if x != nil && x.Time != nil { 1215 return *x.Time 1216 } 1217 return 0 1218} 1219 1220func (x *PerfCounters) GetGroups() []*PerfCounterGroup { 1221 if x != nil { 1222 return x.Groups 1223 } 1224 return nil 1225} 1226 1227type PerfCounterGroup struct { 1228 state protoimpl.MessageState 1229 sizeCache protoimpl.SizeCache 1230 unknownFields protoimpl.UnknownFields 1231 1232 // The name of this counter group (e.g. "cpu" or "memory") 1233 Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 1234 // The counters in this group 1235 Counters []*PerfCounter `protobuf:"bytes,2,rep,name=counters" json:"counters,omitempty"` 1236} 1237 1238func (x *PerfCounterGroup) Reset() { 1239 *x = PerfCounterGroup{} 1240 if protoimpl.UnsafeEnabled { 1241 mi := &file_metrics_proto_msgTypes[7] 1242 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1243 ms.StoreMessageInfo(mi) 1244 } 1245} 1246 1247func (x *PerfCounterGroup) String() string { 1248 return protoimpl.X.MessageStringOf(x) 1249} 1250 1251func (*PerfCounterGroup) ProtoMessage() {} 1252 1253func (x *PerfCounterGroup) ProtoReflect() protoreflect.Message { 1254 mi := &file_metrics_proto_msgTypes[7] 1255 if protoimpl.UnsafeEnabled && x != nil { 1256 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1257 if ms.LoadMessageInfo() == nil { 1258 ms.StoreMessageInfo(mi) 1259 } 1260 return ms 1261 } 1262 return mi.MessageOf(x) 1263} 1264 1265// Deprecated: Use PerfCounterGroup.ProtoReflect.Descriptor instead. 1266func (*PerfCounterGroup) Descriptor() ([]byte, []int) { 1267 return file_metrics_proto_rawDescGZIP(), []int{7} 1268} 1269 1270func (x *PerfCounterGroup) GetName() string { 1271 if x != nil && x.Name != nil { 1272 return *x.Name 1273 } 1274 return "" 1275} 1276 1277func (x *PerfCounterGroup) GetCounters() []*PerfCounter { 1278 if x != nil { 1279 return x.Counters 1280 } 1281 return nil 1282} 1283 1284type PerfCounter struct { 1285 state protoimpl.MessageState 1286 sizeCache protoimpl.SizeCache 1287 unknownFields protoimpl.UnknownFields 1288 1289 // The name of this counter. 1290 Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 1291 // The value of this counter. 1292 Value *int64 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"` 1293} 1294 1295func (x *PerfCounter) Reset() { 1296 *x = PerfCounter{} 1297 if protoimpl.UnsafeEnabled { 1298 mi := &file_metrics_proto_msgTypes[8] 1299 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1300 ms.StoreMessageInfo(mi) 1301 } 1302} 1303 1304func (x *PerfCounter) String() string { 1305 return protoimpl.X.MessageStringOf(x) 1306} 1307 1308func (*PerfCounter) ProtoMessage() {} 1309 1310func (x *PerfCounter) ProtoReflect() protoreflect.Message { 1311 mi := &file_metrics_proto_msgTypes[8] 1312 if protoimpl.UnsafeEnabled && x != nil { 1313 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1314 if ms.LoadMessageInfo() == nil { 1315 ms.StoreMessageInfo(mi) 1316 } 1317 return ms 1318 } 1319 return mi.MessageOf(x) 1320} 1321 1322// Deprecated: Use PerfCounter.ProtoReflect.Descriptor instead. 1323func (*PerfCounter) Descriptor() ([]byte, []int) { 1324 return file_metrics_proto_rawDescGZIP(), []int{8} 1325} 1326 1327func (x *PerfCounter) GetName() string { 1328 if x != nil && x.Name != nil { 1329 return *x.Name 1330 } 1331 return "" 1332} 1333 1334func (x *PerfCounter) GetValue() int64 { 1335 if x != nil && x.Value != nil { 1336 return *x.Value 1337 } 1338 return 0 1339} 1340 1341type ProcessResourceInfo struct { 1342 state protoimpl.MessageState 1343 sizeCache protoimpl.SizeCache 1344 unknownFields protoimpl.UnknownFields 1345 1346 // The name of the process for identification. 1347 Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 1348 // The amount of time spent executing in user space in microseconds. 1349 UserTimeMicros *uint64 `protobuf:"varint,2,opt,name=user_time_micros,json=userTimeMicros" json:"user_time_micros,omitempty"` 1350 // The amount of time spent executing in kernel mode in microseconds. 1351 SystemTimeMicros *uint64 `protobuf:"varint,3,opt,name=system_time_micros,json=systemTimeMicros" json:"system_time_micros,omitempty"` 1352 // The maximum resident set size memory used in kilobytes. 1353 MaxRssKb *uint64 `protobuf:"varint,4,opt,name=max_rss_kb,json=maxRssKb" json:"max_rss_kb,omitempty"` 1354 // The number of minor page faults serviced without any I/O activity. 1355 MinorPageFaults *uint64 `protobuf:"varint,5,opt,name=minor_page_faults,json=minorPageFaults" json:"minor_page_faults,omitempty"` 1356 // The number of major page faults serviced that required I/O activity. 1357 MajorPageFaults *uint64 `protobuf:"varint,6,opt,name=major_page_faults,json=majorPageFaults" json:"major_page_faults,omitempty"` 1358 // Total IO input in kilobytes. 1359 IoInputKb *uint64 `protobuf:"varint,7,opt,name=io_input_kb,json=ioInputKb" json:"io_input_kb,omitempty"` 1360 // Total IO output in kilobytes. 1361 IoOutputKb *uint64 `protobuf:"varint,8,opt,name=io_output_kb,json=ioOutputKb" json:"io_output_kb,omitempty"` 1362 // The number of voluntary context switches 1363 VoluntaryContextSwitches *uint64 `protobuf:"varint,9,opt,name=voluntary_context_switches,json=voluntaryContextSwitches" json:"voluntary_context_switches,omitempty"` 1364 // The number of involuntary context switches 1365 InvoluntaryContextSwitches *uint64 `protobuf:"varint,10,opt,name=involuntary_context_switches,json=involuntaryContextSwitches" json:"involuntary_context_switches,omitempty"` 1366} 1367 1368func (x *ProcessResourceInfo) Reset() { 1369 *x = ProcessResourceInfo{} 1370 if protoimpl.UnsafeEnabled { 1371 mi := &file_metrics_proto_msgTypes[9] 1372 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1373 ms.StoreMessageInfo(mi) 1374 } 1375} 1376 1377func (x *ProcessResourceInfo) String() string { 1378 return protoimpl.X.MessageStringOf(x) 1379} 1380 1381func (*ProcessResourceInfo) ProtoMessage() {} 1382 1383func (x *ProcessResourceInfo) ProtoReflect() protoreflect.Message { 1384 mi := &file_metrics_proto_msgTypes[9] 1385 if protoimpl.UnsafeEnabled && x != nil { 1386 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1387 if ms.LoadMessageInfo() == nil { 1388 ms.StoreMessageInfo(mi) 1389 } 1390 return ms 1391 } 1392 return mi.MessageOf(x) 1393} 1394 1395// Deprecated: Use ProcessResourceInfo.ProtoReflect.Descriptor instead. 1396func (*ProcessResourceInfo) Descriptor() ([]byte, []int) { 1397 return file_metrics_proto_rawDescGZIP(), []int{9} 1398} 1399 1400func (x *ProcessResourceInfo) GetName() string { 1401 if x != nil && x.Name != nil { 1402 return *x.Name 1403 } 1404 return "" 1405} 1406 1407func (x *ProcessResourceInfo) GetUserTimeMicros() uint64 { 1408 if x != nil && x.UserTimeMicros != nil { 1409 return *x.UserTimeMicros 1410 } 1411 return 0 1412} 1413 1414func (x *ProcessResourceInfo) GetSystemTimeMicros() uint64 { 1415 if x != nil && x.SystemTimeMicros != nil { 1416 return *x.SystemTimeMicros 1417 } 1418 return 0 1419} 1420 1421func (x *ProcessResourceInfo) GetMaxRssKb() uint64 { 1422 if x != nil && x.MaxRssKb != nil { 1423 return *x.MaxRssKb 1424 } 1425 return 0 1426} 1427 1428func (x *ProcessResourceInfo) GetMinorPageFaults() uint64 { 1429 if x != nil && x.MinorPageFaults != nil { 1430 return *x.MinorPageFaults 1431 } 1432 return 0 1433} 1434 1435func (x *ProcessResourceInfo) GetMajorPageFaults() uint64 { 1436 if x != nil && x.MajorPageFaults != nil { 1437 return *x.MajorPageFaults 1438 } 1439 return 0 1440} 1441 1442func (x *ProcessResourceInfo) GetIoInputKb() uint64 { 1443 if x != nil && x.IoInputKb != nil { 1444 return *x.IoInputKb 1445 } 1446 return 0 1447} 1448 1449func (x *ProcessResourceInfo) GetIoOutputKb() uint64 { 1450 if x != nil && x.IoOutputKb != nil { 1451 return *x.IoOutputKb 1452 } 1453 return 0 1454} 1455 1456func (x *ProcessResourceInfo) GetVoluntaryContextSwitches() uint64 { 1457 if x != nil && x.VoluntaryContextSwitches != nil { 1458 return *x.VoluntaryContextSwitches 1459 } 1460 return 0 1461} 1462 1463func (x *ProcessResourceInfo) GetInvoluntaryContextSwitches() uint64 { 1464 if x != nil && x.InvoluntaryContextSwitches != nil { 1465 return *x.InvoluntaryContextSwitches 1466 } 1467 return 0 1468} 1469 1470type ModuleTypeInfo struct { 1471 state protoimpl.MessageState 1472 sizeCache protoimpl.SizeCache 1473 unknownFields protoimpl.UnknownFields 1474 1475 // The build system, e.g. Soong or Make. 1476 BuildSystem *ModuleTypeInfo_BuildSystem `protobuf:"varint,1,opt,name=build_system,json=buildSystem,enum=soong_build_metrics.ModuleTypeInfo_BuildSystem,def=0" json:"build_system,omitempty"` 1477 // The module type, e.g. java_library, cc_binary, and etc. 1478 ModuleType *string `protobuf:"bytes,2,opt,name=module_type,json=moduleType" json:"module_type,omitempty"` 1479 // The number of logical modules. 1480 NumOfModules *uint32 `protobuf:"varint,3,opt,name=num_of_modules,json=numOfModules" json:"num_of_modules,omitempty"` 1481} 1482 1483// Default values for ModuleTypeInfo fields. 1484const ( 1485 Default_ModuleTypeInfo_BuildSystem = ModuleTypeInfo_UNKNOWN 1486) 1487 1488func (x *ModuleTypeInfo) Reset() { 1489 *x = ModuleTypeInfo{} 1490 if protoimpl.UnsafeEnabled { 1491 mi := &file_metrics_proto_msgTypes[10] 1492 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1493 ms.StoreMessageInfo(mi) 1494 } 1495} 1496 1497func (x *ModuleTypeInfo) String() string { 1498 return protoimpl.X.MessageStringOf(x) 1499} 1500 1501func (*ModuleTypeInfo) ProtoMessage() {} 1502 1503func (x *ModuleTypeInfo) ProtoReflect() protoreflect.Message { 1504 mi := &file_metrics_proto_msgTypes[10] 1505 if protoimpl.UnsafeEnabled && x != nil { 1506 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1507 if ms.LoadMessageInfo() == nil { 1508 ms.StoreMessageInfo(mi) 1509 } 1510 return ms 1511 } 1512 return mi.MessageOf(x) 1513} 1514 1515// Deprecated: Use ModuleTypeInfo.ProtoReflect.Descriptor instead. 1516func (*ModuleTypeInfo) Descriptor() ([]byte, []int) { 1517 return file_metrics_proto_rawDescGZIP(), []int{10} 1518} 1519 1520func (x *ModuleTypeInfo) GetBuildSystem() ModuleTypeInfo_BuildSystem { 1521 if x != nil && x.BuildSystem != nil { 1522 return *x.BuildSystem 1523 } 1524 return Default_ModuleTypeInfo_BuildSystem 1525} 1526 1527func (x *ModuleTypeInfo) GetModuleType() string { 1528 if x != nil && x.ModuleType != nil { 1529 return *x.ModuleType 1530 } 1531 return "" 1532} 1533 1534func (x *ModuleTypeInfo) GetNumOfModules() uint32 { 1535 if x != nil && x.NumOfModules != nil { 1536 return *x.NumOfModules 1537 } 1538 return 0 1539} 1540 1541type CriticalUserJourneyMetrics struct { 1542 state protoimpl.MessageState 1543 sizeCache protoimpl.SizeCache 1544 unknownFields protoimpl.UnknownFields 1545 1546 // The name of a critical user journey test. 1547 Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 1548 // The metrics produced when running the critical user journey test. 1549 Metrics *MetricsBase `protobuf:"bytes,2,opt,name=metrics" json:"metrics,omitempty"` 1550} 1551 1552func (x *CriticalUserJourneyMetrics) Reset() { 1553 *x = CriticalUserJourneyMetrics{} 1554 if protoimpl.UnsafeEnabled { 1555 mi := &file_metrics_proto_msgTypes[11] 1556 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1557 ms.StoreMessageInfo(mi) 1558 } 1559} 1560 1561func (x *CriticalUserJourneyMetrics) String() string { 1562 return protoimpl.X.MessageStringOf(x) 1563} 1564 1565func (*CriticalUserJourneyMetrics) ProtoMessage() {} 1566 1567func (x *CriticalUserJourneyMetrics) ProtoReflect() protoreflect.Message { 1568 mi := &file_metrics_proto_msgTypes[11] 1569 if protoimpl.UnsafeEnabled && x != nil { 1570 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1571 if ms.LoadMessageInfo() == nil { 1572 ms.StoreMessageInfo(mi) 1573 } 1574 return ms 1575 } 1576 return mi.MessageOf(x) 1577} 1578 1579// Deprecated: Use CriticalUserJourneyMetrics.ProtoReflect.Descriptor instead. 1580func (*CriticalUserJourneyMetrics) Descriptor() ([]byte, []int) { 1581 return file_metrics_proto_rawDescGZIP(), []int{11} 1582} 1583 1584func (x *CriticalUserJourneyMetrics) GetName() string { 1585 if x != nil && x.Name != nil { 1586 return *x.Name 1587 } 1588 return "" 1589} 1590 1591func (x *CriticalUserJourneyMetrics) GetMetrics() *MetricsBase { 1592 if x != nil { 1593 return x.Metrics 1594 } 1595 return nil 1596} 1597 1598type CriticalUserJourneysMetrics struct { 1599 state protoimpl.MessageState 1600 sizeCache protoimpl.SizeCache 1601 unknownFields protoimpl.UnknownFields 1602 1603 // A set of metrics from a run of the critical user journey tests. 1604 Cujs []*CriticalUserJourneyMetrics `protobuf:"bytes,1,rep,name=cujs" json:"cujs,omitempty"` 1605} 1606 1607func (x *CriticalUserJourneysMetrics) Reset() { 1608 *x = CriticalUserJourneysMetrics{} 1609 if protoimpl.UnsafeEnabled { 1610 mi := &file_metrics_proto_msgTypes[12] 1611 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1612 ms.StoreMessageInfo(mi) 1613 } 1614} 1615 1616func (x *CriticalUserJourneysMetrics) String() string { 1617 return protoimpl.X.MessageStringOf(x) 1618} 1619 1620func (*CriticalUserJourneysMetrics) ProtoMessage() {} 1621 1622func (x *CriticalUserJourneysMetrics) ProtoReflect() protoreflect.Message { 1623 mi := &file_metrics_proto_msgTypes[12] 1624 if protoimpl.UnsafeEnabled && x != nil { 1625 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1626 if ms.LoadMessageInfo() == nil { 1627 ms.StoreMessageInfo(mi) 1628 } 1629 return ms 1630 } 1631 return mi.MessageOf(x) 1632} 1633 1634// Deprecated: Use CriticalUserJourneysMetrics.ProtoReflect.Descriptor instead. 1635func (*CriticalUserJourneysMetrics) Descriptor() ([]byte, []int) { 1636 return file_metrics_proto_rawDescGZIP(), []int{12} 1637} 1638 1639func (x *CriticalUserJourneysMetrics) GetCujs() []*CriticalUserJourneyMetrics { 1640 if x != nil { 1641 return x.Cujs 1642 } 1643 return nil 1644} 1645 1646type SoongBuildMetrics struct { 1647 state protoimpl.MessageState 1648 sizeCache protoimpl.SizeCache 1649 unknownFields protoimpl.UnknownFields 1650 1651 // The number of modules handled by soong_build. 1652 Modules *uint32 `protobuf:"varint,1,opt,name=modules" json:"modules,omitempty"` 1653 // The total number of variants handled by soong_build. 1654 Variants *uint32 `protobuf:"varint,2,opt,name=variants" json:"variants,omitempty"` 1655 // The total number of allocations in soong_build. 1656 TotalAllocCount *uint64 `protobuf:"varint,3,opt,name=total_alloc_count,json=totalAllocCount" json:"total_alloc_count,omitempty"` 1657 // The total size of allocations in soong_build in bytes. 1658 TotalAllocSize *uint64 `protobuf:"varint,4,opt,name=total_alloc_size,json=totalAllocSize" json:"total_alloc_size,omitempty"` 1659 // The approximate maximum size of the heap in soong_build in bytes. 1660 MaxHeapSize *uint64 `protobuf:"varint,5,opt,name=max_heap_size,json=maxHeapSize" json:"max_heap_size,omitempty"` 1661 // Runtime metrics for soong_build execution. 1662 Events []*PerfInfo `protobuf:"bytes,6,rep,name=events" json:"events,omitempty"` 1663 // Mixed Builds information 1664 MixedBuildsInfo *MixedBuildsInfo `protobuf:"bytes,7,opt,name=mixed_builds_info,json=mixedBuildsInfo" json:"mixed_builds_info,omitempty"` 1665 // Performance during for soong_build execution. 1666 PerfCounters []*PerfCounters `protobuf:"bytes,8,rep,name=perf_counters,json=perfCounters" json:"perf_counters,omitempty"` 1667} 1668 1669func (x *SoongBuildMetrics) Reset() { 1670 *x = SoongBuildMetrics{} 1671 if protoimpl.UnsafeEnabled { 1672 mi := &file_metrics_proto_msgTypes[13] 1673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1674 ms.StoreMessageInfo(mi) 1675 } 1676} 1677 1678func (x *SoongBuildMetrics) String() string { 1679 return protoimpl.X.MessageStringOf(x) 1680} 1681 1682func (*SoongBuildMetrics) ProtoMessage() {} 1683 1684func (x *SoongBuildMetrics) ProtoReflect() protoreflect.Message { 1685 mi := &file_metrics_proto_msgTypes[13] 1686 if protoimpl.UnsafeEnabled && x != nil { 1687 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1688 if ms.LoadMessageInfo() == nil { 1689 ms.StoreMessageInfo(mi) 1690 } 1691 return ms 1692 } 1693 return mi.MessageOf(x) 1694} 1695 1696// Deprecated: Use SoongBuildMetrics.ProtoReflect.Descriptor instead. 1697func (*SoongBuildMetrics) Descriptor() ([]byte, []int) { 1698 return file_metrics_proto_rawDescGZIP(), []int{13} 1699} 1700 1701func (x *SoongBuildMetrics) GetModules() uint32 { 1702 if x != nil && x.Modules != nil { 1703 return *x.Modules 1704 } 1705 return 0 1706} 1707 1708func (x *SoongBuildMetrics) GetVariants() uint32 { 1709 if x != nil && x.Variants != nil { 1710 return *x.Variants 1711 } 1712 return 0 1713} 1714 1715func (x *SoongBuildMetrics) GetTotalAllocCount() uint64 { 1716 if x != nil && x.TotalAllocCount != nil { 1717 return *x.TotalAllocCount 1718 } 1719 return 0 1720} 1721 1722func (x *SoongBuildMetrics) GetTotalAllocSize() uint64 { 1723 if x != nil && x.TotalAllocSize != nil { 1724 return *x.TotalAllocSize 1725 } 1726 return 0 1727} 1728 1729func (x *SoongBuildMetrics) GetMaxHeapSize() uint64 { 1730 if x != nil && x.MaxHeapSize != nil { 1731 return *x.MaxHeapSize 1732 } 1733 return 0 1734} 1735 1736func (x *SoongBuildMetrics) GetEvents() []*PerfInfo { 1737 if x != nil { 1738 return x.Events 1739 } 1740 return nil 1741} 1742 1743func (x *SoongBuildMetrics) GetMixedBuildsInfo() *MixedBuildsInfo { 1744 if x != nil { 1745 return x.MixedBuildsInfo 1746 } 1747 return nil 1748} 1749 1750func (x *SoongBuildMetrics) GetPerfCounters() []*PerfCounters { 1751 if x != nil { 1752 return x.PerfCounters 1753 } 1754 return nil 1755} 1756 1757type ExpConfigFetcher struct { 1758 state protoimpl.MessageState 1759 sizeCache protoimpl.SizeCache 1760 unknownFields protoimpl.UnknownFields 1761 1762 // The result of the call to expconfigfetcher 1763 // NO_CONFIG - Not part of experiment 1764 // CONFIG - Part of experiment, config copied successfully 1765 // ERROR - expconfigfetcher failed 1766 Status *ExpConfigFetcher_ConfigStatus `protobuf:"varint,1,opt,name=status,enum=soong_build_metrics.ExpConfigFetcher_ConfigStatus" json:"status,omitempty"` 1767 // The output config filename 1768 Filename *string `protobuf:"bytes,2,opt,name=filename" json:"filename,omitempty"` 1769 // Time, in microseconds, taken by the expconfigfetcher 1770 Micros *uint64 `protobuf:"varint,3,opt,name=micros" json:"micros,omitempty"` 1771} 1772 1773func (x *ExpConfigFetcher) Reset() { 1774 *x = ExpConfigFetcher{} 1775 if protoimpl.UnsafeEnabled { 1776 mi := &file_metrics_proto_msgTypes[14] 1777 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1778 ms.StoreMessageInfo(mi) 1779 } 1780} 1781 1782func (x *ExpConfigFetcher) String() string { 1783 return protoimpl.X.MessageStringOf(x) 1784} 1785 1786func (*ExpConfigFetcher) ProtoMessage() {} 1787 1788func (x *ExpConfigFetcher) ProtoReflect() protoreflect.Message { 1789 mi := &file_metrics_proto_msgTypes[14] 1790 if protoimpl.UnsafeEnabled && 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 ExpConfigFetcher.ProtoReflect.Descriptor instead. 1801func (*ExpConfigFetcher) Descriptor() ([]byte, []int) { 1802 return file_metrics_proto_rawDescGZIP(), []int{14} 1803} 1804 1805func (x *ExpConfigFetcher) GetStatus() ExpConfigFetcher_ConfigStatus { 1806 if x != nil && x.Status != nil { 1807 return *x.Status 1808 } 1809 return ExpConfigFetcher_NO_CONFIG 1810} 1811 1812func (x *ExpConfigFetcher) GetFilename() string { 1813 if x != nil && x.Filename != nil { 1814 return *x.Filename 1815 } 1816 return "" 1817} 1818 1819func (x *ExpConfigFetcher) GetMicros() uint64 { 1820 if x != nil && x.Micros != nil { 1821 return *x.Micros 1822 } 1823 return 0 1824} 1825 1826type MixedBuildsInfo struct { 1827 state protoimpl.MessageState 1828 sizeCache protoimpl.SizeCache 1829 unknownFields protoimpl.UnknownFields 1830 1831 // Modules that are enabled for Mixed Builds. 1832 MixedBuildEnabledModules []string `protobuf:"bytes,1,rep,name=mixed_build_enabled_modules,json=mixedBuildEnabledModules" json:"mixed_build_enabled_modules,omitempty"` 1833 // Modules that are not enabled for MixedBuilds 1834 MixedBuildDisabledModules []string `protobuf:"bytes,2,rep,name=mixed_build_disabled_modules,json=mixedBuildDisabledModules" json:"mixed_build_disabled_modules,omitempty"` 1835} 1836 1837func (x *MixedBuildsInfo) Reset() { 1838 *x = MixedBuildsInfo{} 1839 if protoimpl.UnsafeEnabled { 1840 mi := &file_metrics_proto_msgTypes[15] 1841 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1842 ms.StoreMessageInfo(mi) 1843 } 1844} 1845 1846func (x *MixedBuildsInfo) String() string { 1847 return protoimpl.X.MessageStringOf(x) 1848} 1849 1850func (*MixedBuildsInfo) ProtoMessage() {} 1851 1852func (x *MixedBuildsInfo) ProtoReflect() protoreflect.Message { 1853 mi := &file_metrics_proto_msgTypes[15] 1854 if protoimpl.UnsafeEnabled && x != nil { 1855 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1856 if ms.LoadMessageInfo() == nil { 1857 ms.StoreMessageInfo(mi) 1858 } 1859 return ms 1860 } 1861 return mi.MessageOf(x) 1862} 1863 1864// Deprecated: Use MixedBuildsInfo.ProtoReflect.Descriptor instead. 1865func (*MixedBuildsInfo) Descriptor() ([]byte, []int) { 1866 return file_metrics_proto_rawDescGZIP(), []int{15} 1867} 1868 1869func (x *MixedBuildsInfo) GetMixedBuildEnabledModules() []string { 1870 if x != nil { 1871 return x.MixedBuildEnabledModules 1872 } 1873 return nil 1874} 1875 1876func (x *MixedBuildsInfo) GetMixedBuildDisabledModules() []string { 1877 if x != nil { 1878 return x.MixedBuildDisabledModules 1879 } 1880 return nil 1881} 1882 1883// CriticalPathInfo contains critical path nodes's information. 1884// A critical path is a path determining the minimum time needed for the whole build given perfect parallelism. 1885type CriticalPathInfo struct { 1886 state protoimpl.MessageState 1887 sizeCache protoimpl.SizeCache 1888 unknownFields protoimpl.UnknownFields 1889 1890 // Real time which the build system spent in microseconds 1891 ElapsedTimeMicros *uint64 `protobuf:"varint,1,opt,name=elapsed_time_micros,json=elapsedTimeMicros" json:"elapsed_time_micros,omitempty"` 1892 // The sum of execution time of the longest path from leave to the root in microseconds 1893 CriticalPathTimeMicros *uint64 `protobuf:"varint,2,opt,name=critical_path_time_micros,json=criticalPathTimeMicros" json:"critical_path_time_micros,omitempty"` 1894 // Detailed job information in a critical path. 1895 CriticalPath []*JobInfo `protobuf:"bytes,4,rep,name=critical_path,json=criticalPath" json:"critical_path,omitempty"` 1896 // Detailed job information for long running jobs (>30 seconds). These may or may not also be on a critical path. 1897 LongRunningJobs []*JobInfo `protobuf:"bytes,5,rep,name=long_running_jobs,json=longRunningJobs" json:"long_running_jobs,omitempty"` 1898} 1899 1900func (x *CriticalPathInfo) Reset() { 1901 *x = CriticalPathInfo{} 1902 if protoimpl.UnsafeEnabled { 1903 mi := &file_metrics_proto_msgTypes[16] 1904 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1905 ms.StoreMessageInfo(mi) 1906 } 1907} 1908 1909func (x *CriticalPathInfo) String() string { 1910 return protoimpl.X.MessageStringOf(x) 1911} 1912 1913func (*CriticalPathInfo) ProtoMessage() {} 1914 1915func (x *CriticalPathInfo) ProtoReflect() protoreflect.Message { 1916 mi := &file_metrics_proto_msgTypes[16] 1917 if protoimpl.UnsafeEnabled && x != nil { 1918 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1919 if ms.LoadMessageInfo() == nil { 1920 ms.StoreMessageInfo(mi) 1921 } 1922 return ms 1923 } 1924 return mi.MessageOf(x) 1925} 1926 1927// Deprecated: Use CriticalPathInfo.ProtoReflect.Descriptor instead. 1928func (*CriticalPathInfo) Descriptor() ([]byte, []int) { 1929 return file_metrics_proto_rawDescGZIP(), []int{16} 1930} 1931 1932func (x *CriticalPathInfo) GetElapsedTimeMicros() uint64 { 1933 if x != nil && x.ElapsedTimeMicros != nil { 1934 return *x.ElapsedTimeMicros 1935 } 1936 return 0 1937} 1938 1939func (x *CriticalPathInfo) GetCriticalPathTimeMicros() uint64 { 1940 if x != nil && x.CriticalPathTimeMicros != nil { 1941 return *x.CriticalPathTimeMicros 1942 } 1943 return 0 1944} 1945 1946func (x *CriticalPathInfo) GetCriticalPath() []*JobInfo { 1947 if x != nil { 1948 return x.CriticalPath 1949 } 1950 return nil 1951} 1952 1953func (x *CriticalPathInfo) GetLongRunningJobs() []*JobInfo { 1954 if x != nil { 1955 return x.LongRunningJobs 1956 } 1957 return nil 1958} 1959 1960type JobInfo struct { 1961 state protoimpl.MessageState 1962 sizeCache protoimpl.SizeCache 1963 unknownFields protoimpl.UnknownFields 1964 1965 // Real time which a job spent in microseconds 1966 ElapsedTimeMicros *uint64 `protobuf:"varint,1,opt,name=elapsed_time_micros,json=elapsedTimeMicros" json:"elapsed_time_micros,omitempty"` 1967 // Description of a job 1968 JobDescription *string `protobuf:"bytes,2,opt,name=job_description,json=jobDescription" json:"job_description,omitempty"` 1969} 1970 1971func (x *JobInfo) Reset() { 1972 *x = JobInfo{} 1973 if protoimpl.UnsafeEnabled { 1974 mi := &file_metrics_proto_msgTypes[17] 1975 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1976 ms.StoreMessageInfo(mi) 1977 } 1978} 1979 1980func (x *JobInfo) String() string { 1981 return protoimpl.X.MessageStringOf(x) 1982} 1983 1984func (*JobInfo) ProtoMessage() {} 1985 1986func (x *JobInfo) ProtoReflect() protoreflect.Message { 1987 mi := &file_metrics_proto_msgTypes[17] 1988 if protoimpl.UnsafeEnabled && x != nil { 1989 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1990 if ms.LoadMessageInfo() == nil { 1991 ms.StoreMessageInfo(mi) 1992 } 1993 return ms 1994 } 1995 return mi.MessageOf(x) 1996} 1997 1998// Deprecated: Use JobInfo.ProtoReflect.Descriptor instead. 1999func (*JobInfo) Descriptor() ([]byte, []int) { 2000 return file_metrics_proto_rawDescGZIP(), []int{17} 2001} 2002 2003func (x *JobInfo) GetElapsedTimeMicros() uint64 { 2004 if x != nil && x.ElapsedTimeMicros != nil { 2005 return *x.ElapsedTimeMicros 2006 } 2007 return 0 2008} 2009 2010func (x *JobInfo) GetJobDescription() string { 2011 if x != nil && x.JobDescription != nil { 2012 return *x.JobDescription 2013 } 2014 return "" 2015} 2016 2017type OptimizedBuildMetrics struct { 2018 state protoimpl.MessageState 2019 sizeCache protoimpl.SizeCache 2020 unknownFields protoimpl.UnknownFields 2021 2022 // The total time spent analyzing what/how to optimize everything. 2023 AnalysisPerf *PerfInfo `protobuf:"bytes,1,opt,name=analysis_perf,json=analysisPerf" json:"analysis_perf,omitempty"` 2024 // The total time spent packaging artifacts. 2025 PackagingPerf *PerfInfo `protobuf:"bytes,2,opt,name=packaging_perf,json=packagingPerf" json:"packaging_perf,omitempty"` 2026 // Information for a single target (e.g. general-tests). 2027 TargetResult []*OptimizedBuildMetrics_TargetOptimizationResult `protobuf:"bytes,3,rep,name=target_result,json=targetResult" json:"target_result,omitempty"` 2028} 2029 2030func (x *OptimizedBuildMetrics) Reset() { 2031 *x = OptimizedBuildMetrics{} 2032 if protoimpl.UnsafeEnabled { 2033 mi := &file_metrics_proto_msgTypes[18] 2034 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2035 ms.StoreMessageInfo(mi) 2036 } 2037} 2038 2039func (x *OptimizedBuildMetrics) String() string { 2040 return protoimpl.X.MessageStringOf(x) 2041} 2042 2043func (*OptimizedBuildMetrics) ProtoMessage() {} 2044 2045func (x *OptimizedBuildMetrics) ProtoReflect() protoreflect.Message { 2046 mi := &file_metrics_proto_msgTypes[18] 2047 if protoimpl.UnsafeEnabled && x != nil { 2048 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2049 if ms.LoadMessageInfo() == nil { 2050 ms.StoreMessageInfo(mi) 2051 } 2052 return ms 2053 } 2054 return mi.MessageOf(x) 2055} 2056 2057// Deprecated: Use OptimizedBuildMetrics.ProtoReflect.Descriptor instead. 2058func (*OptimizedBuildMetrics) Descriptor() ([]byte, []int) { 2059 return file_metrics_proto_rawDescGZIP(), []int{18} 2060} 2061 2062func (x *OptimizedBuildMetrics) GetAnalysisPerf() *PerfInfo { 2063 if x != nil { 2064 return x.AnalysisPerf 2065 } 2066 return nil 2067} 2068 2069func (x *OptimizedBuildMetrics) GetPackagingPerf() *PerfInfo { 2070 if x != nil { 2071 return x.PackagingPerf 2072 } 2073 return nil 2074} 2075 2076func (x *OptimizedBuildMetrics) GetTargetResult() []*OptimizedBuildMetrics_TargetOptimizationResult { 2077 if x != nil { 2078 return x.TargetResult 2079 } 2080 return nil 2081} 2082 2083type OptimizedBuildMetrics_TargetOptimizationResult struct { 2084 state protoimpl.MessageState 2085 sizeCache protoimpl.SizeCache 2086 unknownFields protoimpl.UnknownFields 2087 2088 // Target name (e.g. general-tests). 2089 Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 2090 // Whether or not this target was optimized. 2091 Optimized *bool `protobuf:"varint,2,opt,name=optimized" json:"optimized,omitempty"` 2092 // Reasoning for why the target wasn't optimized if it wasn't 2093 OptimizationRationale *string `protobuf:"bytes,3,opt,name=optimization_rationale,json=optimizationRationale" json:"optimization_rationale,omitempty"` 2094 // Time spent packaging this specific target (if it was optimized). 2095 PackagingPerf *PerfInfo `protobuf:"bytes,4,opt,name=packaging_perf,json=packagingPerf" json:"packaging_perf,omitempty"` 2096 // Information for each different artifact produced by this target (if it 2097 // was optimized). 2098 OutputArtifact []*OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact `protobuf:"bytes,5,rep,name=output_artifact,json=outputArtifact" json:"output_artifact,omitempty"` 2099} 2100 2101func (x *OptimizedBuildMetrics_TargetOptimizationResult) Reset() { 2102 *x = OptimizedBuildMetrics_TargetOptimizationResult{} 2103 if protoimpl.UnsafeEnabled { 2104 mi := &file_metrics_proto_msgTypes[19] 2105 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2106 ms.StoreMessageInfo(mi) 2107 } 2108} 2109 2110func (x *OptimizedBuildMetrics_TargetOptimizationResult) String() string { 2111 return protoimpl.X.MessageStringOf(x) 2112} 2113 2114func (*OptimizedBuildMetrics_TargetOptimizationResult) ProtoMessage() {} 2115 2116func (x *OptimizedBuildMetrics_TargetOptimizationResult) ProtoReflect() protoreflect.Message { 2117 mi := &file_metrics_proto_msgTypes[19] 2118 if protoimpl.UnsafeEnabled && x != nil { 2119 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2120 if ms.LoadMessageInfo() == nil { 2121 ms.StoreMessageInfo(mi) 2122 } 2123 return ms 2124 } 2125 return mi.MessageOf(x) 2126} 2127 2128// Deprecated: Use OptimizedBuildMetrics_TargetOptimizationResult.ProtoReflect.Descriptor instead. 2129func (*OptimizedBuildMetrics_TargetOptimizationResult) Descriptor() ([]byte, []int) { 2130 return file_metrics_proto_rawDescGZIP(), []int{18, 0} 2131} 2132 2133func (x *OptimizedBuildMetrics_TargetOptimizationResult) GetName() string { 2134 if x != nil && x.Name != nil { 2135 return *x.Name 2136 } 2137 return "" 2138} 2139 2140func (x *OptimizedBuildMetrics_TargetOptimizationResult) GetOptimized() bool { 2141 if x != nil && x.Optimized != nil { 2142 return *x.Optimized 2143 } 2144 return false 2145} 2146 2147func (x *OptimizedBuildMetrics_TargetOptimizationResult) GetOptimizationRationale() string { 2148 if x != nil && x.OptimizationRationale != nil { 2149 return *x.OptimizationRationale 2150 } 2151 return "" 2152} 2153 2154func (x *OptimizedBuildMetrics_TargetOptimizationResult) GetPackagingPerf() *PerfInfo { 2155 if x != nil { 2156 return x.PackagingPerf 2157 } 2158 return nil 2159} 2160 2161func (x *OptimizedBuildMetrics_TargetOptimizationResult) GetOutputArtifact() []*OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact { 2162 if x != nil { 2163 return x.OutputArtifact 2164 } 2165 return nil 2166} 2167 2168type OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact struct { 2169 state protoimpl.MessageState 2170 sizeCache protoimpl.SizeCache 2171 unknownFields protoimpl.UnknownFields 2172 2173 // Artifact file name (e.g. general-tests.zip) 2174 Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 2175 // Size of the file. 2176 Size *int64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"` 2177 // Lists of modules packaged into this artifact. 2178 IncludedModules []string `protobuf:"bytes,3,rep,name=included_modules,json=includedModules" json:"included_modules,omitempty"` 2179} 2180 2181func (x *OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) Reset() { 2182 *x = OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact{} 2183 if protoimpl.UnsafeEnabled { 2184 mi := &file_metrics_proto_msgTypes[20] 2185 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2186 ms.StoreMessageInfo(mi) 2187 } 2188} 2189 2190func (x *OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) String() string { 2191 return protoimpl.X.MessageStringOf(x) 2192} 2193 2194func (*OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) ProtoMessage() {} 2195 2196func (x *OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) ProtoReflect() protoreflect.Message { 2197 mi := &file_metrics_proto_msgTypes[20] 2198 if protoimpl.UnsafeEnabled && x != nil { 2199 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2200 if ms.LoadMessageInfo() == nil { 2201 ms.StoreMessageInfo(mi) 2202 } 2203 return ms 2204 } 2205 return mi.MessageOf(x) 2206} 2207 2208// Deprecated: Use OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact.ProtoReflect.Descriptor instead. 2209func (*OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) Descriptor() ([]byte, []int) { 2210 return file_metrics_proto_rawDescGZIP(), []int{18, 0, 0} 2211} 2212 2213func (x *OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) GetName() string { 2214 if x != nil && x.Name != nil { 2215 return *x.Name 2216 } 2217 return "" 2218} 2219 2220func (x *OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) GetSize() int64 { 2221 if x != nil && x.Size != nil { 2222 return *x.Size 2223 } 2224 return 0 2225} 2226 2227func (x *OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact) GetIncludedModules() []string { 2228 if x != nil { 2229 return x.IncludedModules 2230 } 2231 return nil 2232} 2233 2234var File_metrics_proto protoreflect.FileDescriptor 2235 2236var file_metrics_proto_rawDesc = []byte{ 2237 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 2238 0x13, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 2239 0x72, 0x69, 0x63, 0x73, 0x22, 0xb0, 0x10, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 2240 0x42, 0x61, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 0x61, 2241 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 2242 0x28, 0x03, 0x52, 0x12, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 2243 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 2244 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 2245 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 2246 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 2247 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 2248 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 2249 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 2250 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 2251 0x64, 0x75, 0x63, 0x74, 0x12, 0x64, 0x0a, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 2252 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 2253 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 2254 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 2255 0x42, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 2256 0x74, 0x3a, 0x03, 0x45, 0x4e, 0x47, 0x52, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 2257 0x69, 0x6c, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x61, 2258 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 2259 0x25, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 2260 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x61, 0x73, 2261 0x65, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 2262 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x74, 2263 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 2264 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 2265 0x41, 0x72, 0x63, 0x68, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, 2266 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 2267 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 2268 0x70, 0x75, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 2269 0x74, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x73, 2270 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 2271 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x41, 2272 0x72, 0x63, 0x68, 0x3a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x08, 0x68, 0x6f, 2273 0x73, 0x74, 0x41, 0x72, 0x63, 0x68, 0x12, 0x52, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x32, 2274 0x6e, 0x64, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 2275 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 2276 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x61, 0x73, 0x65, 0x2e, 2277 0x41, 0x72, 0x63, 0x68, 0x3a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x0b, 0x68, 2278 0x6f, 0x73, 0x74, 0x32, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 2279 0x73, 0x74, 0x5f, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x73, 2280 0x74, 0x4f, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x73, 0x5f, 0x65, 2281 0x78, 0x74, 0x72, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 2282 0x4f, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 2283 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x6f, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 2284 0x68, 0x6f, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x4f, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x68, 2285 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x18, 0x0e, 2286 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x41, 2287 0x72, 0x63, 0x68, 0x12, 0x2d, 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x72, 0x6f, 0x73, 2288 0x73, 0x5f, 0x32, 0x6e, 0x64, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 2289 0x52, 0x10, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x32, 0x6e, 0x64, 0x41, 0x72, 2290 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x10, 0x20, 2291 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 2292 0x65, 0x74, 0x75, 0x70, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 2293 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 2294 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 2295 0x0a, 0x73, 0x65, 0x74, 0x75, 0x70, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x6b, 2296 0x61, 0x74, 0x69, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 2297 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 2298 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6b, 2299 0x61, 0x74, 0x69, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 2300 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 2301 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 2302 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x73, 0x6f, 0x6f, 0x6e, 2303 0x67, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x69, 0x6e, 0x6a, 0x61, 0x5f, 0x72, 2304 0x75, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 2305 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 2306 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x6e, 0x69, 0x6e, 0x6a, 0x61, 0x52, 2307 0x75, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x15, 0x20, 0x01, 2308 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 2309 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 2310 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x5a, 0x0a, 0x13, 0x73, 0x6f, 0x6f, 0x6e, 2311 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 2312 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 2313 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x6f, 0x6f, 0x6e, 2314 0x67, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x02, 0x18, 2315 0x01, 0x52, 0x11, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 2316 0x72, 0x69, 0x63, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 2317 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x6f, 2318 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 2319 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x62, 0x75, 2320 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 2321 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 2322 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 2323 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 2324 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 2325 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 2326 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x73, 0x79, 2327 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 2328 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 2329 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 2330 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x72, 2331 0x75, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 2332 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 2333 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x52, 2334 0x75, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 2335 0x67, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 2336 0x25, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 2337 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 2338 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x10, 0x65, 0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 2339 0x67, 0x46, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x6f, 0x6e, 0x5f, 2340 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 2341 0x0b, 0x6e, 0x6f, 0x6e, 0x5a, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 2342 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1e, 0x20, 2343 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 2344 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 2345 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 2346 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x20, 2347 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x53, 0x0a, 0x12, 2348 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x6e, 2349 0x66, 0x6f, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 2350 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 2351 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 2352 0x10, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x49, 0x6e, 0x66, 2353 0x6f, 0x12, 0x40, 0x0a, 0x1c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x76, 2354 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 2355 0x65, 0x18, 0x22, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 2356 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 2357 0x62, 0x6c, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 2358 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x23, 2359 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 2360 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 2361 0x69, 0x7a, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 2362 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 2363 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x30, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 2364 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 2365 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x45, 0x52, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 2366 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x3c, 0x0a, 0x04, 0x41, 0x72, 0x63, 2367 0x68, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 2368 0x0a, 0x03, 0x41, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x52, 0x4d, 0x36, 0x34, 2369 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x38, 0x36, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x58, 2370 0x38, 0x36, 0x5f, 0x36, 0x34, 0x10, 0x04, 0x22, 0x8a, 0x04, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 2371 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x5f, 0x67, 2372 0x6f, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x75, 0x73, 0x65, 0x47, 0x6f, 2373 0x6d, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x62, 0x65, 0x18, 0x02, 0x20, 2374 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, 0x65, 0x52, 0x62, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x66, 2375 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x67, 0x6f, 0x6d, 0x61, 0x18, 0x03, 0x20, 2376 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x47, 0x6f, 0x6d, 2377 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x69, 2378 0x6e, 0x6a, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x61, 0x7a, 0x65, 0x6c, 2379 0x41, 0x73, 0x4e, 0x69, 0x6e, 0x6a, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x61, 0x7a, 0x65, 0x6c, 2380 0x5f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 2381 0x28, 0x08, 0x52, 0x0f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 2382 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x06, 2383 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x44, 0x0a, 2384 0x1f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 2385 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 2386 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x69, 0x73, 2387 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x7a, 0x65, 0x6c, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 2388 0x69, 0x6c, 0x64, 0x12, 0x79, 0x0a, 0x18, 0x6e, 0x69, 0x6e, 0x6a, 0x61, 0x5f, 0x77, 0x65, 0x69, 2389 0x67, 0x68, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 2390 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 2391 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x75, 0x69, 0x6c, 2392 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x69, 0x6e, 0x6a, 0x61, 0x57, 0x65, 0x69, 2393 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x08, 0x4e, 2394 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x52, 0x15, 0x6e, 0x69, 0x6e, 0x6a, 0x61, 0x57, 0x65, 2395 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x74, 2396 0x0a, 0x15, 0x4e, 0x69, 0x6e, 0x6a, 0x61, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 2397 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 2398 0x53, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x49, 0x4e, 0x4a, 0x41, 0x5f, 0x4c, 2399 0x4f, 0x47, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x4c, 0x59, 0x5f, 0x44, 2400 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 2401 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x03, 0x12, 2402 0x13, 0x0a, 0x0f, 0x48, 0x49, 0x4e, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x53, 0x4f, 0x4f, 2403 0x4e, 0x47, 0x10, 0x04, 0x22, 0xed, 0x01, 0x0a, 0x12, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 2404 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x15, 0x74, 2405 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 2406 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 2407 0x6c, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 2408 0x25, 0x0a, 0x0e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x70, 0x75, 2409 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 2410 0x6c, 0x65, 0x43, 0x70, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x69, 0x6e, 2411 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 2412 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 2413 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x70, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x70, 2414 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 2415 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 2416 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x79, 2417 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x65, 0x6d, 2418 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7e, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x70, 2419 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 2420 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 2421 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 2422 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 2423 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 2424 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x14, 2425 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 2426 0x6c, 0x61, 0x67, 0x73, 0x22, 0x6c, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 2427 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 2428 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 2429 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x18, 0x02, 2430 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x46, 0x72, 0x65, 0x65, 0x12, 0x23, 0x0a, 2431 0x0d, 0x6d, 0x65, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 2432 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 2433 0x6c, 0x65, 0x22, 0xca, 0x02, 0x0a, 0x08, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 2434 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 2435 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 2436 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 2437 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 2438 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 2439 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 2440 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x54, 0x69, 0x6d, 2441 0x65, 0x12, 0x21, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x18, 2442 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 2443 0x79, 0x55, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 2444 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 2445 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 2446 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x63, 2447 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 2448 0x15, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 2449 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x6f, 0x6e, 0x5f, 0x7a, 0x65, 2450 0x72, 0x6f, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 2451 0x6f, 0x6e, 0x5a, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 2452 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 2453 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 2454 0x61, 0x0a, 0x0c, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 2455 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 2456 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 2457 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 2458 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 2459 0x75, 0x6e, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 2460 0x70, 0x73, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 2461 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 2462 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x6f, 2463 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 2464 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 2465 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x08, 2466 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x22, 0x37, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x66, 2467 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 2468 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 2469 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 2470 0x65, 0x22, 0xb9, 0x03, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 2471 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 2472 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 2473 0x10, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 2474 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 2475 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x79, 0x73, 0x74, 0x65, 2476 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 2477 0x01, 0x28, 0x04, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x4d, 2478 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x73, 0x73, 2479 0x5f, 0x6b, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x52, 0x73, 2480 0x73, 0x4b, 0x62, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 2481 0x65, 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 2482 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 2483 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 2484 0x75, 0x6c, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 2485 0x72, 0x50, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 2486 0x6f, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 2487 0x52, 0x09, 0x69, 0x6f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4b, 0x62, 0x12, 0x20, 0x0a, 0x0c, 0x69, 2488 0x6f, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 2489 0x04, 0x52, 0x0a, 0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4b, 0x62, 0x12, 0x3c, 0x0a, 2490 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 2491 0x78, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 2492 0x04, 0x52, 0x18, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 2493 0x65, 0x78, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x69, 2494 0x6e, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 2495 0x78, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 2496 0x04, 0x52, 0x1a, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 2497 0x6e, 0x74, 0x65, 0x78, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0xe5, 0x01, 2498 0x0a, 0x0e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 2499 0x12, 0x5b, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 2500 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 2501 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 2502 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x42, 0x75, 0x69, 0x6c, 2503 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x3a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 2504 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 2505 0x0b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 2506 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 2507 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 2508 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x6f, 0x64, 2509 0x75, 0x6c, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x73, 2510 0x74, 0x65, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 2511 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4f, 0x4f, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4d, 2512 0x41, 0x4b, 0x45, 0x10, 0x02, 0x22, 0x6c, 0x0a, 0x1a, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 2513 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x72, 2514 0x69, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 2515 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 2516 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 2517 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 2518 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x61, 0x73, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 2519 0x69, 0x63, 0x73, 0x22, 0x62, 0x0a, 0x1b, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 2520 0x73, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 2521 0x63, 0x73, 0x12, 0x43, 0x0a, 0x04, 0x63, 0x75, 0x6a, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 2522 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 2523 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 2524 0x73, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 2525 0x73, 0x52, 0x04, 0x63, 0x75, 0x6a, 0x73, 0x22, 0x94, 0x03, 0x0a, 0x11, 0x53, 0x6f, 0x6f, 0x6e, 2526 0x67, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x18, 0x0a, 2527 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 2528 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 2529 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 2530 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 2531 0x6f, 0x63, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 2532 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 2533 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x73, 2534 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 2535 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 2536 0x5f, 0x68, 0x65, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 2537 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x35, 0x0a, 2538 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 2539 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 2540 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 2541 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 2542 0x69, 0x6c, 0x64, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 2543 0x24, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 2544 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 2545 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 2546 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x66, 0x5f, 0x63, 2547 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 2548 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 2549 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 2550 0x52, 0x0c, 0x70, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x22, 0xdb, 2551 0x01, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x65, 0x74, 0x63, 2552 0x68, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 2553 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 2554 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x6f, 0x6e, 2555 0x66, 0x69, 0x67, 0x46, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 2556 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 2557 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 2558 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 2559 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x63, 2560 0x72, 0x6f, 0x73, 0x22, 0x47, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 2561 0x74, 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 2562 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x09, 2563 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x49, 0x53, 2564 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x47, 0x43, 0x45, 0x52, 0x54, 0x10, 0x03, 0x22, 0x91, 0x01, 0x0a, 2565 0x0f, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 2566 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 2567 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 2568 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 2569 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 2570 0x3f, 0x0a, 0x1c, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 2571 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 2572 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 2573 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 2574 0x22, 0x8a, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 2575 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 2576 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 2577 0x28, 0x04, 0x52, 0x11, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 2578 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 2579 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 2580 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 2581 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 2582 0x12, 0x41, 0x0a, 0x0d, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 2583 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 2584 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4a, 0x6f, 2585 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 2586 0x61, 0x74, 0x68, 0x12, 0x48, 0x0a, 0x11, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 2587 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 2588 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 2589 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6c, 0x6f, 2590 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x62, 0x0a, 2591 0x07, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6c, 0x61, 0x70, 2592 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 2593 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 2594 0x6d, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6a, 0x6f, 0x62, 0x5f, 2595 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 2596 0x09, 0x52, 0x0e, 0x6a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 2597 0x6e, 0x22, 0xb9, 0x05, 0x0a, 0x15, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x42, 2598 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x61, 2599 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x18, 0x01, 0x20, 0x01, 2600 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 2601 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 2602 0x6f, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x66, 0x12, 2603 0x44, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 2604 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 2605 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 2606 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x69, 0x6e, 2607 0x67, 0x50, 0x65, 0x72, 0x66, 0x12, 0x68, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 2608 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 2609 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 2610 0x63, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 2611 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 2612 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 2613 0x74, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 2614 0xab, 0x03, 0x0a, 0x18, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 2615 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 2616 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2617 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x02, 0x20, 2618 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x35, 2619 0x0a, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 2620 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 2621 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 2622 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x69, 2623 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 2624 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 2625 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x70, 0x61, 2626 0x63, 0x6b, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x66, 0x12, 0x7b, 0x0a, 0x0f, 0x6f, 2627 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x05, 2628 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 2629 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 2630 0x69, 0x7a, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 2631 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 2632 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 2633 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 2634 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x1a, 0x63, 0x0a, 0x0e, 0x4f, 0x75, 0x74, 0x70, 2635 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 2636 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 2637 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 2638 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x6d, 2639 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 2640 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x42, 0x28, 0x5a, 2641 0x26, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x75, 2642 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 2643 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2644} 2645 2646var ( 2647 file_metrics_proto_rawDescOnce sync.Once 2648 file_metrics_proto_rawDescData = file_metrics_proto_rawDesc 2649) 2650 2651func file_metrics_proto_rawDescGZIP() []byte { 2652 file_metrics_proto_rawDescOnce.Do(func() { 2653 file_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_metrics_proto_rawDescData) 2654 }) 2655 return file_metrics_proto_rawDescData 2656} 2657 2658var file_metrics_proto_enumTypes = make([]protoimpl.EnumInfo, 5) 2659var file_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 21) 2660var file_metrics_proto_goTypes = []interface{}{ 2661 (MetricsBase_BuildVariant)(0), // 0: soong_build_metrics.MetricsBase.BuildVariant 2662 (MetricsBase_Arch)(0), // 1: soong_build_metrics.MetricsBase.Arch 2663 (BuildConfig_NinjaWeightListSource)(0), // 2: soong_build_metrics.BuildConfig.NinjaWeightListSource 2664 (ModuleTypeInfo_BuildSystem)(0), // 3: soong_build_metrics.ModuleTypeInfo.BuildSystem 2665 (ExpConfigFetcher_ConfigStatus)(0), // 4: soong_build_metrics.ExpConfigFetcher.ConfigStatus 2666 (*MetricsBase)(nil), // 5: soong_build_metrics.MetricsBase 2667 (*BuildConfig)(nil), // 6: soong_build_metrics.BuildConfig 2668 (*SystemResourceInfo)(nil), // 7: soong_build_metrics.SystemResourceInfo 2669 (*SystemCpuInfo)(nil), // 8: soong_build_metrics.SystemCpuInfo 2670 (*SystemMemInfo)(nil), // 9: soong_build_metrics.SystemMemInfo 2671 (*PerfInfo)(nil), // 10: soong_build_metrics.PerfInfo 2672 (*PerfCounters)(nil), // 11: soong_build_metrics.PerfCounters 2673 (*PerfCounterGroup)(nil), // 12: soong_build_metrics.PerfCounterGroup 2674 (*PerfCounter)(nil), // 13: soong_build_metrics.PerfCounter 2675 (*ProcessResourceInfo)(nil), // 14: soong_build_metrics.ProcessResourceInfo 2676 (*ModuleTypeInfo)(nil), // 15: soong_build_metrics.ModuleTypeInfo 2677 (*CriticalUserJourneyMetrics)(nil), // 16: soong_build_metrics.CriticalUserJourneyMetrics 2678 (*CriticalUserJourneysMetrics)(nil), // 17: soong_build_metrics.CriticalUserJourneysMetrics 2679 (*SoongBuildMetrics)(nil), // 18: soong_build_metrics.SoongBuildMetrics 2680 (*ExpConfigFetcher)(nil), // 19: soong_build_metrics.ExpConfigFetcher 2681 (*MixedBuildsInfo)(nil), // 20: soong_build_metrics.MixedBuildsInfo 2682 (*CriticalPathInfo)(nil), // 21: soong_build_metrics.CriticalPathInfo 2683 (*JobInfo)(nil), // 22: soong_build_metrics.JobInfo 2684 (*OptimizedBuildMetrics)(nil), // 23: soong_build_metrics.OptimizedBuildMetrics 2685 (*OptimizedBuildMetrics_TargetOptimizationResult)(nil), // 24: soong_build_metrics.OptimizedBuildMetrics.TargetOptimizationResult 2686 (*OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact)(nil), // 25: soong_build_metrics.OptimizedBuildMetrics.TargetOptimizationResult.OutputArtifact 2687} 2688var file_metrics_proto_depIdxs = []int32{ 2689 0, // 0: soong_build_metrics.MetricsBase.target_build_variant:type_name -> soong_build_metrics.MetricsBase.BuildVariant 2690 1, // 1: soong_build_metrics.MetricsBase.target_arch:type_name -> soong_build_metrics.MetricsBase.Arch 2691 1, // 2: soong_build_metrics.MetricsBase.host_arch:type_name -> soong_build_metrics.MetricsBase.Arch 2692 1, // 3: soong_build_metrics.MetricsBase.host_2nd_arch:type_name -> soong_build_metrics.MetricsBase.Arch 2693 10, // 4: soong_build_metrics.MetricsBase.setup_tools:type_name -> soong_build_metrics.PerfInfo 2694 10, // 5: soong_build_metrics.MetricsBase.kati_runs:type_name -> soong_build_metrics.PerfInfo 2695 10, // 6: soong_build_metrics.MetricsBase.soong_runs:type_name -> soong_build_metrics.PerfInfo 2696 10, // 7: soong_build_metrics.MetricsBase.ninja_runs:type_name -> soong_build_metrics.PerfInfo 2697 10, // 8: soong_build_metrics.MetricsBase.total:type_name -> soong_build_metrics.PerfInfo 2698 18, // 9: soong_build_metrics.MetricsBase.soong_build_metrics:type_name -> soong_build_metrics.SoongBuildMetrics 2699 6, // 10: soong_build_metrics.MetricsBase.build_config:type_name -> soong_build_metrics.BuildConfig 2700 7, // 11: soong_build_metrics.MetricsBase.system_resource_info:type_name -> soong_build_metrics.SystemResourceInfo 2701 10, // 12: soong_build_metrics.MetricsBase.bazel_runs:type_name -> soong_build_metrics.PerfInfo 2702 19, // 13: soong_build_metrics.MetricsBase.exp_config_fetcher:type_name -> soong_build_metrics.ExpConfigFetcher 2703 21, // 14: soong_build_metrics.MetricsBase.critical_path_info:type_name -> soong_build_metrics.CriticalPathInfo 2704 23, // 15: soong_build_metrics.MetricsBase.optimized_build_metrics:type_name -> soong_build_metrics.OptimizedBuildMetrics 2705 2, // 16: soong_build_metrics.BuildConfig.ninja_weight_list_source:type_name -> soong_build_metrics.BuildConfig.NinjaWeightListSource 2706 8, // 17: soong_build_metrics.SystemResourceInfo.cpu_info:type_name -> soong_build_metrics.SystemCpuInfo 2707 9, // 18: soong_build_metrics.SystemResourceInfo.mem_info:type_name -> soong_build_metrics.SystemMemInfo 2708 14, // 19: soong_build_metrics.PerfInfo.processes_resource_info:type_name -> soong_build_metrics.ProcessResourceInfo 2709 12, // 20: soong_build_metrics.PerfCounters.groups:type_name -> soong_build_metrics.PerfCounterGroup 2710 13, // 21: soong_build_metrics.PerfCounterGroup.counters:type_name -> soong_build_metrics.PerfCounter 2711 3, // 22: soong_build_metrics.ModuleTypeInfo.build_system:type_name -> soong_build_metrics.ModuleTypeInfo.BuildSystem 2712 5, // 23: soong_build_metrics.CriticalUserJourneyMetrics.metrics:type_name -> soong_build_metrics.MetricsBase 2713 16, // 24: soong_build_metrics.CriticalUserJourneysMetrics.cujs:type_name -> soong_build_metrics.CriticalUserJourneyMetrics 2714 10, // 25: soong_build_metrics.SoongBuildMetrics.events:type_name -> soong_build_metrics.PerfInfo 2715 20, // 26: soong_build_metrics.SoongBuildMetrics.mixed_builds_info:type_name -> soong_build_metrics.MixedBuildsInfo 2716 11, // 27: soong_build_metrics.SoongBuildMetrics.perf_counters:type_name -> soong_build_metrics.PerfCounters 2717 4, // 28: soong_build_metrics.ExpConfigFetcher.status:type_name -> soong_build_metrics.ExpConfigFetcher.ConfigStatus 2718 22, // 29: soong_build_metrics.CriticalPathInfo.critical_path:type_name -> soong_build_metrics.JobInfo 2719 22, // 30: soong_build_metrics.CriticalPathInfo.long_running_jobs:type_name -> soong_build_metrics.JobInfo 2720 10, // 31: soong_build_metrics.OptimizedBuildMetrics.analysis_perf:type_name -> soong_build_metrics.PerfInfo 2721 10, // 32: soong_build_metrics.OptimizedBuildMetrics.packaging_perf:type_name -> soong_build_metrics.PerfInfo 2722 24, // 33: soong_build_metrics.OptimizedBuildMetrics.target_result:type_name -> soong_build_metrics.OptimizedBuildMetrics.TargetOptimizationResult 2723 10, // 34: soong_build_metrics.OptimizedBuildMetrics.TargetOptimizationResult.packaging_perf:type_name -> soong_build_metrics.PerfInfo 2724 25, // 35: soong_build_metrics.OptimizedBuildMetrics.TargetOptimizationResult.output_artifact:type_name -> soong_build_metrics.OptimizedBuildMetrics.TargetOptimizationResult.OutputArtifact 2725 36, // [36:36] is the sub-list for method output_type 2726 36, // [36:36] is the sub-list for method input_type 2727 36, // [36:36] is the sub-list for extension type_name 2728 36, // [36:36] is the sub-list for extension extendee 2729 0, // [0:36] is the sub-list for field type_name 2730} 2731 2732func init() { file_metrics_proto_init() } 2733func file_metrics_proto_init() { 2734 if File_metrics_proto != nil { 2735 return 2736 } 2737 if !protoimpl.UnsafeEnabled { 2738 file_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2739 switch v := v.(*MetricsBase); i { 2740 case 0: 2741 return &v.state 2742 case 1: 2743 return &v.sizeCache 2744 case 2: 2745 return &v.unknownFields 2746 default: 2747 return nil 2748 } 2749 } 2750 file_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2751 switch v := v.(*BuildConfig); i { 2752 case 0: 2753 return &v.state 2754 case 1: 2755 return &v.sizeCache 2756 case 2: 2757 return &v.unknownFields 2758 default: 2759 return nil 2760 } 2761 } 2762 file_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2763 switch v := v.(*SystemResourceInfo); i { 2764 case 0: 2765 return &v.state 2766 case 1: 2767 return &v.sizeCache 2768 case 2: 2769 return &v.unknownFields 2770 default: 2771 return nil 2772 } 2773 } 2774 file_metrics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2775 switch v := v.(*SystemCpuInfo); i { 2776 case 0: 2777 return &v.state 2778 case 1: 2779 return &v.sizeCache 2780 case 2: 2781 return &v.unknownFields 2782 default: 2783 return nil 2784 } 2785 } 2786 file_metrics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2787 switch v := v.(*SystemMemInfo); i { 2788 case 0: 2789 return &v.state 2790 case 1: 2791 return &v.sizeCache 2792 case 2: 2793 return &v.unknownFields 2794 default: 2795 return nil 2796 } 2797 } 2798 file_metrics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2799 switch v := v.(*PerfInfo); i { 2800 case 0: 2801 return &v.state 2802 case 1: 2803 return &v.sizeCache 2804 case 2: 2805 return &v.unknownFields 2806 default: 2807 return nil 2808 } 2809 } 2810 file_metrics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2811 switch v := v.(*PerfCounters); i { 2812 case 0: 2813 return &v.state 2814 case 1: 2815 return &v.sizeCache 2816 case 2: 2817 return &v.unknownFields 2818 default: 2819 return nil 2820 } 2821 } 2822 file_metrics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2823 switch v := v.(*PerfCounterGroup); i { 2824 case 0: 2825 return &v.state 2826 case 1: 2827 return &v.sizeCache 2828 case 2: 2829 return &v.unknownFields 2830 default: 2831 return nil 2832 } 2833 } 2834 file_metrics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2835 switch v := v.(*PerfCounter); i { 2836 case 0: 2837 return &v.state 2838 case 1: 2839 return &v.sizeCache 2840 case 2: 2841 return &v.unknownFields 2842 default: 2843 return nil 2844 } 2845 } 2846 file_metrics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2847 switch v := v.(*ProcessResourceInfo); i { 2848 case 0: 2849 return &v.state 2850 case 1: 2851 return &v.sizeCache 2852 case 2: 2853 return &v.unknownFields 2854 default: 2855 return nil 2856 } 2857 } 2858 file_metrics_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2859 switch v := v.(*ModuleTypeInfo); i { 2860 case 0: 2861 return &v.state 2862 case 1: 2863 return &v.sizeCache 2864 case 2: 2865 return &v.unknownFields 2866 default: 2867 return nil 2868 } 2869 } 2870 file_metrics_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2871 switch v := v.(*CriticalUserJourneyMetrics); i { 2872 case 0: 2873 return &v.state 2874 case 1: 2875 return &v.sizeCache 2876 case 2: 2877 return &v.unknownFields 2878 default: 2879 return nil 2880 } 2881 } 2882 file_metrics_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 2883 switch v := v.(*CriticalUserJourneysMetrics); i { 2884 case 0: 2885 return &v.state 2886 case 1: 2887 return &v.sizeCache 2888 case 2: 2889 return &v.unknownFields 2890 default: 2891 return nil 2892 } 2893 } 2894 file_metrics_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 2895 switch v := v.(*SoongBuildMetrics); i { 2896 case 0: 2897 return &v.state 2898 case 1: 2899 return &v.sizeCache 2900 case 2: 2901 return &v.unknownFields 2902 default: 2903 return nil 2904 } 2905 } 2906 file_metrics_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 2907 switch v := v.(*ExpConfigFetcher); i { 2908 case 0: 2909 return &v.state 2910 case 1: 2911 return &v.sizeCache 2912 case 2: 2913 return &v.unknownFields 2914 default: 2915 return nil 2916 } 2917 } 2918 file_metrics_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 2919 switch v := v.(*MixedBuildsInfo); i { 2920 case 0: 2921 return &v.state 2922 case 1: 2923 return &v.sizeCache 2924 case 2: 2925 return &v.unknownFields 2926 default: 2927 return nil 2928 } 2929 } 2930 file_metrics_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 2931 switch v := v.(*CriticalPathInfo); i { 2932 case 0: 2933 return &v.state 2934 case 1: 2935 return &v.sizeCache 2936 case 2: 2937 return &v.unknownFields 2938 default: 2939 return nil 2940 } 2941 } 2942 file_metrics_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 2943 switch v := v.(*JobInfo); i { 2944 case 0: 2945 return &v.state 2946 case 1: 2947 return &v.sizeCache 2948 case 2: 2949 return &v.unknownFields 2950 default: 2951 return nil 2952 } 2953 } 2954 file_metrics_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 2955 switch v := v.(*OptimizedBuildMetrics); i { 2956 case 0: 2957 return &v.state 2958 case 1: 2959 return &v.sizeCache 2960 case 2: 2961 return &v.unknownFields 2962 default: 2963 return nil 2964 } 2965 } 2966 file_metrics_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 2967 switch v := v.(*OptimizedBuildMetrics_TargetOptimizationResult); i { 2968 case 0: 2969 return &v.state 2970 case 1: 2971 return &v.sizeCache 2972 case 2: 2973 return &v.unknownFields 2974 default: 2975 return nil 2976 } 2977 } 2978 file_metrics_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 2979 switch v := v.(*OptimizedBuildMetrics_TargetOptimizationResult_OutputArtifact); i { 2980 case 0: 2981 return &v.state 2982 case 1: 2983 return &v.sizeCache 2984 case 2: 2985 return &v.unknownFields 2986 default: 2987 return nil 2988 } 2989 } 2990 } 2991 type x struct{} 2992 out := protoimpl.TypeBuilder{ 2993 File: protoimpl.DescBuilder{ 2994 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2995 RawDescriptor: file_metrics_proto_rawDesc, 2996 NumEnums: 5, 2997 NumMessages: 21, 2998 NumExtensions: 0, 2999 NumServices: 0, 3000 }, 3001 GoTypes: file_metrics_proto_goTypes, 3002 DependencyIndexes: file_metrics_proto_depIdxs, 3003 EnumInfos: file_metrics_proto_enumTypes, 3004 MessageInfos: file_metrics_proto_msgTypes, 3005 }.Build() 3006 File_metrics_proto = out.File 3007 file_metrics_proto_rawDesc = nil 3008 file_metrics_proto_goTypes = nil 3009 file_metrics_proto_depIdxs = nil 3010} 3011