1// Copyright 2020 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go. DO NOT EDIT. 16// versions: 17// protoc-gen-go v1.26.0 18// protoc v3.12.2 19// source: google/cloud/talent/v4beta1/filters.proto 20 21package talent 22 23import ( 24 reflect "reflect" 25 sync "sync" 26 27 _ "google.golang.org/genproto/googleapis/api/annotations" 28 date "google.golang.org/genproto/googleapis/type/date" 29 latlng "google.golang.org/genproto/googleapis/type/latlng" 30 timeofday "google.golang.org/genproto/googleapis/type/timeofday" 31 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 32 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 33 durationpb "google.golang.org/protobuf/types/known/durationpb" 34 _ "google.golang.org/protobuf/types/known/fieldmaskpb" 35 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 36 wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" 37) 38 39const ( 40 // Verify that this generated code is sufficiently up-to-date. 41 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 42 // Verify that runtime/protoimpl is sufficiently up-to-date. 43 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 44) 45 46// Specify whether to include telecommute jobs. 47type LocationFilter_TelecommutePreference int32 48 49const ( 50 // Default value if the telecommute preference isn't specified. 51 LocationFilter_TELECOMMUTE_PREFERENCE_UNSPECIFIED LocationFilter_TelecommutePreference = 0 52 // Exclude telecommute jobs. 53 LocationFilter_TELECOMMUTE_EXCLUDED LocationFilter_TelecommutePreference = 1 54 // Allow telecommute jobs. 55 LocationFilter_TELECOMMUTE_ALLOWED LocationFilter_TelecommutePreference = 2 56) 57 58// Enum value maps for LocationFilter_TelecommutePreference. 59var ( 60 LocationFilter_TelecommutePreference_name = map[int32]string{ 61 0: "TELECOMMUTE_PREFERENCE_UNSPECIFIED", 62 1: "TELECOMMUTE_EXCLUDED", 63 2: "TELECOMMUTE_ALLOWED", 64 } 65 LocationFilter_TelecommutePreference_value = map[string]int32{ 66 "TELECOMMUTE_PREFERENCE_UNSPECIFIED": 0, 67 "TELECOMMUTE_EXCLUDED": 1, 68 "TELECOMMUTE_ALLOWED": 2, 69 } 70) 71 72func (x LocationFilter_TelecommutePreference) Enum() *LocationFilter_TelecommutePreference { 73 p := new(LocationFilter_TelecommutePreference) 74 *p = x 75 return p 76} 77 78func (x LocationFilter_TelecommutePreference) String() string { 79 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 80} 81 82func (LocationFilter_TelecommutePreference) Descriptor() protoreflect.EnumDescriptor { 83 return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[0].Descriptor() 84} 85 86func (LocationFilter_TelecommutePreference) Type() protoreflect.EnumType { 87 return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[0] 88} 89 90func (x LocationFilter_TelecommutePreference) Number() protoreflect.EnumNumber { 91 return protoreflect.EnumNumber(x) 92} 93 94// Deprecated: Use LocationFilter_TelecommutePreference.Descriptor instead. 95func (LocationFilter_TelecommutePreference) EnumDescriptor() ([]byte, []int) { 96 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{2, 0} 97} 98 99// Specify the type of filtering. 100type CompensationFilter_FilterType int32 101 102const ( 103 // Filter type unspecified. Position holder, INVALID, should never be used. 104 CompensationFilter_FILTER_TYPE_UNSPECIFIED CompensationFilter_FilterType = 0 105 // Filter by `base compensation entry's` unit. A job is a match if and 106 // only if the job contains a base CompensationEntry and the base 107 // CompensationEntry's unit matches provided [units][google.cloud.talent.v4beta1.CompensationFilter.units]. 108 // Populate one or more [units][google.cloud.talent.v4beta1.CompensationFilter.units]. 109 // 110 // See [CompensationInfo.CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for definition of 111 // base compensation entry. 112 CompensationFilter_UNIT_ONLY CompensationFilter_FilterType = 1 113 // Filter by `base compensation entry's` unit and amount / range. A job 114 // is a match if and only if the job contains a base CompensationEntry, and 115 // the base entry's unit matches provided 116 // [CompensationUnit][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit] and 117 // amount or range overlaps with provided 118 // [CompensationRange][google.cloud.talent.v4beta1.CompensationInfo.CompensationRange]. 119 // 120 // See [CompensationInfo.CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for definition of 121 // base compensation entry. 122 // 123 // Set exactly one [units][google.cloud.talent.v4beta1.CompensationFilter.units] and populate [range][google.cloud.talent.v4beta1.CompensationFilter.range]. 124 CompensationFilter_UNIT_AND_AMOUNT CompensationFilter_FilterType = 2 125 // Filter by annualized base compensation amount and `base compensation 126 // entry's` unit. Populate [range][google.cloud.talent.v4beta1.CompensationFilter.range] and zero or more [units][google.cloud.talent.v4beta1.CompensationFilter.units]. 127 CompensationFilter_ANNUALIZED_BASE_AMOUNT CompensationFilter_FilterType = 3 128 // Filter by annualized total compensation amount and `base compensation 129 // entry's` unit . Populate [range][google.cloud.talent.v4beta1.CompensationFilter.range] and zero or more [units][google.cloud.talent.v4beta1.CompensationFilter.units]. 130 CompensationFilter_ANNUALIZED_TOTAL_AMOUNT CompensationFilter_FilterType = 4 131) 132 133// Enum value maps for CompensationFilter_FilterType. 134var ( 135 CompensationFilter_FilterType_name = map[int32]string{ 136 0: "FILTER_TYPE_UNSPECIFIED", 137 1: "UNIT_ONLY", 138 2: "UNIT_AND_AMOUNT", 139 3: "ANNUALIZED_BASE_AMOUNT", 140 4: "ANNUALIZED_TOTAL_AMOUNT", 141 } 142 CompensationFilter_FilterType_value = map[string]int32{ 143 "FILTER_TYPE_UNSPECIFIED": 0, 144 "UNIT_ONLY": 1, 145 "UNIT_AND_AMOUNT": 2, 146 "ANNUALIZED_BASE_AMOUNT": 3, 147 "ANNUALIZED_TOTAL_AMOUNT": 4, 148 } 149) 150 151func (x CompensationFilter_FilterType) Enum() *CompensationFilter_FilterType { 152 p := new(CompensationFilter_FilterType) 153 *p = x 154 return p 155} 156 157func (x CompensationFilter_FilterType) String() string { 158 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 159} 160 161func (CompensationFilter_FilterType) Descriptor() protoreflect.EnumDescriptor { 162 return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[1].Descriptor() 163} 164 165func (CompensationFilter_FilterType) Type() protoreflect.EnumType { 166 return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[1] 167} 168 169func (x CompensationFilter_FilterType) Number() protoreflect.EnumNumber { 170 return protoreflect.EnumNumber(x) 171} 172 173// Deprecated: Use CompensationFilter_FilterType.Descriptor instead. 174func (CompensationFilter_FilterType) EnumDescriptor() ([]byte, []int) { 175 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{3, 0} 176} 177 178// The traffic density to use when calculating commute time. 179type CommuteFilter_RoadTraffic int32 180 181const ( 182 // Road traffic situation isn't specified. 183 CommuteFilter_ROAD_TRAFFIC_UNSPECIFIED CommuteFilter_RoadTraffic = 0 184 // Optimal commute time without considering any traffic impact. 185 CommuteFilter_TRAFFIC_FREE CommuteFilter_RoadTraffic = 1 186 // Commute time calculation takes in account the peak traffic impact. 187 CommuteFilter_BUSY_HOUR CommuteFilter_RoadTraffic = 2 188) 189 190// Enum value maps for CommuteFilter_RoadTraffic. 191var ( 192 CommuteFilter_RoadTraffic_name = map[int32]string{ 193 0: "ROAD_TRAFFIC_UNSPECIFIED", 194 1: "TRAFFIC_FREE", 195 2: "BUSY_HOUR", 196 } 197 CommuteFilter_RoadTraffic_value = map[string]int32{ 198 "ROAD_TRAFFIC_UNSPECIFIED": 0, 199 "TRAFFIC_FREE": 1, 200 "BUSY_HOUR": 2, 201 } 202) 203 204func (x CommuteFilter_RoadTraffic) Enum() *CommuteFilter_RoadTraffic { 205 p := new(CommuteFilter_RoadTraffic) 206 *p = x 207 return p 208} 209 210func (x CommuteFilter_RoadTraffic) String() string { 211 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 212} 213 214func (CommuteFilter_RoadTraffic) Descriptor() protoreflect.EnumDescriptor { 215 return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[2].Descriptor() 216} 217 218func (CommuteFilter_RoadTraffic) Type() protoreflect.EnumType { 219 return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[2] 220} 221 222func (x CommuteFilter_RoadTraffic) Number() protoreflect.EnumNumber { 223 return protoreflect.EnumNumber(x) 224} 225 226// Deprecated: Use CommuteFilter_RoadTraffic.Descriptor instead. 227func (CommuteFilter_RoadTraffic) EnumDescriptor() ([]byte, []int) { 228 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{4, 0} 229} 230 231// Enum indicating which set of [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records] to search 232// against. 233type EmployerFilter_EmployerFilterMode int32 234 235const ( 236 // Default value. 237 EmployerFilter_EMPLOYER_FILTER_MODE_UNSPECIFIED EmployerFilter_EmployerFilterMode = 0 238 // Apply to all employers in [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records]. 239 EmployerFilter_ALL_EMPLOYMENT_RECORDS EmployerFilter_EmployerFilterMode = 1 240 // Apply only to current employer in [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records]. 241 EmployerFilter_CURRENT_EMPLOYMENT_RECORDS_ONLY EmployerFilter_EmployerFilterMode = 2 242 // Apply only to past (not current) employers in 243 // [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records]. 244 EmployerFilter_PAST_EMPLOYMENT_RECORDS_ONLY EmployerFilter_EmployerFilterMode = 3 245) 246 247// Enum value maps for EmployerFilter_EmployerFilterMode. 248var ( 249 EmployerFilter_EmployerFilterMode_name = map[int32]string{ 250 0: "EMPLOYER_FILTER_MODE_UNSPECIFIED", 251 1: "ALL_EMPLOYMENT_RECORDS", 252 2: "CURRENT_EMPLOYMENT_RECORDS_ONLY", 253 3: "PAST_EMPLOYMENT_RECORDS_ONLY", 254 } 255 EmployerFilter_EmployerFilterMode_value = map[string]int32{ 256 "EMPLOYER_FILTER_MODE_UNSPECIFIED": 0, 257 "ALL_EMPLOYMENT_RECORDS": 1, 258 "CURRENT_EMPLOYMENT_RECORDS_ONLY": 2, 259 "PAST_EMPLOYMENT_RECORDS_ONLY": 3, 260 } 261) 262 263func (x EmployerFilter_EmployerFilterMode) Enum() *EmployerFilter_EmployerFilterMode { 264 p := new(EmployerFilter_EmployerFilterMode) 265 *p = x 266 return p 267} 268 269func (x EmployerFilter_EmployerFilterMode) String() string { 270 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 271} 272 273func (EmployerFilter_EmployerFilterMode) Descriptor() protoreflect.EnumDescriptor { 274 return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[3].Descriptor() 275} 276 277func (EmployerFilter_EmployerFilterMode) Type() protoreflect.EnumType { 278 return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[3] 279} 280 281func (x EmployerFilter_EmployerFilterMode) Number() protoreflect.EnumNumber { 282 return protoreflect.EnumNumber(x) 283} 284 285// Deprecated: Use EmployerFilter_EmployerFilterMode.Descriptor instead. 286func (EmployerFilter_EmployerFilterMode) EnumDescriptor() ([]byte, []int) { 287 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{7, 0} 288} 289 290// Time fields can be used in TimeFilter. 291type TimeFilter_TimeField int32 292 293const ( 294 // Default value. 295 TimeFilter_TIME_FIELD_UNSPECIFIED TimeFilter_TimeField = 0 296 // Earliest profile create time. 297 TimeFilter_CREATE_TIME TimeFilter_TimeField = 1 298 // Latest profile update time. 299 TimeFilter_UPDATE_TIME TimeFilter_TimeField = 2 300) 301 302// Enum value maps for TimeFilter_TimeField. 303var ( 304 TimeFilter_TimeField_name = map[int32]string{ 305 0: "TIME_FIELD_UNSPECIFIED", 306 1: "CREATE_TIME", 307 2: "UPDATE_TIME", 308 } 309 TimeFilter_TimeField_value = map[string]int32{ 310 "TIME_FIELD_UNSPECIFIED": 0, 311 "CREATE_TIME": 1, 312 "UPDATE_TIME": 2, 313 } 314) 315 316func (x TimeFilter_TimeField) Enum() *TimeFilter_TimeField { 317 p := new(TimeFilter_TimeField) 318 *p = x 319 return p 320} 321 322func (x TimeFilter_TimeField) String() string { 323 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 324} 325 326func (TimeFilter_TimeField) Descriptor() protoreflect.EnumDescriptor { 327 return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[4].Descriptor() 328} 329 330func (TimeFilter_TimeField) Type() protoreflect.EnumType { 331 return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[4] 332} 333 334func (x TimeFilter_TimeField) Number() protoreflect.EnumNumber { 335 return protoreflect.EnumNumber(x) 336} 337 338// Deprecated: Use TimeFilter_TimeField.Descriptor instead. 339func (TimeFilter_TimeField) EnumDescriptor() ([]byte, []int) { 340 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{13, 0} 341} 342 343// The query required to perform a search query. 344type JobQuery struct { 345 state protoimpl.MessageState 346 sizeCache protoimpl.SizeCache 347 unknownFields protoimpl.UnknownFields 348 349 // The query string that matches against the job title, description, and 350 // location fields. 351 // 352 // The maximum number of allowed characters is 255. 353 Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` 354 // The language code of [query][google.cloud.talent.v4beta1.JobQuery.query]. For example, "en-US". This field helps to 355 // better interpret the query. 356 // 357 // If a value isn't specified, the query language code is automatically 358 // detected, which may not be accurate. 359 // 360 // Language code should be in BCP-47 format, such as "en-US" or "sr-Latn". 361 // For more information, see 362 // [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). 363 QueryLanguageCode string `protobuf:"bytes,14,opt,name=query_language_code,json=queryLanguageCode,proto3" json:"query_language_code,omitempty"` 364 // This filter specifies the company entities to search against. 365 // 366 // If a value isn't specified, jobs are searched for against all 367 // companies. 368 // 369 // If multiple values are specified, jobs are searched against the 370 // companies specified. 371 // 372 // The format is 373 // "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}". For 374 // example, "projects/foo/tenants/bar/companies/baz". 375 // 376 // If tenant id is unspecified, the default tenant is used. For 377 // example, "projects/foo/companies/bar". 378 // 379 // At most 20 company filters are allowed. 380 Companies []string `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` 381 // The location filter specifies geo-regions containing the jobs to 382 // search against. See [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] for more information. 383 // 384 // If a location value isn't specified, jobs fitting the other search 385 // criteria are retrieved regardless of where they're located. 386 // 387 // If multiple values are specified, jobs are retrieved from any of the 388 // specified locations. If different values are specified for the 389 // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] parameter, the maximum provided 390 // distance is used for all locations. 391 // 392 // At most 5 location filters are allowed. 393 LocationFilters []*LocationFilter `protobuf:"bytes,3,rep,name=location_filters,json=locationFilters,proto3" json:"location_filters,omitempty"` 394 // The category filter specifies the categories of jobs to search against. 395 // See [JobCategory][google.cloud.talent.v4beta1.JobCategory] for more information. 396 // 397 // If a value isn't specified, jobs from any category are searched against. 398 // 399 // If multiple values are specified, jobs from any of the specified 400 // categories are searched against. 401 JobCategories []JobCategory `protobuf:"varint,4,rep,packed,name=job_categories,json=jobCategories,proto3,enum=google.cloud.talent.v4beta1.JobCategory" json:"job_categories,omitempty"` 402 // Allows filtering jobs by commute time with different travel methods (for 403 // example, driving or public transit). 404 // 405 // Note: This only works when you specify a [CommuteMethod][google.cloud.talent.v4beta1.CommuteMethod]. In this case, 406 // [location_filters][google.cloud.talent.v4beta1.JobQuery.location_filters] is ignored. 407 // 408 // Currently we don't support sorting by commute time. 409 CommuteFilter *CommuteFilter `protobuf:"bytes,5,opt,name=commute_filter,json=commuteFilter,proto3" json:"commute_filter,omitempty"` 410 // This filter specifies the exact company [Company.display_name][google.cloud.talent.v4beta1.Company.display_name] 411 // of the jobs to search against. 412 // 413 // If a value isn't specified, jobs within the search results are 414 // associated with any company. 415 // 416 // If multiple values are specified, jobs within the search results may be 417 // associated with any of the specified companies. 418 // 419 // At most 20 company display name filters are allowed. 420 CompanyDisplayNames []string `protobuf:"bytes,6,rep,name=company_display_names,json=companyDisplayNames,proto3" json:"company_display_names,omitempty"` 421 // This search filter is applied only to 422 // [Job.compensation_info][google.cloud.talent.v4beta1.Job.compensation_info]. For example, if the filter is specified 423 // as "Hourly job with per-hour compensation > $15", only jobs meeting 424 // these criteria are searched. If a filter isn't defined, all open jobs 425 // are searched. 426 CompensationFilter *CompensationFilter `protobuf:"bytes,7,opt,name=compensation_filter,json=compensationFilter,proto3" json:"compensation_filter,omitempty"` 427 // This filter specifies a structured syntax to match against the 428 // [Job.custom_attributes][google.cloud.talent.v4beta1.Job.custom_attributes] marked as `filterable`. 429 // 430 // The syntax for this expression is a subset of SQL syntax. 431 // 432 // Supported operators are: `=`, `!=`, `<`, `<=`, `>`, and `>=` where the 433 // left of the operator is a custom field key and the right of the operator 434 // is a number or a quoted string. You must escape backslash (\\) and 435 // quote (\") characters. 436 // 437 // Supported functions are `LOWER([field_name])` to 438 // perform a case insensitive match and `EMPTY([field_name])` to filter on the 439 // existence of a key. 440 // 441 // Boolean expressions (AND/OR/NOT) are supported up to 3 levels of 442 // nesting (for example, "((A AND B AND C) OR NOT D) AND E"), a maximum of 100 443 // comparisons or functions are allowed in the expression. The expression 444 // must be < 6000 bytes in length. 445 // 446 // Sample Query: 447 // `(LOWER(driving_license)="class \"a\"" OR EMPTY(driving_license)) AND 448 // driving_years > 10` 449 CustomAttributeFilter string `protobuf:"bytes,8,opt,name=custom_attribute_filter,json=customAttributeFilter,proto3" json:"custom_attribute_filter,omitempty"` 450 // This flag controls the spell-check feature. If false, the 451 // service attempts to correct a misspelled query, 452 // for example, "enginee" is corrected to "engineer". 453 // 454 // Defaults to false: a spell check is performed. 455 DisableSpellCheck bool `protobuf:"varint,9,opt,name=disable_spell_check,json=disableSpellCheck,proto3" json:"disable_spell_check,omitempty"` 456 // The employment type filter specifies the employment type of jobs to 457 // search against, such as [EmploymentType.FULL_TIME][google.cloud.talent.v4beta1.EmploymentType.FULL_TIME]. 458 // 459 // If a value isn't specified, jobs in the search results includes any 460 // employment type. 461 // 462 // If multiple values are specified, jobs in the search results include 463 // any of the specified employment types. 464 EmploymentTypes []EmploymentType `protobuf:"varint,10,rep,packed,name=employment_types,json=employmentTypes,proto3,enum=google.cloud.talent.v4beta1.EmploymentType" json:"employment_types,omitempty"` 465 // This filter specifies the locale of jobs to search against, 466 // for example, "en-US". 467 // 468 // If a value isn't specified, the search results can contain jobs in any 469 // locale. 470 // 471 // 472 // Language codes should be in BCP-47 format, such as "en-US" or "sr-Latn". 473 // For more information, see 474 // [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). 475 // 476 // At most 10 language code filters are allowed. 477 LanguageCodes []string `protobuf:"bytes,11,rep,name=language_codes,json=languageCodes,proto3" json:"language_codes,omitempty"` 478 // Jobs published within a range specified by this filter are searched 479 // against. 480 PublishTimeRange *TimestampRange `protobuf:"bytes,12,opt,name=publish_time_range,json=publishTimeRange,proto3" json:"publish_time_range,omitempty"` 481 // This filter specifies a list of job names to be excluded during search. 482 // 483 // At most 400 excluded job names are allowed. 484 ExcludedJobs []string `protobuf:"bytes,13,rep,name=excluded_jobs,json=excludedJobs,proto3" json:"excluded_jobs,omitempty"` 485} 486 487func (x *JobQuery) Reset() { 488 *x = JobQuery{} 489 if protoimpl.UnsafeEnabled { 490 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[0] 491 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 492 ms.StoreMessageInfo(mi) 493 } 494} 495 496func (x *JobQuery) String() string { 497 return protoimpl.X.MessageStringOf(x) 498} 499 500func (*JobQuery) ProtoMessage() {} 501 502func (x *JobQuery) ProtoReflect() protoreflect.Message { 503 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[0] 504 if protoimpl.UnsafeEnabled && x != nil { 505 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 506 if ms.LoadMessageInfo() == nil { 507 ms.StoreMessageInfo(mi) 508 } 509 return ms 510 } 511 return mi.MessageOf(x) 512} 513 514// Deprecated: Use JobQuery.ProtoReflect.Descriptor instead. 515func (*JobQuery) Descriptor() ([]byte, []int) { 516 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{0} 517} 518 519func (x *JobQuery) GetQuery() string { 520 if x != nil { 521 return x.Query 522 } 523 return "" 524} 525 526func (x *JobQuery) GetQueryLanguageCode() string { 527 if x != nil { 528 return x.QueryLanguageCode 529 } 530 return "" 531} 532 533func (x *JobQuery) GetCompanies() []string { 534 if x != nil { 535 return x.Companies 536 } 537 return nil 538} 539 540func (x *JobQuery) GetLocationFilters() []*LocationFilter { 541 if x != nil { 542 return x.LocationFilters 543 } 544 return nil 545} 546 547func (x *JobQuery) GetJobCategories() []JobCategory { 548 if x != nil { 549 return x.JobCategories 550 } 551 return nil 552} 553 554func (x *JobQuery) GetCommuteFilter() *CommuteFilter { 555 if x != nil { 556 return x.CommuteFilter 557 } 558 return nil 559} 560 561func (x *JobQuery) GetCompanyDisplayNames() []string { 562 if x != nil { 563 return x.CompanyDisplayNames 564 } 565 return nil 566} 567 568func (x *JobQuery) GetCompensationFilter() *CompensationFilter { 569 if x != nil { 570 return x.CompensationFilter 571 } 572 return nil 573} 574 575func (x *JobQuery) GetCustomAttributeFilter() string { 576 if x != nil { 577 return x.CustomAttributeFilter 578 } 579 return "" 580} 581 582func (x *JobQuery) GetDisableSpellCheck() bool { 583 if x != nil { 584 return x.DisableSpellCheck 585 } 586 return false 587} 588 589func (x *JobQuery) GetEmploymentTypes() []EmploymentType { 590 if x != nil { 591 return x.EmploymentTypes 592 } 593 return nil 594} 595 596func (x *JobQuery) GetLanguageCodes() []string { 597 if x != nil { 598 return x.LanguageCodes 599 } 600 return nil 601} 602 603func (x *JobQuery) GetPublishTimeRange() *TimestampRange { 604 if x != nil { 605 return x.PublishTimeRange 606 } 607 return nil 608} 609 610func (x *JobQuery) GetExcludedJobs() []string { 611 if x != nil { 612 return x.ExcludedJobs 613 } 614 return nil 615} 616 617// Filters to apply when performing the search query. 618type ProfileQuery struct { 619 state protoimpl.MessageState 620 sizeCache protoimpl.SizeCache 621 unknownFields protoimpl.UnknownFields 622 623 // Keywords to match any text fields of profiles. 624 // 625 // For example, "software engineer in Palo Alto". 626 Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` 627 // The location filter specifies geo-regions containing the profiles to 628 // search against. 629 // 630 // One of [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] or [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] must be 631 // provided or an error is thrown. If both [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] and 632 // [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] are provided, an error is thrown. 633 // 634 // The following logic is used to determine which locations in 635 // the profile to filter against: 636 // 637 // 1. All of the profile's geocoded [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where 638 // [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and [Address.current][google.cloud.talent.v4beta1.Address.current] is true. 639 // 640 // 2. If the above set of locations is empty, all of the profile's geocoded 641 // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where [Address.usage][google.cloud.talent.v4beta1.Address.usage] is 642 // CONTACT_INFO_USAGE_UNSPECIFIED and [Address.current][google.cloud.talent.v4beta1.Address.current] is true. 643 // 644 // 3. If the above set of locations is empty, all of the profile's geocoded 645 // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or 646 // CONTACT_INFO_USAGE_UNSPECIFIED and [Address.current][google.cloud.talent.v4beta1.Address.current] is not set. 647 // 648 // This means that any profiles without any [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that match 649 // any of the above criteria will not be included in a search with location 650 // filter. Furthermore, any [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where [Address.usage][google.cloud.talent.v4beta1.Address.usage] is 651 // WORK or SCHOOL or where [Address.current][google.cloud.talent.v4beta1.Address.current] is false are not considered for 652 // location filter. 653 // 654 // If a location filter isn't specified, profiles fitting the other search 655 // criteria are retrieved regardless of where they're located. 656 // 657 // If [LocationFilter.negated][google.cloud.talent.v4beta1.LocationFilter.negated] is specified, the result doesn't contain 658 // profiles from that location. 659 // 660 // If [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] is provided, the 661 // [LocationType][google.cloud.talent.v4beta1.Location.LocationType], center 662 // point (latitude and longitude), and radius are automatically detected by 663 // the Google Maps Geocoding API and included as well. If 664 // [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] cannot be geocoded, the filter 665 // falls back to keyword search. 666 // 667 // If the detected 668 // [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is 669 // [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA], 670 // [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA], 671 // or 672 // [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY], 673 // the filter is performed against the detected location name (using exact 674 // text matching). Otherwise, the filter is performed against the detected 675 // center point and a radius of detected location radius + 676 // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]. 677 // 678 // If [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] is provided, 679 // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is the additional radius on top of the 680 // radius of the location geocoded from [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]. If 681 // [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] is provided, 682 // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is the only radius that is used. 683 // 684 // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is 10 by default. Note that the value 685 // of [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is 0 if it is unset, so the server 686 // does not differentiate [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] that is 687 // explicitly set to 0 and [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] that is not 688 // set. Which means that if [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is explicitly 689 // set to 0, the server will use the default value of 690 // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] which is 10. To work around this and 691 // effectively set [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] to 0, we recommend 692 // setting [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] to a very small decimal number 693 // (such as 0.00001). 694 // 695 // If [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is negative, an error is thrown. 696 LocationFilters []*LocationFilter `protobuf:"bytes,2,rep,name=location_filters,json=locationFilters,proto3" json:"location_filters,omitempty"` 697 // Job title filter specifies job titles of profiles to match on. 698 // 699 // If a job title isn't specified, profiles with any titles are retrieved. 700 // 701 // If multiple values are specified, profiles are retrieved with any of the 702 // specified job titles. 703 // 704 // If [JobTitleFilter.negated][google.cloud.talent.v4beta1.JobTitleFilter.negated] is specified, the result won't contain 705 // profiles with the job titles. 706 // 707 // For example, search for profiles with a job title "Product Manager". 708 JobTitleFilters []*JobTitleFilter `protobuf:"bytes,3,rep,name=job_title_filters,json=jobTitleFilters,proto3" json:"job_title_filters,omitempty"` 709 // Employer filter specifies employers of profiles to match on. 710 // 711 // If an employer filter isn't specified, profiles with any employers are 712 // retrieved. 713 // 714 // If multiple employer filters are specified, profiles with any matching 715 // employers are retrieved. 716 // 717 // If [EmployerFilter.negated][google.cloud.talent.v4beta1.EmployerFilter.negated] is specified, the result won't contain 718 // profiles that match the employers. 719 // 720 // For example, search for profiles that have working experience at "Google 721 // LLC". 722 EmployerFilters []*EmployerFilter `protobuf:"bytes,4,rep,name=employer_filters,json=employerFilters,proto3" json:"employer_filters,omitempty"` 723 // Education filter specifies education of profiles to match on. 724 // 725 // If an education filter isn't specified, profiles with any education are 726 // retrieved. 727 // 728 // If multiple education filters are specified, profiles that match any 729 // education filters are retrieved. 730 // 731 // If [EducationFilter.negated][google.cloud.talent.v4beta1.EducationFilter.negated] is specified, the result won't contain 732 // profiles that match the educations. 733 // 734 // For example, search for profiles with a master degree. 735 EducationFilters []*EducationFilter `protobuf:"bytes,5,rep,name=education_filters,json=educationFilters,proto3" json:"education_filters,omitempty"` 736 // Skill filter specifies skill of profiles to match on. 737 // 738 // If a skill filter isn't specified, profiles with any skills are retrieved. 739 // 740 // If multiple skill filters are specified, profiles that match any skill 741 // filters are retrieved. 742 // 743 // If [SkillFilter.negated][google.cloud.talent.v4beta1.SkillFilter.negated] is specified, the result won't contain profiles 744 // that match the skills. 745 // 746 // For example, search for profiles that have "Java" and "Python" in skill 747 // list. 748 SkillFilters []*SkillFilter `protobuf:"bytes,6,rep,name=skill_filters,json=skillFilters,proto3" json:"skill_filters,omitempty"` 749 // Work experience filter specifies the total working experience of profiles 750 // to match on. 751 // 752 // If a work experience filter isn't specified, profiles with any 753 // professional experience are retrieved. 754 // 755 // If multiple work experience filters are specified, profiles that match any 756 // work experience filters are retrieved. 757 // 758 // For example, search for profiles with 10 years of work experience. 759 WorkExperienceFilter []*WorkExperienceFilter `protobuf:"bytes,7,rep,name=work_experience_filter,json=workExperienceFilter,proto3" json:"work_experience_filter,omitempty"` 760 // Time filter specifies the create/update timestamp of the profiles to match 761 // on. 762 // 763 // For example, search for profiles created since "2018-1-1". 764 TimeFilters []*TimeFilter `protobuf:"bytes,8,rep,name=time_filters,json=timeFilters,proto3" json:"time_filters,omitempty"` 765 // The hirable filter specifies the profile's hirable status to match on. 766 HirableFilter *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=hirable_filter,json=hirableFilter,proto3" json:"hirable_filter,omitempty"` 767 // The application date filters specify application date ranges to match on. 768 ApplicationDateFilters []*ApplicationDateFilter `protobuf:"bytes,10,rep,name=application_date_filters,json=applicationDateFilters,proto3" json:"application_date_filters,omitempty"` 769 // The application outcome notes filters specify the notes for the outcome of 770 // the job application. 771 ApplicationOutcomeNotesFilters []*ApplicationOutcomeNotesFilter `protobuf:"bytes,11,rep,name=application_outcome_notes_filters,json=applicationOutcomeNotesFilters,proto3" json:"application_outcome_notes_filters,omitempty"` 772 // The application job filters specify the job applied for in the application. 773 ApplicationJobFilters []*ApplicationJobFilter `protobuf:"bytes,13,rep,name=application_job_filters,json=applicationJobFilters,proto3" json:"application_job_filters,omitempty"` 774 // This filter specifies a structured syntax to match against the 775 // [Profile.custom_attributes][google.cloud.talent.v4beta1.Profile.custom_attributes] that are marked as `filterable`. 776 // 777 // The syntax for this expression is a subset of Google SQL syntax. 778 // 779 // String custom attributes: supported operators are =, != where the left of 780 // the operator is a custom field key and the right of the operator is a 781 // string (surrounded by quotes) value. 782 // 783 // Numeric custom attributes: Supported operators are '>', '<' or '=' 784 // operators where the left of the operator is a custom field key and the 785 // right of the operator is a numeric value. 786 // 787 // Supported functions are LOWER(<field_name>) to 788 // perform case insensitive match and EMPTY(<field_name>) to filter on the 789 // existence of a key. 790 // 791 // Boolean expressions (AND/OR/NOT) are supported up to 3 levels of 792 // nesting (for example "((A AND B AND C) OR NOT D) AND E"), and there can be 793 // a maximum of 50 comparisons/functions in the expression. The expression 794 // must be < 2000 characters in length. 795 // 796 // Sample Query: 797 // (key1 = "TEST" OR LOWER(key1)="test" OR NOT EMPTY(key1)) 798 CustomAttributeFilter string `protobuf:"bytes,15,opt,name=custom_attribute_filter,json=customAttributeFilter,proto3" json:"custom_attribute_filter,omitempty"` 799 // Deprecated. Use availability_filters instead. 800 // 801 // The candidate availability filter which filters based on availability 802 // signals. 803 // 804 // Signal 1: Number of days since most recent job application. See 805 // [Availability.JobApplicationAvailabilitySignal][google.cloud.talent.v4beta1.Availability.JobApplicationAvailabilitySignal] for the details of this 806 // signal. 807 // 808 // Signal 2: Number of days since last profile update. See 809 // [Availability.ProfileUpdateAvailabilitySignal][google.cloud.talent.v4beta1.Availability.ProfileUpdateAvailabilitySignal] 810 // for the details of this signal. 811 // 812 // The candidate availability filter helps a recruiter understand if a 813 // specific candidate is likely to be actively seeking new job opportunities 814 // based on an aggregated set of signals. Specifically, the intent is NOT to 815 // indicate the candidate's potential qualification / interest / close ability 816 // for a specific job. 817 // 818 // Deprecated: Do not use. 819 CandidateAvailabilityFilter *CandidateAvailabilityFilter `protobuf:"bytes,16,opt,name=candidate_availability_filter,json=candidateAvailabilityFilter,proto3" json:"candidate_availability_filter,omitempty"` 820 // The availability filter which filters based on 821 // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals]. 822 // 823 // The availability filter helps a recruiter understand if a 824 // specific candidate is likely to be actively seeking new job opportunities 825 // based on an aggregated set of signals. Specifically, the intent is NOT to 826 // indicate the candidate's potential qualification / interest / close ability 827 // for a specific job. 828 // 829 // There can be at most one [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] per 830 // [signal_type][google.cloud.talent.v4beta1.AvailabilityFilter.signal_type]. If there are multiple 831 // [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] for a [signal_type][google.cloud.talent.v4beta1.AvailabilityFilter.signal_type], 832 // an error is thrown. 833 AvailabilityFilters []*AvailabilityFilter `protobuf:"bytes,18,rep,name=availability_filters,json=availabilityFilters,proto3" json:"availability_filters,omitempty"` 834 // Person name filter specifies person name of profiles to match on. 835 // 836 // If multiple person name filters are specified, profiles that match any 837 // person name filters are retrieved. 838 // 839 // For example, search for profiles of candidates with name "John Smith". 840 PersonNameFilters []*PersonNameFilter `protobuf:"bytes,17,rep,name=person_name_filters,json=personNameFilters,proto3" json:"person_name_filters,omitempty"` 841} 842 843func (x *ProfileQuery) Reset() { 844 *x = ProfileQuery{} 845 if protoimpl.UnsafeEnabled { 846 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[1] 847 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 848 ms.StoreMessageInfo(mi) 849 } 850} 851 852func (x *ProfileQuery) String() string { 853 return protoimpl.X.MessageStringOf(x) 854} 855 856func (*ProfileQuery) ProtoMessage() {} 857 858func (x *ProfileQuery) ProtoReflect() protoreflect.Message { 859 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[1] 860 if protoimpl.UnsafeEnabled && x != nil { 861 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 862 if ms.LoadMessageInfo() == nil { 863 ms.StoreMessageInfo(mi) 864 } 865 return ms 866 } 867 return mi.MessageOf(x) 868} 869 870// Deprecated: Use ProfileQuery.ProtoReflect.Descriptor instead. 871func (*ProfileQuery) Descriptor() ([]byte, []int) { 872 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{1} 873} 874 875func (x *ProfileQuery) GetQuery() string { 876 if x != nil { 877 return x.Query 878 } 879 return "" 880} 881 882func (x *ProfileQuery) GetLocationFilters() []*LocationFilter { 883 if x != nil { 884 return x.LocationFilters 885 } 886 return nil 887} 888 889func (x *ProfileQuery) GetJobTitleFilters() []*JobTitleFilter { 890 if x != nil { 891 return x.JobTitleFilters 892 } 893 return nil 894} 895 896func (x *ProfileQuery) GetEmployerFilters() []*EmployerFilter { 897 if x != nil { 898 return x.EmployerFilters 899 } 900 return nil 901} 902 903func (x *ProfileQuery) GetEducationFilters() []*EducationFilter { 904 if x != nil { 905 return x.EducationFilters 906 } 907 return nil 908} 909 910func (x *ProfileQuery) GetSkillFilters() []*SkillFilter { 911 if x != nil { 912 return x.SkillFilters 913 } 914 return nil 915} 916 917func (x *ProfileQuery) GetWorkExperienceFilter() []*WorkExperienceFilter { 918 if x != nil { 919 return x.WorkExperienceFilter 920 } 921 return nil 922} 923 924func (x *ProfileQuery) GetTimeFilters() []*TimeFilter { 925 if x != nil { 926 return x.TimeFilters 927 } 928 return nil 929} 930 931func (x *ProfileQuery) GetHirableFilter() *wrapperspb.BoolValue { 932 if x != nil { 933 return x.HirableFilter 934 } 935 return nil 936} 937 938func (x *ProfileQuery) GetApplicationDateFilters() []*ApplicationDateFilter { 939 if x != nil { 940 return x.ApplicationDateFilters 941 } 942 return nil 943} 944 945func (x *ProfileQuery) GetApplicationOutcomeNotesFilters() []*ApplicationOutcomeNotesFilter { 946 if x != nil { 947 return x.ApplicationOutcomeNotesFilters 948 } 949 return nil 950} 951 952func (x *ProfileQuery) GetApplicationJobFilters() []*ApplicationJobFilter { 953 if x != nil { 954 return x.ApplicationJobFilters 955 } 956 return nil 957} 958 959func (x *ProfileQuery) GetCustomAttributeFilter() string { 960 if x != nil { 961 return x.CustomAttributeFilter 962 } 963 return "" 964} 965 966// Deprecated: Do not use. 967func (x *ProfileQuery) GetCandidateAvailabilityFilter() *CandidateAvailabilityFilter { 968 if x != nil { 969 return x.CandidateAvailabilityFilter 970 } 971 return nil 972} 973 974func (x *ProfileQuery) GetAvailabilityFilters() []*AvailabilityFilter { 975 if x != nil { 976 return x.AvailabilityFilters 977 } 978 return nil 979} 980 981func (x *ProfileQuery) GetPersonNameFilters() []*PersonNameFilter { 982 if x != nil { 983 return x.PersonNameFilters 984 } 985 return nil 986} 987 988// Geographic region of the search. 989type LocationFilter struct { 990 state protoimpl.MessageState 991 sizeCache protoimpl.SizeCache 992 unknownFields protoimpl.UnknownFields 993 994 // The address name, such as "Mountain View" or "Bay Area". 995 Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` 996 // CLDR region code of the country/region of the address. This is used 997 // to address ambiguity of the user-input location, for example, "Liverpool" 998 // against "Liverpool, NY, US" or "Liverpool, UK". 999 // 1000 // Set this field to bias location resolution toward a specific country 1001 // or territory. If this field is not set, application behavior is biased 1002 // toward the United States by default. 1003 // 1004 // See 1005 // https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html 1006 // for details. Example: "CH" for Switzerland. 1007 // Note that this filter is not applicable for Profile Search related queries. 1008 RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` 1009 // The latitude and longitude of the geographic center to search from. This 1010 // field is ignored if `address` is provided. 1011 LatLng *latlng.LatLng `protobuf:"bytes,3,opt,name=lat_lng,json=latLng,proto3" json:"lat_lng,omitempty"` 1012 // The distance_in_miles is applied when the location being searched for is 1013 // identified as a city or smaller. This field is ignored if the location 1014 // being searched for is a state or larger. 1015 DistanceInMiles float64 `protobuf:"fixed64,4,opt,name=distance_in_miles,json=distanceInMiles,proto3" json:"distance_in_miles,omitempty"` 1016 // Allows the client to return jobs without a 1017 // set location, specifically, telecommuting jobs (telecommuting is considered 1018 // by the service as a special location. 1019 // [Job.posting_region][google.cloud.talent.v4beta1.Job.posting_region] indicates if a job permits telecommuting. 1020 // If this field is set to [TelecommutePreference.TELECOMMUTE_ALLOWED][google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference.TELECOMMUTE_ALLOWED], 1021 // telecommuting jobs are searched, and [address][google.cloud.talent.v4beta1.LocationFilter.address] and [lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] are 1022 // ignored. If not set or set to 1023 // [TelecommutePreference.TELECOMMUTE_EXCLUDED][google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference.TELECOMMUTE_EXCLUDED], telecommute job are not 1024 // searched. 1025 // 1026 // This filter can be used by itself to search exclusively for telecommuting 1027 // jobs, or it can be combined with another location 1028 // filter to search for a combination of job locations, 1029 // such as "Mountain View" or "telecommuting" jobs. However, when used in 1030 // combination with other location filters, telecommuting jobs can be 1031 // treated as less relevant than other jobs in the search response. 1032 // 1033 // This field is only used for job search requests. 1034 TelecommutePreference LocationFilter_TelecommutePreference `protobuf:"varint,5,opt,name=telecommute_preference,json=telecommutePreference,proto3,enum=google.cloud.talent.v4beta1.LocationFilter_TelecommutePreference" json:"telecommute_preference,omitempty"` 1035 // Whether to apply negation to the filter so profiles matching the filter 1036 // are excluded. 1037 // 1038 // Currently only supported in profile search. 1039 Negated bool `protobuf:"varint,6,opt,name=negated,proto3" json:"negated,omitempty"` 1040} 1041 1042func (x *LocationFilter) Reset() { 1043 *x = LocationFilter{} 1044 if protoimpl.UnsafeEnabled { 1045 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[2] 1046 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1047 ms.StoreMessageInfo(mi) 1048 } 1049} 1050 1051func (x *LocationFilter) String() string { 1052 return protoimpl.X.MessageStringOf(x) 1053} 1054 1055func (*LocationFilter) ProtoMessage() {} 1056 1057func (x *LocationFilter) ProtoReflect() protoreflect.Message { 1058 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[2] 1059 if protoimpl.UnsafeEnabled && x != nil { 1060 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1061 if ms.LoadMessageInfo() == nil { 1062 ms.StoreMessageInfo(mi) 1063 } 1064 return ms 1065 } 1066 return mi.MessageOf(x) 1067} 1068 1069// Deprecated: Use LocationFilter.ProtoReflect.Descriptor instead. 1070func (*LocationFilter) Descriptor() ([]byte, []int) { 1071 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{2} 1072} 1073 1074func (x *LocationFilter) GetAddress() string { 1075 if x != nil { 1076 return x.Address 1077 } 1078 return "" 1079} 1080 1081func (x *LocationFilter) GetRegionCode() string { 1082 if x != nil { 1083 return x.RegionCode 1084 } 1085 return "" 1086} 1087 1088func (x *LocationFilter) GetLatLng() *latlng.LatLng { 1089 if x != nil { 1090 return x.LatLng 1091 } 1092 return nil 1093} 1094 1095func (x *LocationFilter) GetDistanceInMiles() float64 { 1096 if x != nil { 1097 return x.DistanceInMiles 1098 } 1099 return 0 1100} 1101 1102func (x *LocationFilter) GetTelecommutePreference() LocationFilter_TelecommutePreference { 1103 if x != nil { 1104 return x.TelecommutePreference 1105 } 1106 return LocationFilter_TELECOMMUTE_PREFERENCE_UNSPECIFIED 1107} 1108 1109func (x *LocationFilter) GetNegated() bool { 1110 if x != nil { 1111 return x.Negated 1112 } 1113 return false 1114} 1115 1116// Filter on job compensation type and amount. 1117type CompensationFilter struct { 1118 state protoimpl.MessageState 1119 sizeCache protoimpl.SizeCache 1120 unknownFields protoimpl.UnknownFields 1121 1122 // Required. Type of filter. 1123 Type CompensationFilter_FilterType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.talent.v4beta1.CompensationFilter_FilterType" json:"type,omitempty"` 1124 // Required. Specify desired `base compensation entry's` 1125 // [CompensationInfo.CompensationUnit][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit]. 1126 Units []CompensationInfo_CompensationUnit `protobuf:"varint,2,rep,packed,name=units,proto3,enum=google.cloud.talent.v4beta1.CompensationInfo_CompensationUnit" json:"units,omitempty"` 1127 // Compensation range. 1128 Range *CompensationInfo_CompensationRange `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` 1129 // If set to true, jobs with unspecified compensation range fields are 1130 // included. 1131 IncludeJobsWithUnspecifiedCompensationRange bool `protobuf:"varint,4,opt,name=include_jobs_with_unspecified_compensation_range,json=includeJobsWithUnspecifiedCompensationRange,proto3" json:"include_jobs_with_unspecified_compensation_range,omitempty"` 1132} 1133 1134func (x *CompensationFilter) Reset() { 1135 *x = CompensationFilter{} 1136 if protoimpl.UnsafeEnabled { 1137 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[3] 1138 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1139 ms.StoreMessageInfo(mi) 1140 } 1141} 1142 1143func (x *CompensationFilter) String() string { 1144 return protoimpl.X.MessageStringOf(x) 1145} 1146 1147func (*CompensationFilter) ProtoMessage() {} 1148 1149func (x *CompensationFilter) ProtoReflect() protoreflect.Message { 1150 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[3] 1151 if protoimpl.UnsafeEnabled && x != nil { 1152 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1153 if ms.LoadMessageInfo() == nil { 1154 ms.StoreMessageInfo(mi) 1155 } 1156 return ms 1157 } 1158 return mi.MessageOf(x) 1159} 1160 1161// Deprecated: Use CompensationFilter.ProtoReflect.Descriptor instead. 1162func (*CompensationFilter) Descriptor() ([]byte, []int) { 1163 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{3} 1164} 1165 1166func (x *CompensationFilter) GetType() CompensationFilter_FilterType { 1167 if x != nil { 1168 return x.Type 1169 } 1170 return CompensationFilter_FILTER_TYPE_UNSPECIFIED 1171} 1172 1173func (x *CompensationFilter) GetUnits() []CompensationInfo_CompensationUnit { 1174 if x != nil { 1175 return x.Units 1176 } 1177 return nil 1178} 1179 1180func (x *CompensationFilter) GetRange() *CompensationInfo_CompensationRange { 1181 if x != nil { 1182 return x.Range 1183 } 1184 return nil 1185} 1186 1187func (x *CompensationFilter) GetIncludeJobsWithUnspecifiedCompensationRange() bool { 1188 if x != nil { 1189 return x.IncludeJobsWithUnspecifiedCompensationRange 1190 } 1191 return false 1192} 1193 1194// Parameters needed for commute search. 1195type CommuteFilter struct { 1196 state protoimpl.MessageState 1197 sizeCache protoimpl.SizeCache 1198 unknownFields protoimpl.UnknownFields 1199 1200 // Required. The method of transportation to calculate the commute time for. 1201 CommuteMethod CommuteMethod `protobuf:"varint,1,opt,name=commute_method,json=commuteMethod,proto3,enum=google.cloud.talent.v4beta1.CommuteMethod" json:"commute_method,omitempty"` 1202 // Required. The latitude and longitude of the location to calculate the 1203 // commute time from. 1204 StartCoordinates *latlng.LatLng `protobuf:"bytes,2,opt,name=start_coordinates,json=startCoordinates,proto3" json:"start_coordinates,omitempty"` 1205 // Required. The maximum travel time in seconds. The maximum allowed value is `3600s` 1206 // (one hour). Format is `123s`. 1207 TravelDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=travel_duration,json=travelDuration,proto3" json:"travel_duration,omitempty"` 1208 // If `true`, jobs without street level addresses may also be returned. 1209 // For city level addresses, the city center is used. For state and coarser 1210 // level addresses, text matching is used. 1211 // If this field is set to `false` or isn't specified, only jobs that include 1212 // street level addresses will be returned by commute search. 1213 AllowImpreciseAddresses bool `protobuf:"varint,4,opt,name=allow_imprecise_addresses,json=allowImpreciseAddresses,proto3" json:"allow_imprecise_addresses,omitempty"` 1214 // Traffic factor to take into account while searching by commute. 1215 // 1216 // Types that are assignable to TrafficOption: 1217 // *CommuteFilter_RoadTraffic_ 1218 // *CommuteFilter_DepartureTime 1219 TrafficOption isCommuteFilter_TrafficOption `protobuf_oneof:"traffic_option"` 1220} 1221 1222func (x *CommuteFilter) Reset() { 1223 *x = CommuteFilter{} 1224 if protoimpl.UnsafeEnabled { 1225 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4] 1226 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1227 ms.StoreMessageInfo(mi) 1228 } 1229} 1230 1231func (x *CommuteFilter) String() string { 1232 return protoimpl.X.MessageStringOf(x) 1233} 1234 1235func (*CommuteFilter) ProtoMessage() {} 1236 1237func (x *CommuteFilter) ProtoReflect() protoreflect.Message { 1238 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4] 1239 if protoimpl.UnsafeEnabled && x != nil { 1240 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1241 if ms.LoadMessageInfo() == nil { 1242 ms.StoreMessageInfo(mi) 1243 } 1244 return ms 1245 } 1246 return mi.MessageOf(x) 1247} 1248 1249// Deprecated: Use CommuteFilter.ProtoReflect.Descriptor instead. 1250func (*CommuteFilter) Descriptor() ([]byte, []int) { 1251 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{4} 1252} 1253 1254func (x *CommuteFilter) GetCommuteMethod() CommuteMethod { 1255 if x != nil { 1256 return x.CommuteMethod 1257 } 1258 return CommuteMethod_COMMUTE_METHOD_UNSPECIFIED 1259} 1260 1261func (x *CommuteFilter) GetStartCoordinates() *latlng.LatLng { 1262 if x != nil { 1263 return x.StartCoordinates 1264 } 1265 return nil 1266} 1267 1268func (x *CommuteFilter) GetTravelDuration() *durationpb.Duration { 1269 if x != nil { 1270 return x.TravelDuration 1271 } 1272 return nil 1273} 1274 1275func (x *CommuteFilter) GetAllowImpreciseAddresses() bool { 1276 if x != nil { 1277 return x.AllowImpreciseAddresses 1278 } 1279 return false 1280} 1281 1282func (m *CommuteFilter) GetTrafficOption() isCommuteFilter_TrafficOption { 1283 if m != nil { 1284 return m.TrafficOption 1285 } 1286 return nil 1287} 1288 1289func (x *CommuteFilter) GetRoadTraffic() CommuteFilter_RoadTraffic { 1290 if x, ok := x.GetTrafficOption().(*CommuteFilter_RoadTraffic_); ok { 1291 return x.RoadTraffic 1292 } 1293 return CommuteFilter_ROAD_TRAFFIC_UNSPECIFIED 1294} 1295 1296func (x *CommuteFilter) GetDepartureTime() *timeofday.TimeOfDay { 1297 if x, ok := x.GetTrafficOption().(*CommuteFilter_DepartureTime); ok { 1298 return x.DepartureTime 1299 } 1300 return nil 1301} 1302 1303type isCommuteFilter_TrafficOption interface { 1304 isCommuteFilter_TrafficOption() 1305} 1306 1307type CommuteFilter_RoadTraffic_ struct { 1308 // Specifies the traffic density to use when calculating commute time. 1309 RoadTraffic CommuteFilter_RoadTraffic `protobuf:"varint,5,opt,name=road_traffic,json=roadTraffic,proto3,enum=google.cloud.talent.v4beta1.CommuteFilter_RoadTraffic,oneof"` 1310} 1311 1312type CommuteFilter_DepartureTime struct { 1313 // The departure time used to calculate traffic impact, represented as 1314 // [google.type.TimeOfDay][google.type.TimeOfDay] in local time zone. 1315 // 1316 // Currently traffic model is restricted to hour level resolution. 1317 DepartureTime *timeofday.TimeOfDay `protobuf:"bytes,6,opt,name=departure_time,json=departureTime,proto3,oneof"` 1318} 1319 1320func (*CommuteFilter_RoadTraffic_) isCommuteFilter_TrafficOption() {} 1321 1322func (*CommuteFilter_DepartureTime) isCommuteFilter_TrafficOption() {} 1323 1324// Job title of the search. 1325type JobTitleFilter struct { 1326 state protoimpl.MessageState 1327 sizeCache protoimpl.SizeCache 1328 unknownFields protoimpl.UnknownFields 1329 1330 // Required. The job title. For example, "Software engineer", or "Product manager". 1331 JobTitle string `protobuf:"bytes,1,opt,name=job_title,json=jobTitle,proto3" json:"job_title,omitempty"` 1332 // Whether to apply negation to the filter so profiles matching the filter 1333 // are excluded. 1334 Negated bool `protobuf:"varint,2,opt,name=negated,proto3" json:"negated,omitempty"` 1335} 1336 1337func (x *JobTitleFilter) Reset() { 1338 *x = JobTitleFilter{} 1339 if protoimpl.UnsafeEnabled { 1340 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[5] 1341 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1342 ms.StoreMessageInfo(mi) 1343 } 1344} 1345 1346func (x *JobTitleFilter) String() string { 1347 return protoimpl.X.MessageStringOf(x) 1348} 1349 1350func (*JobTitleFilter) ProtoMessage() {} 1351 1352func (x *JobTitleFilter) ProtoReflect() protoreflect.Message { 1353 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[5] 1354 if protoimpl.UnsafeEnabled && x != nil { 1355 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1356 if ms.LoadMessageInfo() == nil { 1357 ms.StoreMessageInfo(mi) 1358 } 1359 return ms 1360 } 1361 return mi.MessageOf(x) 1362} 1363 1364// Deprecated: Use JobTitleFilter.ProtoReflect.Descriptor instead. 1365func (*JobTitleFilter) Descriptor() ([]byte, []int) { 1366 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{5} 1367} 1368 1369func (x *JobTitleFilter) GetJobTitle() string { 1370 if x != nil { 1371 return x.JobTitle 1372 } 1373 return "" 1374} 1375 1376func (x *JobTitleFilter) GetNegated() bool { 1377 if x != nil { 1378 return x.Negated 1379 } 1380 return false 1381} 1382 1383// Skill filter of the search. 1384type SkillFilter struct { 1385 state protoimpl.MessageState 1386 sizeCache protoimpl.SizeCache 1387 unknownFields protoimpl.UnknownFields 1388 1389 // Required. The skill name. For example, "java", "j2ee", and so on. 1390 Skill string `protobuf:"bytes,1,opt,name=skill,proto3" json:"skill,omitempty"` 1391 // Whether to apply negation to the filter so profiles matching the filter 1392 // are excluded. 1393 Negated bool `protobuf:"varint,2,opt,name=negated,proto3" json:"negated,omitempty"` 1394} 1395 1396func (x *SkillFilter) Reset() { 1397 *x = SkillFilter{} 1398 if protoimpl.UnsafeEnabled { 1399 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[6] 1400 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1401 ms.StoreMessageInfo(mi) 1402 } 1403} 1404 1405func (x *SkillFilter) String() string { 1406 return protoimpl.X.MessageStringOf(x) 1407} 1408 1409func (*SkillFilter) ProtoMessage() {} 1410 1411func (x *SkillFilter) ProtoReflect() protoreflect.Message { 1412 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[6] 1413 if protoimpl.UnsafeEnabled && x != nil { 1414 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1415 if ms.LoadMessageInfo() == nil { 1416 ms.StoreMessageInfo(mi) 1417 } 1418 return ms 1419 } 1420 return mi.MessageOf(x) 1421} 1422 1423// Deprecated: Use SkillFilter.ProtoReflect.Descriptor instead. 1424func (*SkillFilter) Descriptor() ([]byte, []int) { 1425 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{6} 1426} 1427 1428func (x *SkillFilter) GetSkill() string { 1429 if x != nil { 1430 return x.Skill 1431 } 1432 return "" 1433} 1434 1435func (x *SkillFilter) GetNegated() bool { 1436 if x != nil { 1437 return x.Negated 1438 } 1439 return false 1440} 1441 1442// Employer filter of the search. 1443type EmployerFilter struct { 1444 state protoimpl.MessageState 1445 sizeCache protoimpl.SizeCache 1446 unknownFields protoimpl.UnknownFields 1447 1448 // Required. The name of the employer, for example "Google", "Alphabet". 1449 Employer string `protobuf:"bytes,1,opt,name=employer,proto3" json:"employer,omitempty"` 1450 // Define set of [EmploymentRecord][google.cloud.talent.v4beta1.EmploymentRecord]s to search against. 1451 // 1452 // Defaults to [EmployerFilterMode.ALL_EMPLOYMENT_RECORDS][google.cloud.talent.v4beta1.EmployerFilter.EmployerFilterMode.ALL_EMPLOYMENT_RECORDS]. 1453 Mode EmployerFilter_EmployerFilterMode `protobuf:"varint,2,opt,name=mode,proto3,enum=google.cloud.talent.v4beta1.EmployerFilter_EmployerFilterMode" json:"mode,omitempty"` 1454 // Whether to apply negation to the filter so profiles matching the filter 1455 // is excluded. 1456 Negated bool `protobuf:"varint,3,opt,name=negated,proto3" json:"negated,omitempty"` 1457} 1458 1459func (x *EmployerFilter) Reset() { 1460 *x = EmployerFilter{} 1461 if protoimpl.UnsafeEnabled { 1462 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[7] 1463 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1464 ms.StoreMessageInfo(mi) 1465 } 1466} 1467 1468func (x *EmployerFilter) String() string { 1469 return protoimpl.X.MessageStringOf(x) 1470} 1471 1472func (*EmployerFilter) ProtoMessage() {} 1473 1474func (x *EmployerFilter) ProtoReflect() protoreflect.Message { 1475 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[7] 1476 if protoimpl.UnsafeEnabled && x != nil { 1477 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1478 if ms.LoadMessageInfo() == nil { 1479 ms.StoreMessageInfo(mi) 1480 } 1481 return ms 1482 } 1483 return mi.MessageOf(x) 1484} 1485 1486// Deprecated: Use EmployerFilter.ProtoReflect.Descriptor instead. 1487func (*EmployerFilter) Descriptor() ([]byte, []int) { 1488 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{7} 1489} 1490 1491func (x *EmployerFilter) GetEmployer() string { 1492 if x != nil { 1493 return x.Employer 1494 } 1495 return "" 1496} 1497 1498func (x *EmployerFilter) GetMode() EmployerFilter_EmployerFilterMode { 1499 if x != nil { 1500 return x.Mode 1501 } 1502 return EmployerFilter_EMPLOYER_FILTER_MODE_UNSPECIFIED 1503} 1504 1505func (x *EmployerFilter) GetNegated() bool { 1506 if x != nil { 1507 return x.Negated 1508 } 1509 return false 1510} 1511 1512// Education filter of the search. 1513type EducationFilter struct { 1514 state protoimpl.MessageState 1515 sizeCache protoimpl.SizeCache 1516 unknownFields protoimpl.UnknownFields 1517 1518 // The school name. For example "MIT", "University of California, Berkeley". 1519 School string `protobuf:"bytes,1,opt,name=school,proto3" json:"school,omitempty"` 1520 // The field of study. This is to search against value provided in 1521 // [Degree.fields_of_study][google.cloud.talent.v4beta1.Degree.fields_of_study]. 1522 // For example "Computer Science", "Mathematics". 1523 FieldOfStudy string `protobuf:"bytes,2,opt,name=field_of_study,json=fieldOfStudy,proto3" json:"field_of_study,omitempty"` 1524 // Education degree in ISCED code. Each value in degree covers a specific 1525 // level of education, without any expansion to upper nor lower levels of 1526 // education degree. 1527 DegreeType DegreeType `protobuf:"varint,3,opt,name=degree_type,json=degreeType,proto3,enum=google.cloud.talent.v4beta1.DegreeType" json:"degree_type,omitempty"` 1528 // Whether to apply negation to the filter so profiles matching the filter 1529 // is excluded. 1530 Negated bool `protobuf:"varint,6,opt,name=negated,proto3" json:"negated,omitempty"` 1531} 1532 1533func (x *EducationFilter) Reset() { 1534 *x = EducationFilter{} 1535 if protoimpl.UnsafeEnabled { 1536 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[8] 1537 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1538 ms.StoreMessageInfo(mi) 1539 } 1540} 1541 1542func (x *EducationFilter) String() string { 1543 return protoimpl.X.MessageStringOf(x) 1544} 1545 1546func (*EducationFilter) ProtoMessage() {} 1547 1548func (x *EducationFilter) ProtoReflect() protoreflect.Message { 1549 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[8] 1550 if protoimpl.UnsafeEnabled && x != nil { 1551 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1552 if ms.LoadMessageInfo() == nil { 1553 ms.StoreMessageInfo(mi) 1554 } 1555 return ms 1556 } 1557 return mi.MessageOf(x) 1558} 1559 1560// Deprecated: Use EducationFilter.ProtoReflect.Descriptor instead. 1561func (*EducationFilter) Descriptor() ([]byte, []int) { 1562 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{8} 1563} 1564 1565func (x *EducationFilter) GetSchool() string { 1566 if x != nil { 1567 return x.School 1568 } 1569 return "" 1570} 1571 1572func (x *EducationFilter) GetFieldOfStudy() string { 1573 if x != nil { 1574 return x.FieldOfStudy 1575 } 1576 return "" 1577} 1578 1579func (x *EducationFilter) GetDegreeType() DegreeType { 1580 if x != nil { 1581 return x.DegreeType 1582 } 1583 return DegreeType_DEGREE_TYPE_UNSPECIFIED 1584} 1585 1586func (x *EducationFilter) GetNegated() bool { 1587 if x != nil { 1588 return x.Negated 1589 } 1590 return false 1591} 1592 1593// Work experience filter. 1594// 1595// This filter is used to search for profiles with working experience length 1596// between [min_experience][google.cloud.talent.v4beta1.WorkExperienceFilter.min_experience] and [max_experience][google.cloud.talent.v4beta1.WorkExperienceFilter.max_experience]. 1597type WorkExperienceFilter struct { 1598 state protoimpl.MessageState 1599 sizeCache protoimpl.SizeCache 1600 unknownFields protoimpl.UnknownFields 1601 1602 // The minimum duration of the work experience (inclusive). 1603 MinExperience *durationpb.Duration `protobuf:"bytes,1,opt,name=min_experience,json=minExperience,proto3" json:"min_experience,omitempty"` 1604 // The maximum duration of the work experience (exclusive). 1605 MaxExperience *durationpb.Duration `protobuf:"bytes,2,opt,name=max_experience,json=maxExperience,proto3" json:"max_experience,omitempty"` 1606} 1607 1608func (x *WorkExperienceFilter) Reset() { 1609 *x = WorkExperienceFilter{} 1610 if protoimpl.UnsafeEnabled { 1611 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[9] 1612 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1613 ms.StoreMessageInfo(mi) 1614 } 1615} 1616 1617func (x *WorkExperienceFilter) String() string { 1618 return protoimpl.X.MessageStringOf(x) 1619} 1620 1621func (*WorkExperienceFilter) ProtoMessage() {} 1622 1623func (x *WorkExperienceFilter) ProtoReflect() protoreflect.Message { 1624 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[9] 1625 if protoimpl.UnsafeEnabled && x != nil { 1626 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1627 if ms.LoadMessageInfo() == nil { 1628 ms.StoreMessageInfo(mi) 1629 } 1630 return ms 1631 } 1632 return mi.MessageOf(x) 1633} 1634 1635// Deprecated: Use WorkExperienceFilter.ProtoReflect.Descriptor instead. 1636func (*WorkExperienceFilter) Descriptor() ([]byte, []int) { 1637 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{9} 1638} 1639 1640func (x *WorkExperienceFilter) GetMinExperience() *durationpb.Duration { 1641 if x != nil { 1642 return x.MinExperience 1643 } 1644 return nil 1645} 1646 1647func (x *WorkExperienceFilter) GetMaxExperience() *durationpb.Duration { 1648 if x != nil { 1649 return x.MaxExperience 1650 } 1651 return nil 1652} 1653 1654// Application Date Range Filter. 1655// 1656// The API matches profiles with [Application.application_date][google.cloud.talent.v4beta1.Application.application_date] between 1657// start date and end date (both boundaries are inclusive). The filter is 1658// ignored if both [start_date][google.cloud.talent.v4beta1.ApplicationDateFilter.start_date] and [end_date][google.cloud.talent.v4beta1.ApplicationDateFilter.end_date] are missing. 1659type ApplicationDateFilter struct { 1660 state protoimpl.MessageState 1661 sizeCache protoimpl.SizeCache 1662 unknownFields protoimpl.UnknownFields 1663 1664 // Start date. If it's missing, The API matches profiles with application date 1665 // not after the end date. 1666 StartDate *date.Date `protobuf:"bytes,1,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` 1667 // End date. If it's missing, The API matches profiles with application date 1668 // not before the start date. 1669 EndDate *date.Date `protobuf:"bytes,2,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` 1670} 1671 1672func (x *ApplicationDateFilter) Reset() { 1673 *x = ApplicationDateFilter{} 1674 if protoimpl.UnsafeEnabled { 1675 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[10] 1676 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1677 ms.StoreMessageInfo(mi) 1678 } 1679} 1680 1681func (x *ApplicationDateFilter) String() string { 1682 return protoimpl.X.MessageStringOf(x) 1683} 1684 1685func (*ApplicationDateFilter) ProtoMessage() {} 1686 1687func (x *ApplicationDateFilter) ProtoReflect() protoreflect.Message { 1688 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[10] 1689 if protoimpl.UnsafeEnabled && x != nil { 1690 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1691 if ms.LoadMessageInfo() == nil { 1692 ms.StoreMessageInfo(mi) 1693 } 1694 return ms 1695 } 1696 return mi.MessageOf(x) 1697} 1698 1699// Deprecated: Use ApplicationDateFilter.ProtoReflect.Descriptor instead. 1700func (*ApplicationDateFilter) Descriptor() ([]byte, []int) { 1701 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{10} 1702} 1703 1704func (x *ApplicationDateFilter) GetStartDate() *date.Date { 1705 if x != nil { 1706 return x.StartDate 1707 } 1708 return nil 1709} 1710 1711func (x *ApplicationDateFilter) GetEndDate() *date.Date { 1712 if x != nil { 1713 return x.EndDate 1714 } 1715 return nil 1716} 1717 1718// Outcome Notes Filter. 1719type ApplicationOutcomeNotesFilter struct { 1720 state protoimpl.MessageState 1721 sizeCache protoimpl.SizeCache 1722 unknownFields protoimpl.UnknownFields 1723 1724 // Required. User entered or selected outcome reason. The API does an exact match on the 1725 // [Application.outcome_notes][google.cloud.talent.v4beta1.Application.outcome_notes] in profiles. 1726 OutcomeNotes string `protobuf:"bytes,1,opt,name=outcome_notes,json=outcomeNotes,proto3" json:"outcome_notes,omitempty"` 1727 // If true, The API excludes all candidates with any 1728 // [Application.outcome_notes][google.cloud.talent.v4beta1.Application.outcome_notes] matching the outcome reason specified in 1729 // the filter. 1730 Negated bool `protobuf:"varint,2,opt,name=negated,proto3" json:"negated,omitempty"` 1731} 1732 1733func (x *ApplicationOutcomeNotesFilter) Reset() { 1734 *x = ApplicationOutcomeNotesFilter{} 1735 if protoimpl.UnsafeEnabled { 1736 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[11] 1737 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1738 ms.StoreMessageInfo(mi) 1739 } 1740} 1741 1742func (x *ApplicationOutcomeNotesFilter) String() string { 1743 return protoimpl.X.MessageStringOf(x) 1744} 1745 1746func (*ApplicationOutcomeNotesFilter) ProtoMessage() {} 1747 1748func (x *ApplicationOutcomeNotesFilter) ProtoReflect() protoreflect.Message { 1749 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[11] 1750 if protoimpl.UnsafeEnabled && x != nil { 1751 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1752 if ms.LoadMessageInfo() == nil { 1753 ms.StoreMessageInfo(mi) 1754 } 1755 return ms 1756 } 1757 return mi.MessageOf(x) 1758} 1759 1760// Deprecated: Use ApplicationOutcomeNotesFilter.ProtoReflect.Descriptor instead. 1761func (*ApplicationOutcomeNotesFilter) Descriptor() ([]byte, []int) { 1762 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{11} 1763} 1764 1765func (x *ApplicationOutcomeNotesFilter) GetOutcomeNotes() string { 1766 if x != nil { 1767 return x.OutcomeNotes 1768 } 1769 return "" 1770} 1771 1772func (x *ApplicationOutcomeNotesFilter) GetNegated() bool { 1773 if x != nil { 1774 return x.Negated 1775 } 1776 return false 1777} 1778 1779// Filter on the job information of Application. 1780type ApplicationJobFilter struct { 1781 state protoimpl.MessageState 1782 sizeCache protoimpl.SizeCache 1783 unknownFields protoimpl.UnknownFields 1784 1785 // The job requisition id in the application. The API does an exact match on 1786 // the [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id] of [Application.job][google.cloud.talent.v4beta1.Application.job] in profiles. 1787 JobRequisitionId string `protobuf:"bytes,2,opt,name=job_requisition_id,json=jobRequisitionId,proto3" json:"job_requisition_id,omitempty"` 1788 // The job title in the application. The API does an exact match on the 1789 // [Job.title][google.cloud.talent.v4beta1.Job.title] of [Application.job][google.cloud.talent.v4beta1.Application.job] in profiles. 1790 JobTitle string `protobuf:"bytes,3,opt,name=job_title,json=jobTitle,proto3" json:"job_title,omitempty"` 1791 // If true, the API excludes all profiles with any [Application.job][google.cloud.talent.v4beta1.Application.job] 1792 // matching the filters. 1793 Negated bool `protobuf:"varint,4,opt,name=negated,proto3" json:"negated,omitempty"` 1794} 1795 1796func (x *ApplicationJobFilter) Reset() { 1797 *x = ApplicationJobFilter{} 1798 if protoimpl.UnsafeEnabled { 1799 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[12] 1800 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1801 ms.StoreMessageInfo(mi) 1802 } 1803} 1804 1805func (x *ApplicationJobFilter) String() string { 1806 return protoimpl.X.MessageStringOf(x) 1807} 1808 1809func (*ApplicationJobFilter) ProtoMessage() {} 1810 1811func (x *ApplicationJobFilter) ProtoReflect() protoreflect.Message { 1812 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[12] 1813 if protoimpl.UnsafeEnabled && x != nil { 1814 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1815 if ms.LoadMessageInfo() == nil { 1816 ms.StoreMessageInfo(mi) 1817 } 1818 return ms 1819 } 1820 return mi.MessageOf(x) 1821} 1822 1823// Deprecated: Use ApplicationJobFilter.ProtoReflect.Descriptor instead. 1824func (*ApplicationJobFilter) Descriptor() ([]byte, []int) { 1825 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{12} 1826} 1827 1828func (x *ApplicationJobFilter) GetJobRequisitionId() string { 1829 if x != nil { 1830 return x.JobRequisitionId 1831 } 1832 return "" 1833} 1834 1835func (x *ApplicationJobFilter) GetJobTitle() string { 1836 if x != nil { 1837 return x.JobTitle 1838 } 1839 return "" 1840} 1841 1842func (x *ApplicationJobFilter) GetNegated() bool { 1843 if x != nil { 1844 return x.Negated 1845 } 1846 return false 1847} 1848 1849// Filter on create timestamp or update timestamp of profiles. 1850type TimeFilter struct { 1851 state protoimpl.MessageState 1852 sizeCache protoimpl.SizeCache 1853 unknownFields protoimpl.UnknownFields 1854 1855 // Start timestamp, matching profiles with the start time. If this field 1856 // missing, The API matches profiles with create / update timestamp before the 1857 // end timestamp. 1858 StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 1859 // End timestamp, matching profiles with the end time. If this field 1860 // missing, The API matches profiles with create / update timestamp after the 1861 // start timestamp. 1862 EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 1863 // Specifies which time field to filter profiles. 1864 // 1865 // Defaults to [TimeField.CREATE_TIME][google.cloud.talent.v4beta1.TimeFilter.TimeField.CREATE_TIME]. 1866 TimeField TimeFilter_TimeField `protobuf:"varint,3,opt,name=time_field,json=timeField,proto3,enum=google.cloud.talent.v4beta1.TimeFilter_TimeField" json:"time_field,omitempty"` 1867} 1868 1869func (x *TimeFilter) Reset() { 1870 *x = TimeFilter{} 1871 if protoimpl.UnsafeEnabled { 1872 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[13] 1873 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1874 ms.StoreMessageInfo(mi) 1875 } 1876} 1877 1878func (x *TimeFilter) String() string { 1879 return protoimpl.X.MessageStringOf(x) 1880} 1881 1882func (*TimeFilter) ProtoMessage() {} 1883 1884func (x *TimeFilter) ProtoReflect() protoreflect.Message { 1885 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[13] 1886 if protoimpl.UnsafeEnabled && x != nil { 1887 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1888 if ms.LoadMessageInfo() == nil { 1889 ms.StoreMessageInfo(mi) 1890 } 1891 return ms 1892 } 1893 return mi.MessageOf(x) 1894} 1895 1896// Deprecated: Use TimeFilter.ProtoReflect.Descriptor instead. 1897func (*TimeFilter) Descriptor() ([]byte, []int) { 1898 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{13} 1899} 1900 1901func (x *TimeFilter) GetStartTime() *timestamppb.Timestamp { 1902 if x != nil { 1903 return x.StartTime 1904 } 1905 return nil 1906} 1907 1908func (x *TimeFilter) GetEndTime() *timestamppb.Timestamp { 1909 if x != nil { 1910 return x.EndTime 1911 } 1912 return nil 1913} 1914 1915func (x *TimeFilter) GetTimeField() TimeFilter_TimeField { 1916 if x != nil { 1917 return x.TimeField 1918 } 1919 return TimeFilter_TIME_FIELD_UNSPECIFIED 1920} 1921 1922// Deprecated. Use AvailabilityFilter instead. 1923// 1924// Filter on availability signals. 1925// 1926// Deprecated: Do not use. 1927type CandidateAvailabilityFilter struct { 1928 state protoimpl.MessageState 1929 sizeCache protoimpl.SizeCache 1930 unknownFields protoimpl.UnknownFields 1931 1932 // It is false by default. If true, API excludes all the potential available 1933 // profiles. 1934 Negated bool `protobuf:"varint,1,opt,name=negated,proto3" json:"negated,omitempty"` 1935} 1936 1937func (x *CandidateAvailabilityFilter) Reset() { 1938 *x = CandidateAvailabilityFilter{} 1939 if protoimpl.UnsafeEnabled { 1940 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[14] 1941 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1942 ms.StoreMessageInfo(mi) 1943 } 1944} 1945 1946func (x *CandidateAvailabilityFilter) String() string { 1947 return protoimpl.X.MessageStringOf(x) 1948} 1949 1950func (*CandidateAvailabilityFilter) ProtoMessage() {} 1951 1952func (x *CandidateAvailabilityFilter) ProtoReflect() protoreflect.Message { 1953 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[14] 1954 if protoimpl.UnsafeEnabled && x != nil { 1955 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1956 if ms.LoadMessageInfo() == nil { 1957 ms.StoreMessageInfo(mi) 1958 } 1959 return ms 1960 } 1961 return mi.MessageOf(x) 1962} 1963 1964// Deprecated: Use CandidateAvailabilityFilter.ProtoReflect.Descriptor instead. 1965func (*CandidateAvailabilityFilter) Descriptor() ([]byte, []int) { 1966 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{14} 1967} 1968 1969func (x *CandidateAvailabilityFilter) GetNegated() bool { 1970 if x != nil { 1971 return x.Negated 1972 } 1973 return false 1974} 1975 1976// Filter on availability signals. 1977type AvailabilityFilter struct { 1978 state protoimpl.MessageState 1979 sizeCache protoimpl.SizeCache 1980 unknownFields protoimpl.UnknownFields 1981 1982 // Required. Type of signal to apply filter on. 1983 SignalType AvailabilitySignalType `protobuf:"varint,1,opt,name=signal_type,json=signalType,proto3,enum=google.cloud.talent.v4beta1.AvailabilitySignalType" json:"signal_type,omitempty"` 1984 // Required. Range of times to filter candidate signals by. 1985 Range *TimestampRange `protobuf:"bytes,2,opt,name=range,proto3" json:"range,omitempty"` 1986 // If multiple [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] are provided, the default 1987 // behavior is to OR all filters, but if this field is set to true, this 1988 // particular [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] will be AND'ed against other 1989 // [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter]. 1990 Required bool `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"` 1991} 1992 1993func (x *AvailabilityFilter) Reset() { 1994 *x = AvailabilityFilter{} 1995 if protoimpl.UnsafeEnabled { 1996 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[15] 1997 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1998 ms.StoreMessageInfo(mi) 1999 } 2000} 2001 2002func (x *AvailabilityFilter) String() string { 2003 return protoimpl.X.MessageStringOf(x) 2004} 2005 2006func (*AvailabilityFilter) ProtoMessage() {} 2007 2008func (x *AvailabilityFilter) ProtoReflect() protoreflect.Message { 2009 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[15] 2010 if protoimpl.UnsafeEnabled && x != nil { 2011 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2012 if ms.LoadMessageInfo() == nil { 2013 ms.StoreMessageInfo(mi) 2014 } 2015 return ms 2016 } 2017 return mi.MessageOf(x) 2018} 2019 2020// Deprecated: Use AvailabilityFilter.ProtoReflect.Descriptor instead. 2021func (*AvailabilityFilter) Descriptor() ([]byte, []int) { 2022 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{15} 2023} 2024 2025func (x *AvailabilityFilter) GetSignalType() AvailabilitySignalType { 2026 if x != nil { 2027 return x.SignalType 2028 } 2029 return AvailabilitySignalType_AVAILABILITY_SIGNAL_TYPE_UNSPECIFIED 2030} 2031 2032func (x *AvailabilityFilter) GetRange() *TimestampRange { 2033 if x != nil { 2034 return x.Range 2035 } 2036 return nil 2037} 2038 2039func (x *AvailabilityFilter) GetRequired() bool { 2040 if x != nil { 2041 return x.Required 2042 } 2043 return false 2044} 2045 2046// Filter on person name. 2047type PersonNameFilter struct { 2048 state protoimpl.MessageState 2049 sizeCache protoimpl.SizeCache 2050 unknownFields protoimpl.UnknownFields 2051 2052 // Required. The person name. For example, "John Smith". 2053 // 2054 // Can be any combination of [PersonName.structured_name.given_name][], 2055 // [PersonName.structured_name.middle_initial][], 2056 // [PersonName.structured_name.family_name][], and 2057 // [PersonName.formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name]. 2058 PersonName string `protobuf:"bytes,1,opt,name=person_name,json=personName,proto3" json:"person_name,omitempty"` 2059} 2060 2061func (x *PersonNameFilter) Reset() { 2062 *x = PersonNameFilter{} 2063 if protoimpl.UnsafeEnabled { 2064 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[16] 2065 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2066 ms.StoreMessageInfo(mi) 2067 } 2068} 2069 2070func (x *PersonNameFilter) String() string { 2071 return protoimpl.X.MessageStringOf(x) 2072} 2073 2074func (*PersonNameFilter) ProtoMessage() {} 2075 2076func (x *PersonNameFilter) ProtoReflect() protoreflect.Message { 2077 mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[16] 2078 if protoimpl.UnsafeEnabled && x != nil { 2079 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2080 if ms.LoadMessageInfo() == nil { 2081 ms.StoreMessageInfo(mi) 2082 } 2083 return ms 2084 } 2085 return mi.MessageOf(x) 2086} 2087 2088// Deprecated: Use PersonNameFilter.ProtoReflect.Descriptor instead. 2089func (*PersonNameFilter) Descriptor() ([]byte, []int) { 2090 return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{16} 2091} 2092 2093func (x *PersonNameFilter) GetPersonName() string { 2094 if x != nil { 2095 return x.PersonName 2096 } 2097 return "" 2098} 2099 2100var File_google_cloud_talent_v4beta1_filters_proto protoreflect.FileDescriptor 2101 2102var file_google_cloud_talent_v4beta1_filters_proto_rawDesc = []byte{ 2103 0x0a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 2104 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x66, 0x69, 2105 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x67, 0x6f, 0x6f, 2106 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 2107 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2108 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 2109 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2110 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2f, 0x76, 2111 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 2112 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 2113 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 2114 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 2115 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 2116 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 2117 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 2118 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 2119 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 2120 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 2121 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 2122 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6c, 0x61, 0x74, 0x6c, 2123 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2124 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x66, 0x64, 0x61, 0x79, 0x2e, 2125 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 2126 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 2127 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x06, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 2128 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 2129 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 2130 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 2131 0x01, 0x28, 0x09, 0x52, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 2132 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 2133 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 2134 0x6e, 0x69, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2135 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 2136 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 2137 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 2138 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 2139 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 2140 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 2141 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2142 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 2143 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0d, 2144 0x6a, 0x6f, 0x62, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 2145 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 2146 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2147 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 2148 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 2149 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 2150 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x64, 0x69, 0x73, 0x70, 2151 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 2152 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 2153 0x61, 0x6d, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 2154 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 2155 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2156 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 2157 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 2158 0x65, 0x72, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2159 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 2160 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 2161 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 2162 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2e, 2163 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x6c, 0x6c, 0x5f, 2164 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x73, 2165 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x56, 2166 0x0a, 0x10, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 2167 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2168 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 2169 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 2170 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 2171 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 2172 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 2173 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x59, 0x0a, 2174 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 2175 0x6e, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2176 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 2177 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 2178 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 2179 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 2180 0x75, 0x64, 0x65, 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 2181 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0xae, 0x0b, 2182 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 2183 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 2184 0x75, 0x65, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2185 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 2186 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 2187 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 2188 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 2189 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x11, 2190 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 2191 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2192 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 2193 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x46, 0x69, 2194 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x46, 0x69, 2195 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 2196 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 2197 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 2198 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6d, 2199 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x65, 0x6d, 2200 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 2201 0x11, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 2202 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2203 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 2204 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2205 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x10, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 2206 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x73, 0x6b, 0x69, 0x6c, 2207 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 2208 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 2209 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x6b, 2210 0x69, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 2211 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 2212 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 2213 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2214 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 2215 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 2216 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x14, 0x77, 0x6f, 0x72, 0x6b, 2217 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 2218 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 2219 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2220 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 2221 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 2222 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0e, 2223 0x68, 0x69, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x09, 2224 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2225 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 2226 0x52, 0x0d, 0x68, 0x69, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 2227 0x6c, 0x0a, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 2228 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 2229 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2230 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 2231 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x46, 2232 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 2233 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x85, 0x01, 2234 0x0a, 0x21, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 2235 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 2236 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2237 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 2238 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 2239 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 2240 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x1e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 2241 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x69, 2242 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 2243 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 2244 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2245 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 2246 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2247 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 2248 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 2249 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 2250 0x62, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 2251 0x09, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 2252 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x63, 0x61, 0x6e, 2253 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 2254 0x69, 0x74, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 2255 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2256 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 2257 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 2258 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1b, 2259 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 2260 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x14, 0x61, 2261 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 2262 0x65, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2263 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 2264 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 2265 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 2266 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 2267 0x5d, 0x0a, 0x13, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 2268 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 2269 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 2270 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 2271 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x11, 0x70, 0x65, 0x72, 2272 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xad, 2273 0x03, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 2274 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 2275 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 2276 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 2277 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x07, 2278 0x6c, 0x61, 0x74, 0x5f, 0x6c, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 2279 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x74, 0x4c, 2280 0x6e, 0x67, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x69, 2281 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x18, 2282 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 2283 0x6e, 0x4d, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x78, 0x0a, 0x16, 0x74, 0x65, 0x6c, 0x65, 0x63, 0x6f, 2284 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2285 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2286 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 2287 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 2288 0x74, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x50, 2289 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x63, 2290 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2291 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 2292 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x72, 0x0a, 0x15, 0x54, 0x65, 2293 0x6c, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 2294 0x6e, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 2295 0x54, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 2296 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 2297 0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 2298 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d, 2299 0x4d, 0x55, 0x54, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x02, 0x22, 0x8b, 2300 0x04, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 2301 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 2302 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2303 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 2304 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 2305 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 2306 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x05, 0x75, 0x6e, 2307 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2308 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 2309 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 2310 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 2311 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 2312 0x75, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x55, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 2313 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2314 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 2315 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 2316 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2317 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x30, 2318 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x77, 0x69, 0x74, 2319 0x68, 0x5f, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 2320 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 2321 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x2b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4a, 2322 0x6f, 0x62, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 2323 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 2324 0x6e, 0x67, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 2325 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 2326 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 2327 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x13, 2328 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4d, 0x4f, 0x55, 0x4e, 2329 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4e, 0x4e, 0x55, 0x41, 0x4c, 0x49, 0x5a, 0x45, 2330 0x44, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x41, 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x03, 0x12, 2331 0x1b, 0x0a, 0x17, 0x41, 0x4e, 0x4e, 0x55, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x54, 0x4f, 2332 0x54, 0x41, 0x4c, 0x5f, 0x41, 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x04, 0x22, 0xb1, 0x04, 0x0a, 2333 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x56, 2334 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 2335 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2336 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 2337 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x68, 2338 0x6f, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 2339 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x45, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 2340 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 2341 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 2342 0x4c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 2343 0x72, 0x74, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x47, 0x0a, 2344 0x0f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2345 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2346 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 2347 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x44, 0x75, 2348 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 2349 0x69, 0x6d, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 2350 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 2351 0x49, 0x6d, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 2352 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0c, 0x72, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 2353 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2354 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 2355 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 2356 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x61, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 2357 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x61, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 2358 0x3f, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 2359 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2360 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x44, 0x61, 0x79, 0x48, 2361 0x00, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 2362 0x22, 0x4c, 0x0a, 0x0b, 0x52, 0x6f, 0x61, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 2363 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 2364 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 2365 0x0c, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 2366 0x0d, 0x0a, 0x09, 0x42, 0x55, 0x53, 0x59, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x42, 0x10, 2367 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 2368 0x22, 0x4c, 0x0a, 0x0e, 0x4a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 2369 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 2370 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x54, 2371 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 2372 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x42, 2373 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 2374 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 2375 0x02, 0x52, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 2376 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 2377 0x65, 0x64, 0x22, 0xbf, 0x02, 0x0a, 0x0e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 2378 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 2379 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x65, 0x6d, 2380 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 2381 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2382 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 2383 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 2384 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 2385 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 2386 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 2387 0x61, 0x74, 0x65, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x12, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 2388 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x45, 2389 0x4d, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4d, 2390 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 2391 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4d, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 2392 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x10, 0x01, 0x12, 0x23, 0x0a, 2393 0x1f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x4d, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 2394 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 2395 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4d, 0x50, 0x4c, 0x4f, 2396 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x4f, 0x4e, 2397 0x4c, 0x59, 0x10, 0x03, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x45, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 2398 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x6f, 2399 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 2400 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x75, 2401 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 2402 0x66, 0x53, 0x74, 0x75, 0x64, 0x79, 0x12, 0x48, 0x0a, 0x0b, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 2403 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 2404 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 2405 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x67, 0x72, 0x65, 0x65, 2406 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x54, 0x79, 0x70, 0x65, 2407 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 2408 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x57, 2409 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 2410 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 2411 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 2412 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 2413 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x65, 0x72, 2414 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 2415 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 2416 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 2417 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x70, 2418 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x77, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69, 2419 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 2420 0x12, 0x30, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 2421 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 2422 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 2423 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 2424 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 2425 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 2426 0x22, 0x63, 0x0a, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 2427 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 2428 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 2429 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6f, 2430 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 2431 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 2432 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x7b, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 2433 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 2434 0x12, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 2435 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6a, 0x6f, 0x62, 0x52, 0x65, 2436 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 2437 0x6f, 0x62, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 2438 0x6a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 2439 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 2440 0x65, 0x64, 0x22, 0x9b, 0x02, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 2441 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 2442 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2443 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 2444 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 2445 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 2446 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2447 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 2448 0x69, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 2449 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2450 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 2451 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 2452 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 2453 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x49, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x65, 2454 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 2455 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 2456 0x0a, 0x0b, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 2457 0x0f, 0x0a, 0x0b, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 2458 0x22, 0x3b, 0x0a, 0x1b, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 2459 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 2460 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 2461 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd3, 0x01, 2462 0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 2463 0x6c, 0x74, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 2464 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2465 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 2466 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 2467 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 2468 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 2469 0x46, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 2470 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 2471 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 2472 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 2473 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 2474 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 2475 0x72, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 2476 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x73, 0x6f, 2477 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 2478 0x02, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x7a, 0x0a, 2479 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2480 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 2481 0x42, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 2482 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 2483 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 2484 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x61, 2485 0x6c, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x61, 0x6c, 2486 0x65, 0x6e, 0x74, 0xa2, 0x02, 0x03, 0x43, 0x54, 0x53, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2487 0x33, 2488} 2489 2490var ( 2491 file_google_cloud_talent_v4beta1_filters_proto_rawDescOnce sync.Once 2492 file_google_cloud_talent_v4beta1_filters_proto_rawDescData = file_google_cloud_talent_v4beta1_filters_proto_rawDesc 2493) 2494 2495func file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP() []byte { 2496 file_google_cloud_talent_v4beta1_filters_proto_rawDescOnce.Do(func() { 2497 file_google_cloud_talent_v4beta1_filters_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_talent_v4beta1_filters_proto_rawDescData) 2498 }) 2499 return file_google_cloud_talent_v4beta1_filters_proto_rawDescData 2500} 2501 2502var file_google_cloud_talent_v4beta1_filters_proto_enumTypes = make([]protoimpl.EnumInfo, 5) 2503var file_google_cloud_talent_v4beta1_filters_proto_msgTypes = make([]protoimpl.MessageInfo, 17) 2504var file_google_cloud_talent_v4beta1_filters_proto_goTypes = []interface{}{ 2505 (LocationFilter_TelecommutePreference)(0), // 0: google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference 2506 (CompensationFilter_FilterType)(0), // 1: google.cloud.talent.v4beta1.CompensationFilter.FilterType 2507 (CommuteFilter_RoadTraffic)(0), // 2: google.cloud.talent.v4beta1.CommuteFilter.RoadTraffic 2508 (EmployerFilter_EmployerFilterMode)(0), // 3: google.cloud.talent.v4beta1.EmployerFilter.EmployerFilterMode 2509 (TimeFilter_TimeField)(0), // 4: google.cloud.talent.v4beta1.TimeFilter.TimeField 2510 (*JobQuery)(nil), // 5: google.cloud.talent.v4beta1.JobQuery 2511 (*ProfileQuery)(nil), // 6: google.cloud.talent.v4beta1.ProfileQuery 2512 (*LocationFilter)(nil), // 7: google.cloud.talent.v4beta1.LocationFilter 2513 (*CompensationFilter)(nil), // 8: google.cloud.talent.v4beta1.CompensationFilter 2514 (*CommuteFilter)(nil), // 9: google.cloud.talent.v4beta1.CommuteFilter 2515 (*JobTitleFilter)(nil), // 10: google.cloud.talent.v4beta1.JobTitleFilter 2516 (*SkillFilter)(nil), // 11: google.cloud.talent.v4beta1.SkillFilter 2517 (*EmployerFilter)(nil), // 12: google.cloud.talent.v4beta1.EmployerFilter 2518 (*EducationFilter)(nil), // 13: google.cloud.talent.v4beta1.EducationFilter 2519 (*WorkExperienceFilter)(nil), // 14: google.cloud.talent.v4beta1.WorkExperienceFilter 2520 (*ApplicationDateFilter)(nil), // 15: google.cloud.talent.v4beta1.ApplicationDateFilter 2521 (*ApplicationOutcomeNotesFilter)(nil), // 16: google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter 2522 (*ApplicationJobFilter)(nil), // 17: google.cloud.talent.v4beta1.ApplicationJobFilter 2523 (*TimeFilter)(nil), // 18: google.cloud.talent.v4beta1.TimeFilter 2524 (*CandidateAvailabilityFilter)(nil), // 19: google.cloud.talent.v4beta1.CandidateAvailabilityFilter 2525 (*AvailabilityFilter)(nil), // 20: google.cloud.talent.v4beta1.AvailabilityFilter 2526 (*PersonNameFilter)(nil), // 21: google.cloud.talent.v4beta1.PersonNameFilter 2527 (JobCategory)(0), // 22: google.cloud.talent.v4beta1.JobCategory 2528 (EmploymentType)(0), // 23: google.cloud.talent.v4beta1.EmploymentType 2529 (*TimestampRange)(nil), // 24: google.cloud.talent.v4beta1.TimestampRange 2530 (*wrapperspb.BoolValue)(nil), // 25: google.protobuf.BoolValue 2531 (*latlng.LatLng)(nil), // 26: google.type.LatLng 2532 (CompensationInfo_CompensationUnit)(0), // 27: google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit 2533 (*CompensationInfo_CompensationRange)(nil), // 28: google.cloud.talent.v4beta1.CompensationInfo.CompensationRange 2534 (CommuteMethod)(0), // 29: google.cloud.talent.v4beta1.CommuteMethod 2535 (*durationpb.Duration)(nil), // 30: google.protobuf.Duration 2536 (*timeofday.TimeOfDay)(nil), // 31: google.type.TimeOfDay 2537 (DegreeType)(0), // 32: google.cloud.talent.v4beta1.DegreeType 2538 (*date.Date)(nil), // 33: google.type.Date 2539 (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp 2540 (AvailabilitySignalType)(0), // 35: google.cloud.talent.v4beta1.AvailabilitySignalType 2541} 2542var file_google_cloud_talent_v4beta1_filters_proto_depIdxs = []int32{ 2543 7, // 0: google.cloud.talent.v4beta1.JobQuery.location_filters:type_name -> google.cloud.talent.v4beta1.LocationFilter 2544 22, // 1: google.cloud.talent.v4beta1.JobQuery.job_categories:type_name -> google.cloud.talent.v4beta1.JobCategory 2545 9, // 2: google.cloud.talent.v4beta1.JobQuery.commute_filter:type_name -> google.cloud.talent.v4beta1.CommuteFilter 2546 8, // 3: google.cloud.talent.v4beta1.JobQuery.compensation_filter:type_name -> google.cloud.talent.v4beta1.CompensationFilter 2547 23, // 4: google.cloud.talent.v4beta1.JobQuery.employment_types:type_name -> google.cloud.talent.v4beta1.EmploymentType 2548 24, // 5: google.cloud.talent.v4beta1.JobQuery.publish_time_range:type_name -> google.cloud.talent.v4beta1.TimestampRange 2549 7, // 6: google.cloud.talent.v4beta1.ProfileQuery.location_filters:type_name -> google.cloud.talent.v4beta1.LocationFilter 2550 10, // 7: google.cloud.talent.v4beta1.ProfileQuery.job_title_filters:type_name -> google.cloud.talent.v4beta1.JobTitleFilter 2551 12, // 8: google.cloud.talent.v4beta1.ProfileQuery.employer_filters:type_name -> google.cloud.talent.v4beta1.EmployerFilter 2552 13, // 9: google.cloud.talent.v4beta1.ProfileQuery.education_filters:type_name -> google.cloud.talent.v4beta1.EducationFilter 2553 11, // 10: google.cloud.talent.v4beta1.ProfileQuery.skill_filters:type_name -> google.cloud.talent.v4beta1.SkillFilter 2554 14, // 11: google.cloud.talent.v4beta1.ProfileQuery.work_experience_filter:type_name -> google.cloud.talent.v4beta1.WorkExperienceFilter 2555 18, // 12: google.cloud.talent.v4beta1.ProfileQuery.time_filters:type_name -> google.cloud.talent.v4beta1.TimeFilter 2556 25, // 13: google.cloud.talent.v4beta1.ProfileQuery.hirable_filter:type_name -> google.protobuf.BoolValue 2557 15, // 14: google.cloud.talent.v4beta1.ProfileQuery.application_date_filters:type_name -> google.cloud.talent.v4beta1.ApplicationDateFilter 2558 16, // 15: google.cloud.talent.v4beta1.ProfileQuery.application_outcome_notes_filters:type_name -> google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter 2559 17, // 16: google.cloud.talent.v4beta1.ProfileQuery.application_job_filters:type_name -> google.cloud.talent.v4beta1.ApplicationJobFilter 2560 19, // 17: google.cloud.talent.v4beta1.ProfileQuery.candidate_availability_filter:type_name -> google.cloud.talent.v4beta1.CandidateAvailabilityFilter 2561 20, // 18: google.cloud.talent.v4beta1.ProfileQuery.availability_filters:type_name -> google.cloud.talent.v4beta1.AvailabilityFilter 2562 21, // 19: google.cloud.talent.v4beta1.ProfileQuery.person_name_filters:type_name -> google.cloud.talent.v4beta1.PersonNameFilter 2563 26, // 20: google.cloud.talent.v4beta1.LocationFilter.lat_lng:type_name -> google.type.LatLng 2564 0, // 21: google.cloud.talent.v4beta1.LocationFilter.telecommute_preference:type_name -> google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference 2565 1, // 22: google.cloud.talent.v4beta1.CompensationFilter.type:type_name -> google.cloud.talent.v4beta1.CompensationFilter.FilterType 2566 27, // 23: google.cloud.talent.v4beta1.CompensationFilter.units:type_name -> google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit 2567 28, // 24: google.cloud.talent.v4beta1.CompensationFilter.range:type_name -> google.cloud.talent.v4beta1.CompensationInfo.CompensationRange 2568 29, // 25: google.cloud.talent.v4beta1.CommuteFilter.commute_method:type_name -> google.cloud.talent.v4beta1.CommuteMethod 2569 26, // 26: google.cloud.talent.v4beta1.CommuteFilter.start_coordinates:type_name -> google.type.LatLng 2570 30, // 27: google.cloud.talent.v4beta1.CommuteFilter.travel_duration:type_name -> google.protobuf.Duration 2571 2, // 28: google.cloud.talent.v4beta1.CommuteFilter.road_traffic:type_name -> google.cloud.talent.v4beta1.CommuteFilter.RoadTraffic 2572 31, // 29: google.cloud.talent.v4beta1.CommuteFilter.departure_time:type_name -> google.type.TimeOfDay 2573 3, // 30: google.cloud.talent.v4beta1.EmployerFilter.mode:type_name -> google.cloud.talent.v4beta1.EmployerFilter.EmployerFilterMode 2574 32, // 31: google.cloud.talent.v4beta1.EducationFilter.degree_type:type_name -> google.cloud.talent.v4beta1.DegreeType 2575 30, // 32: google.cloud.talent.v4beta1.WorkExperienceFilter.min_experience:type_name -> google.protobuf.Duration 2576 30, // 33: google.cloud.talent.v4beta1.WorkExperienceFilter.max_experience:type_name -> google.protobuf.Duration 2577 33, // 34: google.cloud.talent.v4beta1.ApplicationDateFilter.start_date:type_name -> google.type.Date 2578 33, // 35: google.cloud.talent.v4beta1.ApplicationDateFilter.end_date:type_name -> google.type.Date 2579 34, // 36: google.cloud.talent.v4beta1.TimeFilter.start_time:type_name -> google.protobuf.Timestamp 2580 34, // 37: google.cloud.talent.v4beta1.TimeFilter.end_time:type_name -> google.protobuf.Timestamp 2581 4, // 38: google.cloud.talent.v4beta1.TimeFilter.time_field:type_name -> google.cloud.talent.v4beta1.TimeFilter.TimeField 2582 35, // 39: google.cloud.talent.v4beta1.AvailabilityFilter.signal_type:type_name -> google.cloud.talent.v4beta1.AvailabilitySignalType 2583 24, // 40: google.cloud.talent.v4beta1.AvailabilityFilter.range:type_name -> google.cloud.talent.v4beta1.TimestampRange 2584 41, // [41:41] is the sub-list for method output_type 2585 41, // [41:41] is the sub-list for method input_type 2586 41, // [41:41] is the sub-list for extension type_name 2587 41, // [41:41] is the sub-list for extension extendee 2588 0, // [0:41] is the sub-list for field type_name 2589} 2590 2591func init() { file_google_cloud_talent_v4beta1_filters_proto_init() } 2592func file_google_cloud_talent_v4beta1_filters_proto_init() { 2593 if File_google_cloud_talent_v4beta1_filters_proto != nil { 2594 return 2595 } 2596 file_google_cloud_talent_v4beta1_common_proto_init() 2597 if !protoimpl.UnsafeEnabled { 2598 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2599 switch v := v.(*JobQuery); i { 2600 case 0: 2601 return &v.state 2602 case 1: 2603 return &v.sizeCache 2604 case 2: 2605 return &v.unknownFields 2606 default: 2607 return nil 2608 } 2609 } 2610 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2611 switch v := v.(*ProfileQuery); i { 2612 case 0: 2613 return &v.state 2614 case 1: 2615 return &v.sizeCache 2616 case 2: 2617 return &v.unknownFields 2618 default: 2619 return nil 2620 } 2621 } 2622 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2623 switch v := v.(*LocationFilter); i { 2624 case 0: 2625 return &v.state 2626 case 1: 2627 return &v.sizeCache 2628 case 2: 2629 return &v.unknownFields 2630 default: 2631 return nil 2632 } 2633 } 2634 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2635 switch v := v.(*CompensationFilter); i { 2636 case 0: 2637 return &v.state 2638 case 1: 2639 return &v.sizeCache 2640 case 2: 2641 return &v.unknownFields 2642 default: 2643 return nil 2644 } 2645 } 2646 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2647 switch v := v.(*CommuteFilter); i { 2648 case 0: 2649 return &v.state 2650 case 1: 2651 return &v.sizeCache 2652 case 2: 2653 return &v.unknownFields 2654 default: 2655 return nil 2656 } 2657 } 2658 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2659 switch v := v.(*JobTitleFilter); i { 2660 case 0: 2661 return &v.state 2662 case 1: 2663 return &v.sizeCache 2664 case 2: 2665 return &v.unknownFields 2666 default: 2667 return nil 2668 } 2669 } 2670 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2671 switch v := v.(*SkillFilter); i { 2672 case 0: 2673 return &v.state 2674 case 1: 2675 return &v.sizeCache 2676 case 2: 2677 return &v.unknownFields 2678 default: 2679 return nil 2680 } 2681 } 2682 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2683 switch v := v.(*EmployerFilter); i { 2684 case 0: 2685 return &v.state 2686 case 1: 2687 return &v.sizeCache 2688 case 2: 2689 return &v.unknownFields 2690 default: 2691 return nil 2692 } 2693 } 2694 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2695 switch v := v.(*EducationFilter); i { 2696 case 0: 2697 return &v.state 2698 case 1: 2699 return &v.sizeCache 2700 case 2: 2701 return &v.unknownFields 2702 default: 2703 return nil 2704 } 2705 } 2706 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2707 switch v := v.(*WorkExperienceFilter); i { 2708 case 0: 2709 return &v.state 2710 case 1: 2711 return &v.sizeCache 2712 case 2: 2713 return &v.unknownFields 2714 default: 2715 return nil 2716 } 2717 } 2718 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2719 switch v := v.(*ApplicationDateFilter); i { 2720 case 0: 2721 return &v.state 2722 case 1: 2723 return &v.sizeCache 2724 case 2: 2725 return &v.unknownFields 2726 default: 2727 return nil 2728 } 2729 } 2730 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2731 switch v := v.(*ApplicationOutcomeNotesFilter); i { 2732 case 0: 2733 return &v.state 2734 case 1: 2735 return &v.sizeCache 2736 case 2: 2737 return &v.unknownFields 2738 default: 2739 return nil 2740 } 2741 } 2742 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 2743 switch v := v.(*ApplicationJobFilter); i { 2744 case 0: 2745 return &v.state 2746 case 1: 2747 return &v.sizeCache 2748 case 2: 2749 return &v.unknownFields 2750 default: 2751 return nil 2752 } 2753 } 2754 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 2755 switch v := v.(*TimeFilter); i { 2756 case 0: 2757 return &v.state 2758 case 1: 2759 return &v.sizeCache 2760 case 2: 2761 return &v.unknownFields 2762 default: 2763 return nil 2764 } 2765 } 2766 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 2767 switch v := v.(*CandidateAvailabilityFilter); i { 2768 case 0: 2769 return &v.state 2770 case 1: 2771 return &v.sizeCache 2772 case 2: 2773 return &v.unknownFields 2774 default: 2775 return nil 2776 } 2777 } 2778 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 2779 switch v := v.(*AvailabilityFilter); i { 2780 case 0: 2781 return &v.state 2782 case 1: 2783 return &v.sizeCache 2784 case 2: 2785 return &v.unknownFields 2786 default: 2787 return nil 2788 } 2789 } 2790 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 2791 switch v := v.(*PersonNameFilter); i { 2792 case 0: 2793 return &v.state 2794 case 1: 2795 return &v.sizeCache 2796 case 2: 2797 return &v.unknownFields 2798 default: 2799 return nil 2800 } 2801 } 2802 } 2803 file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4].OneofWrappers = []interface{}{ 2804 (*CommuteFilter_RoadTraffic_)(nil), 2805 (*CommuteFilter_DepartureTime)(nil), 2806 } 2807 type x struct{} 2808 out := protoimpl.TypeBuilder{ 2809 File: protoimpl.DescBuilder{ 2810 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2811 RawDescriptor: file_google_cloud_talent_v4beta1_filters_proto_rawDesc, 2812 NumEnums: 5, 2813 NumMessages: 17, 2814 NumExtensions: 0, 2815 NumServices: 0, 2816 }, 2817 GoTypes: file_google_cloud_talent_v4beta1_filters_proto_goTypes, 2818 DependencyIndexes: file_google_cloud_talent_v4beta1_filters_proto_depIdxs, 2819 EnumInfos: file_google_cloud_talent_v4beta1_filters_proto_enumTypes, 2820 MessageInfos: file_google_cloud_talent_v4beta1_filters_proto_msgTypes, 2821 }.Build() 2822 File_google_cloud_talent_v4beta1_filters_proto = out.File 2823 file_google_cloud_talent_v4beta1_filters_proto_rawDesc = nil 2824 file_google_cloud_talent_v4beta1_filters_proto_goTypes = nil 2825 file_google_cloud_talent_v4beta1_filters_proto_depIdxs = nil 2826} 2827