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.25.0-devel 18// protoc v3.13.0 19// source: google/cloud/vision/v1/product_search_service.proto 20 21package vision 22 23import ( 24 context "context" 25 reflect "reflect" 26 sync "sync" 27 28 proto "github.com/golang/protobuf/proto" 29 _ "google.golang.org/genproto/googleapis/api/annotations" 30 longrunning "google.golang.org/genproto/googleapis/longrunning" 31 status "google.golang.org/genproto/googleapis/rpc/status" 32 grpc "google.golang.org/grpc" 33 codes "google.golang.org/grpc/codes" 34 status1 "google.golang.org/grpc/status" 35 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 36 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 37 emptypb "google.golang.org/protobuf/types/known/emptypb" 38 fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 39 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 40) 41 42const ( 43 // Verify that this generated code is sufficiently up-to-date. 44 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 45 // Verify that runtime/protoimpl is sufficiently up-to-date. 46 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 47) 48 49// This is a compile-time assertion that a sufficiently up-to-date version 50// of the legacy proto package is being used. 51const _ = proto.ProtoPackageIsVersion4 52 53// Enumerates the possible states that the batch request can be in. 54type BatchOperationMetadata_State int32 55 56const ( 57 // Invalid. 58 BatchOperationMetadata_STATE_UNSPECIFIED BatchOperationMetadata_State = 0 59 // Request is actively being processed. 60 BatchOperationMetadata_PROCESSING BatchOperationMetadata_State = 1 61 // The request is done and at least one item has been successfully 62 // processed. 63 BatchOperationMetadata_SUCCESSFUL BatchOperationMetadata_State = 2 64 // The request is done and no item has been successfully processed. 65 BatchOperationMetadata_FAILED BatchOperationMetadata_State = 3 66 // The request is done after the longrunning.Operations.CancelOperation has 67 // been called by the user. Any records that were processed before the 68 // cancel command are output as specified in the request. 69 BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 4 70) 71 72// Enum value maps for BatchOperationMetadata_State. 73var ( 74 BatchOperationMetadata_State_name = map[int32]string{ 75 0: "STATE_UNSPECIFIED", 76 1: "PROCESSING", 77 2: "SUCCESSFUL", 78 3: "FAILED", 79 4: "CANCELLED", 80 } 81 BatchOperationMetadata_State_value = map[string]int32{ 82 "STATE_UNSPECIFIED": 0, 83 "PROCESSING": 1, 84 "SUCCESSFUL": 2, 85 "FAILED": 3, 86 "CANCELLED": 4, 87 } 88) 89 90func (x BatchOperationMetadata_State) Enum() *BatchOperationMetadata_State { 91 p := new(BatchOperationMetadata_State) 92 *p = x 93 return p 94} 95 96func (x BatchOperationMetadata_State) String() string { 97 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 98} 99 100func (BatchOperationMetadata_State) Descriptor() protoreflect.EnumDescriptor { 101 return file_google_cloud_vision_v1_product_search_service_proto_enumTypes[0].Descriptor() 102} 103 104func (BatchOperationMetadata_State) Type() protoreflect.EnumType { 105 return &file_google_cloud_vision_v1_product_search_service_proto_enumTypes[0] 106} 107 108func (x BatchOperationMetadata_State) Number() protoreflect.EnumNumber { 109 return protoreflect.EnumNumber(x) 110} 111 112// Deprecated: Use BatchOperationMetadata_State.Descriptor instead. 113func (BatchOperationMetadata_State) EnumDescriptor() ([]byte, []int) { 114 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{28, 0} 115} 116 117// A Product contains ReferenceImages. 118type Product struct { 119 state protoimpl.MessageState 120 sizeCache protoimpl.SizeCache 121 unknownFields protoimpl.UnknownFields 122 123 // The resource name of the product. 124 // 125 // Format is: 126 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. 127 // 128 // This field is ignored when creating a product. 129 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 130 // The user-provided name for this Product. Must not be empty. Must be at most 131 // 4096 characters long. 132 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 133 // User-provided metadata to be stored with this product. Must be at most 4096 134 // characters long. 135 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` 136 // Immutable. The category for the product identified by the reference image. This should 137 // be one of "homegoods-v2", "apparel-v2", "toys-v2", "packagedgoods-v1" or 138 // "general-v1". The legacy categories "homegoods", "apparel", and "toys" are 139 // still supported, but these should not be used for new products. 140 ProductCategory string `protobuf:"bytes,4,opt,name=product_category,json=productCategory,proto3" json:"product_category,omitempty"` 141 // Key-value pairs that can be attached to a product. At query time, 142 // constraints can be specified based on the product_labels. 143 // 144 // Note that integer values can be provided as strings, e.g. "1199". Only 145 // strings with integer values can match a range-based restriction which is 146 // to be supported soon. 147 // 148 // Multiple values can be assigned to the same key. One product may have up to 149 // 500 product_labels. 150 // 151 // Notice that the total number of distinct product_labels over all products 152 // in one ProductSet cannot exceed 1M, otherwise the product search pipeline 153 // will refuse to work for that ProductSet. 154 ProductLabels []*Product_KeyValue `protobuf:"bytes,5,rep,name=product_labels,json=productLabels,proto3" json:"product_labels,omitempty"` 155} 156 157func (x *Product) Reset() { 158 *x = Product{} 159 if protoimpl.UnsafeEnabled { 160 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[0] 161 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 162 ms.StoreMessageInfo(mi) 163 } 164} 165 166func (x *Product) String() string { 167 return protoimpl.X.MessageStringOf(x) 168} 169 170func (*Product) ProtoMessage() {} 171 172func (x *Product) ProtoReflect() protoreflect.Message { 173 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[0] 174 if protoimpl.UnsafeEnabled && x != nil { 175 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 176 if ms.LoadMessageInfo() == nil { 177 ms.StoreMessageInfo(mi) 178 } 179 return ms 180 } 181 return mi.MessageOf(x) 182} 183 184// Deprecated: Use Product.ProtoReflect.Descriptor instead. 185func (*Product) Descriptor() ([]byte, []int) { 186 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{0} 187} 188 189func (x *Product) GetName() string { 190 if x != nil { 191 return x.Name 192 } 193 return "" 194} 195 196func (x *Product) GetDisplayName() string { 197 if x != nil { 198 return x.DisplayName 199 } 200 return "" 201} 202 203func (x *Product) GetDescription() string { 204 if x != nil { 205 return x.Description 206 } 207 return "" 208} 209 210func (x *Product) GetProductCategory() string { 211 if x != nil { 212 return x.ProductCategory 213 } 214 return "" 215} 216 217func (x *Product) GetProductLabels() []*Product_KeyValue { 218 if x != nil { 219 return x.ProductLabels 220 } 221 return nil 222} 223 224// A ProductSet contains Products. A ProductSet can contain a maximum of 1 225// million reference images. If the limit is exceeded, periodic indexing will 226// fail. 227type ProductSet struct { 228 state protoimpl.MessageState 229 sizeCache protoimpl.SizeCache 230 unknownFields protoimpl.UnknownFields 231 232 // The resource name of the ProductSet. 233 // 234 // Format is: 235 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`. 236 // 237 // This field is ignored when creating a ProductSet. 238 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 239 // The user-provided name for this ProductSet. Must not be empty. Must be at 240 // most 4096 characters long. 241 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 242 // Output only. The time at which this ProductSet was last indexed. Query 243 // results will reflect all updates before this time. If this ProductSet has 244 // never been indexed, this timestamp is the default value 245 // "1970-01-01T00:00:00Z". 246 // 247 // This field is ignored when creating a ProductSet. 248 IndexTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=index_time,json=indexTime,proto3" json:"index_time,omitempty"` 249 // Output only. If there was an error with indexing the product set, the field 250 // is populated. 251 // 252 // This field is ignored when creating a ProductSet. 253 IndexError *status.Status `protobuf:"bytes,4,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"` 254} 255 256func (x *ProductSet) Reset() { 257 *x = ProductSet{} 258 if protoimpl.UnsafeEnabled { 259 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[1] 260 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 261 ms.StoreMessageInfo(mi) 262 } 263} 264 265func (x *ProductSet) String() string { 266 return protoimpl.X.MessageStringOf(x) 267} 268 269func (*ProductSet) ProtoMessage() {} 270 271func (x *ProductSet) ProtoReflect() protoreflect.Message { 272 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[1] 273 if protoimpl.UnsafeEnabled && x != nil { 274 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 275 if ms.LoadMessageInfo() == nil { 276 ms.StoreMessageInfo(mi) 277 } 278 return ms 279 } 280 return mi.MessageOf(x) 281} 282 283// Deprecated: Use ProductSet.ProtoReflect.Descriptor instead. 284func (*ProductSet) Descriptor() ([]byte, []int) { 285 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{1} 286} 287 288func (x *ProductSet) GetName() string { 289 if x != nil { 290 return x.Name 291 } 292 return "" 293} 294 295func (x *ProductSet) GetDisplayName() string { 296 if x != nil { 297 return x.DisplayName 298 } 299 return "" 300} 301 302func (x *ProductSet) GetIndexTime() *timestamppb.Timestamp { 303 if x != nil { 304 return x.IndexTime 305 } 306 return nil 307} 308 309func (x *ProductSet) GetIndexError() *status.Status { 310 if x != nil { 311 return x.IndexError 312 } 313 return nil 314} 315 316// A `ReferenceImage` represents a product image and its associated metadata, 317// such as bounding boxes. 318type ReferenceImage struct { 319 state protoimpl.MessageState 320 sizeCache protoimpl.SizeCache 321 unknownFields protoimpl.UnknownFields 322 323 // The resource name of the reference image. 324 // 325 // Format is: 326 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. 327 // 328 // This field is ignored when creating a reference image. 329 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 330 // Required. The Google Cloud Storage URI of the reference image. 331 // 332 // The URI must start with `gs://`. 333 Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` 334 // Optional. Bounding polygons around the areas of interest in the reference image. 335 // If this field is empty, the system will try to detect regions of 336 // interest. At most 10 bounding polygons will be used. 337 // 338 // The provided shape is converted into a non-rotated rectangle. Once 339 // converted, the small edge of the rectangle must be greater than or equal 340 // to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5 341 // is not). 342 BoundingPolys []*BoundingPoly `protobuf:"bytes,3,rep,name=bounding_polys,json=boundingPolys,proto3" json:"bounding_polys,omitempty"` 343} 344 345func (x *ReferenceImage) Reset() { 346 *x = ReferenceImage{} 347 if protoimpl.UnsafeEnabled { 348 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[2] 349 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 350 ms.StoreMessageInfo(mi) 351 } 352} 353 354func (x *ReferenceImage) String() string { 355 return protoimpl.X.MessageStringOf(x) 356} 357 358func (*ReferenceImage) ProtoMessage() {} 359 360func (x *ReferenceImage) ProtoReflect() protoreflect.Message { 361 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[2] 362 if protoimpl.UnsafeEnabled && x != nil { 363 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 364 if ms.LoadMessageInfo() == nil { 365 ms.StoreMessageInfo(mi) 366 } 367 return ms 368 } 369 return mi.MessageOf(x) 370} 371 372// Deprecated: Use ReferenceImage.ProtoReflect.Descriptor instead. 373func (*ReferenceImage) Descriptor() ([]byte, []int) { 374 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{2} 375} 376 377func (x *ReferenceImage) GetName() string { 378 if x != nil { 379 return x.Name 380 } 381 return "" 382} 383 384func (x *ReferenceImage) GetUri() string { 385 if x != nil { 386 return x.Uri 387 } 388 return "" 389} 390 391func (x *ReferenceImage) GetBoundingPolys() []*BoundingPoly { 392 if x != nil { 393 return x.BoundingPolys 394 } 395 return nil 396} 397 398// Request message for the `CreateProduct` method. 399type CreateProductRequest struct { 400 state protoimpl.MessageState 401 sizeCache protoimpl.SizeCache 402 unknownFields protoimpl.UnknownFields 403 404 // Required. The project in which the Product should be created. 405 // 406 // Format is 407 // `projects/PROJECT_ID/locations/LOC_ID`. 408 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 409 // Required. The product to create. 410 Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` 411 // A user-supplied resource id for this Product. If set, the server will 412 // attempt to use this value as the resource id. If it is already in use, an 413 // error is returned with code ALREADY_EXISTS. Must be at most 128 characters 414 // long. It cannot contain the character `/`. 415 ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` 416} 417 418func (x *CreateProductRequest) Reset() { 419 *x = CreateProductRequest{} 420 if protoimpl.UnsafeEnabled { 421 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[3] 422 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 423 ms.StoreMessageInfo(mi) 424 } 425} 426 427func (x *CreateProductRequest) String() string { 428 return protoimpl.X.MessageStringOf(x) 429} 430 431func (*CreateProductRequest) ProtoMessage() {} 432 433func (x *CreateProductRequest) ProtoReflect() protoreflect.Message { 434 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[3] 435 if protoimpl.UnsafeEnabled && x != nil { 436 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 437 if ms.LoadMessageInfo() == nil { 438 ms.StoreMessageInfo(mi) 439 } 440 return ms 441 } 442 return mi.MessageOf(x) 443} 444 445// Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead. 446func (*CreateProductRequest) Descriptor() ([]byte, []int) { 447 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{3} 448} 449 450func (x *CreateProductRequest) GetParent() string { 451 if x != nil { 452 return x.Parent 453 } 454 return "" 455} 456 457func (x *CreateProductRequest) GetProduct() *Product { 458 if x != nil { 459 return x.Product 460 } 461 return nil 462} 463 464func (x *CreateProductRequest) GetProductId() string { 465 if x != nil { 466 return x.ProductId 467 } 468 return "" 469} 470 471// Request message for the `ListProducts` method. 472type ListProductsRequest struct { 473 state protoimpl.MessageState 474 sizeCache protoimpl.SizeCache 475 unknownFields protoimpl.UnknownFields 476 477 // Required. The project OR ProductSet from which Products should be listed. 478 // 479 // Format: 480 // `projects/PROJECT_ID/locations/LOC_ID` 481 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 482 // The maximum number of items to return. Default 10, maximum 100. 483 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 484 // The next_page_token returned from a previous List request, if any. 485 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 486} 487 488func (x *ListProductsRequest) Reset() { 489 *x = ListProductsRequest{} 490 if protoimpl.UnsafeEnabled { 491 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[4] 492 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 493 ms.StoreMessageInfo(mi) 494 } 495} 496 497func (x *ListProductsRequest) String() string { 498 return protoimpl.X.MessageStringOf(x) 499} 500 501func (*ListProductsRequest) ProtoMessage() {} 502 503func (x *ListProductsRequest) ProtoReflect() protoreflect.Message { 504 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[4] 505 if protoimpl.UnsafeEnabled && x != nil { 506 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 507 if ms.LoadMessageInfo() == nil { 508 ms.StoreMessageInfo(mi) 509 } 510 return ms 511 } 512 return mi.MessageOf(x) 513} 514 515// Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead. 516func (*ListProductsRequest) Descriptor() ([]byte, []int) { 517 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{4} 518} 519 520func (x *ListProductsRequest) GetParent() string { 521 if x != nil { 522 return x.Parent 523 } 524 return "" 525} 526 527func (x *ListProductsRequest) GetPageSize() int32 { 528 if x != nil { 529 return x.PageSize 530 } 531 return 0 532} 533 534func (x *ListProductsRequest) GetPageToken() string { 535 if x != nil { 536 return x.PageToken 537 } 538 return "" 539} 540 541// Response message for the `ListProducts` method. 542type ListProductsResponse struct { 543 state protoimpl.MessageState 544 sizeCache protoimpl.SizeCache 545 unknownFields protoimpl.UnknownFields 546 547 // List of products. 548 Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` 549 // Token to retrieve the next page of results, or empty if there are no more 550 // results in the list. 551 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 552} 553 554func (x *ListProductsResponse) Reset() { 555 *x = ListProductsResponse{} 556 if protoimpl.UnsafeEnabled { 557 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[5] 558 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 559 ms.StoreMessageInfo(mi) 560 } 561} 562 563func (x *ListProductsResponse) String() string { 564 return protoimpl.X.MessageStringOf(x) 565} 566 567func (*ListProductsResponse) ProtoMessage() {} 568 569func (x *ListProductsResponse) ProtoReflect() protoreflect.Message { 570 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[5] 571 if protoimpl.UnsafeEnabled && x != nil { 572 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 573 if ms.LoadMessageInfo() == nil { 574 ms.StoreMessageInfo(mi) 575 } 576 return ms 577 } 578 return mi.MessageOf(x) 579} 580 581// Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead. 582func (*ListProductsResponse) Descriptor() ([]byte, []int) { 583 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{5} 584} 585 586func (x *ListProductsResponse) GetProducts() []*Product { 587 if x != nil { 588 return x.Products 589 } 590 return nil 591} 592 593func (x *ListProductsResponse) GetNextPageToken() string { 594 if x != nil { 595 return x.NextPageToken 596 } 597 return "" 598} 599 600// Request message for the `GetProduct` method. 601type GetProductRequest struct { 602 state protoimpl.MessageState 603 sizeCache protoimpl.SizeCache 604 unknownFields protoimpl.UnknownFields 605 606 // Required. Resource name of the Product to get. 607 // 608 // Format is: 609 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 610 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 611} 612 613func (x *GetProductRequest) Reset() { 614 *x = GetProductRequest{} 615 if protoimpl.UnsafeEnabled { 616 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[6] 617 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 618 ms.StoreMessageInfo(mi) 619 } 620} 621 622func (x *GetProductRequest) String() string { 623 return protoimpl.X.MessageStringOf(x) 624} 625 626func (*GetProductRequest) ProtoMessage() {} 627 628func (x *GetProductRequest) ProtoReflect() protoreflect.Message { 629 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[6] 630 if protoimpl.UnsafeEnabled && x != nil { 631 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 632 if ms.LoadMessageInfo() == nil { 633 ms.StoreMessageInfo(mi) 634 } 635 return ms 636 } 637 return mi.MessageOf(x) 638} 639 640// Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead. 641func (*GetProductRequest) Descriptor() ([]byte, []int) { 642 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{6} 643} 644 645func (x *GetProductRequest) GetName() string { 646 if x != nil { 647 return x.Name 648 } 649 return "" 650} 651 652// Request message for the `UpdateProduct` method. 653type UpdateProductRequest struct { 654 state protoimpl.MessageState 655 sizeCache protoimpl.SizeCache 656 unknownFields protoimpl.UnknownFields 657 658 // Required. The Product resource which replaces the one on the server. 659 // product.name is immutable. 660 Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` 661 // The [FieldMask][google.protobuf.FieldMask] that specifies which fields 662 // to update. 663 // If update_mask isn't specified, all mutable fields are to be updated. 664 // Valid mask paths include `product_labels`, `display_name`, and 665 // `description`. 666 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 667} 668 669func (x *UpdateProductRequest) Reset() { 670 *x = UpdateProductRequest{} 671 if protoimpl.UnsafeEnabled { 672 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[7] 673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 674 ms.StoreMessageInfo(mi) 675 } 676} 677 678func (x *UpdateProductRequest) String() string { 679 return protoimpl.X.MessageStringOf(x) 680} 681 682func (*UpdateProductRequest) ProtoMessage() {} 683 684func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message { 685 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[7] 686 if protoimpl.UnsafeEnabled && x != nil { 687 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 688 if ms.LoadMessageInfo() == nil { 689 ms.StoreMessageInfo(mi) 690 } 691 return ms 692 } 693 return mi.MessageOf(x) 694} 695 696// Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead. 697func (*UpdateProductRequest) Descriptor() ([]byte, []int) { 698 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{7} 699} 700 701func (x *UpdateProductRequest) GetProduct() *Product { 702 if x != nil { 703 return x.Product 704 } 705 return nil 706} 707 708func (x *UpdateProductRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 709 if x != nil { 710 return x.UpdateMask 711 } 712 return nil 713} 714 715// Request message for the `DeleteProduct` method. 716type DeleteProductRequest struct { 717 state protoimpl.MessageState 718 sizeCache protoimpl.SizeCache 719 unknownFields protoimpl.UnknownFields 720 721 // Required. Resource name of product to delete. 722 // 723 // Format is: 724 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 725 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 726} 727 728func (x *DeleteProductRequest) Reset() { 729 *x = DeleteProductRequest{} 730 if protoimpl.UnsafeEnabled { 731 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[8] 732 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 733 ms.StoreMessageInfo(mi) 734 } 735} 736 737func (x *DeleteProductRequest) String() string { 738 return protoimpl.X.MessageStringOf(x) 739} 740 741func (*DeleteProductRequest) ProtoMessage() {} 742 743func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message { 744 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[8] 745 if protoimpl.UnsafeEnabled && x != nil { 746 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 747 if ms.LoadMessageInfo() == nil { 748 ms.StoreMessageInfo(mi) 749 } 750 return ms 751 } 752 return mi.MessageOf(x) 753} 754 755// Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead. 756func (*DeleteProductRequest) Descriptor() ([]byte, []int) { 757 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{8} 758} 759 760func (x *DeleteProductRequest) GetName() string { 761 if x != nil { 762 return x.Name 763 } 764 return "" 765} 766 767// Request message for the `CreateProductSet` method. 768type CreateProductSetRequest struct { 769 state protoimpl.MessageState 770 sizeCache protoimpl.SizeCache 771 unknownFields protoimpl.UnknownFields 772 773 // Required. The project in which the ProductSet should be created. 774 // 775 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 776 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 777 // Required. The ProductSet to create. 778 ProductSet *ProductSet `protobuf:"bytes,2,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"` 779 // A user-supplied resource id for this ProductSet. If set, the server will 780 // attempt to use this value as the resource id. If it is already in use, an 781 // error is returned with code ALREADY_EXISTS. Must be at most 128 characters 782 // long. It cannot contain the character `/`. 783 ProductSetId string `protobuf:"bytes,3,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"` 784} 785 786func (x *CreateProductSetRequest) Reset() { 787 *x = CreateProductSetRequest{} 788 if protoimpl.UnsafeEnabled { 789 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[9] 790 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 791 ms.StoreMessageInfo(mi) 792 } 793} 794 795func (x *CreateProductSetRequest) String() string { 796 return protoimpl.X.MessageStringOf(x) 797} 798 799func (*CreateProductSetRequest) ProtoMessage() {} 800 801func (x *CreateProductSetRequest) ProtoReflect() protoreflect.Message { 802 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[9] 803 if protoimpl.UnsafeEnabled && x != nil { 804 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 805 if ms.LoadMessageInfo() == nil { 806 ms.StoreMessageInfo(mi) 807 } 808 return ms 809 } 810 return mi.MessageOf(x) 811} 812 813// Deprecated: Use CreateProductSetRequest.ProtoReflect.Descriptor instead. 814func (*CreateProductSetRequest) Descriptor() ([]byte, []int) { 815 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{9} 816} 817 818func (x *CreateProductSetRequest) GetParent() string { 819 if x != nil { 820 return x.Parent 821 } 822 return "" 823} 824 825func (x *CreateProductSetRequest) GetProductSet() *ProductSet { 826 if x != nil { 827 return x.ProductSet 828 } 829 return nil 830} 831 832func (x *CreateProductSetRequest) GetProductSetId() string { 833 if x != nil { 834 return x.ProductSetId 835 } 836 return "" 837} 838 839// Request message for the `ListProductSets` method. 840type ListProductSetsRequest struct { 841 state protoimpl.MessageState 842 sizeCache protoimpl.SizeCache 843 unknownFields protoimpl.UnknownFields 844 845 // Required. The project from which ProductSets should be listed. 846 // 847 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 848 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 849 // The maximum number of items to return. Default 10, maximum 100. 850 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 851 // The next_page_token returned from a previous List request, if any. 852 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 853} 854 855func (x *ListProductSetsRequest) Reset() { 856 *x = ListProductSetsRequest{} 857 if protoimpl.UnsafeEnabled { 858 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[10] 859 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 860 ms.StoreMessageInfo(mi) 861 } 862} 863 864func (x *ListProductSetsRequest) String() string { 865 return protoimpl.X.MessageStringOf(x) 866} 867 868func (*ListProductSetsRequest) ProtoMessage() {} 869 870func (x *ListProductSetsRequest) ProtoReflect() protoreflect.Message { 871 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[10] 872 if protoimpl.UnsafeEnabled && x != nil { 873 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 874 if ms.LoadMessageInfo() == nil { 875 ms.StoreMessageInfo(mi) 876 } 877 return ms 878 } 879 return mi.MessageOf(x) 880} 881 882// Deprecated: Use ListProductSetsRequest.ProtoReflect.Descriptor instead. 883func (*ListProductSetsRequest) Descriptor() ([]byte, []int) { 884 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{10} 885} 886 887func (x *ListProductSetsRequest) GetParent() string { 888 if x != nil { 889 return x.Parent 890 } 891 return "" 892} 893 894func (x *ListProductSetsRequest) GetPageSize() int32 { 895 if x != nil { 896 return x.PageSize 897 } 898 return 0 899} 900 901func (x *ListProductSetsRequest) GetPageToken() string { 902 if x != nil { 903 return x.PageToken 904 } 905 return "" 906} 907 908// Response message for the `ListProductSets` method. 909type ListProductSetsResponse struct { 910 state protoimpl.MessageState 911 sizeCache protoimpl.SizeCache 912 unknownFields protoimpl.UnknownFields 913 914 // List of ProductSets. 915 ProductSets []*ProductSet `protobuf:"bytes,1,rep,name=product_sets,json=productSets,proto3" json:"product_sets,omitempty"` 916 // Token to retrieve the next page of results, or empty if there are no more 917 // results in the list. 918 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 919} 920 921func (x *ListProductSetsResponse) Reset() { 922 *x = ListProductSetsResponse{} 923 if protoimpl.UnsafeEnabled { 924 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[11] 925 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 926 ms.StoreMessageInfo(mi) 927 } 928} 929 930func (x *ListProductSetsResponse) String() string { 931 return protoimpl.X.MessageStringOf(x) 932} 933 934func (*ListProductSetsResponse) ProtoMessage() {} 935 936func (x *ListProductSetsResponse) ProtoReflect() protoreflect.Message { 937 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[11] 938 if protoimpl.UnsafeEnabled && x != nil { 939 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 940 if ms.LoadMessageInfo() == nil { 941 ms.StoreMessageInfo(mi) 942 } 943 return ms 944 } 945 return mi.MessageOf(x) 946} 947 948// Deprecated: Use ListProductSetsResponse.ProtoReflect.Descriptor instead. 949func (*ListProductSetsResponse) Descriptor() ([]byte, []int) { 950 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{11} 951} 952 953func (x *ListProductSetsResponse) GetProductSets() []*ProductSet { 954 if x != nil { 955 return x.ProductSets 956 } 957 return nil 958} 959 960func (x *ListProductSetsResponse) GetNextPageToken() string { 961 if x != nil { 962 return x.NextPageToken 963 } 964 return "" 965} 966 967// Request message for the `GetProductSet` method. 968type GetProductSetRequest struct { 969 state protoimpl.MessageState 970 sizeCache protoimpl.SizeCache 971 unknownFields protoimpl.UnknownFields 972 973 // Required. Resource name of the ProductSet to get. 974 // 975 // Format is: 976 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 977 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 978} 979 980func (x *GetProductSetRequest) Reset() { 981 *x = GetProductSetRequest{} 982 if protoimpl.UnsafeEnabled { 983 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[12] 984 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 985 ms.StoreMessageInfo(mi) 986 } 987} 988 989func (x *GetProductSetRequest) String() string { 990 return protoimpl.X.MessageStringOf(x) 991} 992 993func (*GetProductSetRequest) ProtoMessage() {} 994 995func (x *GetProductSetRequest) ProtoReflect() protoreflect.Message { 996 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[12] 997 if protoimpl.UnsafeEnabled && x != nil { 998 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 999 if ms.LoadMessageInfo() == nil { 1000 ms.StoreMessageInfo(mi) 1001 } 1002 return ms 1003 } 1004 return mi.MessageOf(x) 1005} 1006 1007// Deprecated: Use GetProductSetRequest.ProtoReflect.Descriptor instead. 1008func (*GetProductSetRequest) Descriptor() ([]byte, []int) { 1009 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{12} 1010} 1011 1012func (x *GetProductSetRequest) GetName() string { 1013 if x != nil { 1014 return x.Name 1015 } 1016 return "" 1017} 1018 1019// Request message for the `UpdateProductSet` method. 1020type UpdateProductSetRequest struct { 1021 state protoimpl.MessageState 1022 sizeCache protoimpl.SizeCache 1023 unknownFields protoimpl.UnknownFields 1024 1025 // Required. The ProductSet resource which replaces the one on the server. 1026 ProductSet *ProductSet `protobuf:"bytes,1,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"` 1027 // The [FieldMask][google.protobuf.FieldMask] that specifies which fields to 1028 // update. 1029 // If update_mask isn't specified, all mutable fields are to be updated. 1030 // Valid mask path is `display_name`. 1031 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 1032} 1033 1034func (x *UpdateProductSetRequest) Reset() { 1035 *x = UpdateProductSetRequest{} 1036 if protoimpl.UnsafeEnabled { 1037 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[13] 1038 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1039 ms.StoreMessageInfo(mi) 1040 } 1041} 1042 1043func (x *UpdateProductSetRequest) String() string { 1044 return protoimpl.X.MessageStringOf(x) 1045} 1046 1047func (*UpdateProductSetRequest) ProtoMessage() {} 1048 1049func (x *UpdateProductSetRequest) ProtoReflect() protoreflect.Message { 1050 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[13] 1051 if protoimpl.UnsafeEnabled && x != nil { 1052 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1053 if ms.LoadMessageInfo() == nil { 1054 ms.StoreMessageInfo(mi) 1055 } 1056 return ms 1057 } 1058 return mi.MessageOf(x) 1059} 1060 1061// Deprecated: Use UpdateProductSetRequest.ProtoReflect.Descriptor instead. 1062func (*UpdateProductSetRequest) Descriptor() ([]byte, []int) { 1063 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{13} 1064} 1065 1066func (x *UpdateProductSetRequest) GetProductSet() *ProductSet { 1067 if x != nil { 1068 return x.ProductSet 1069 } 1070 return nil 1071} 1072 1073func (x *UpdateProductSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 1074 if x != nil { 1075 return x.UpdateMask 1076 } 1077 return nil 1078} 1079 1080// Request message for the `DeleteProductSet` method. 1081type DeleteProductSetRequest struct { 1082 state protoimpl.MessageState 1083 sizeCache protoimpl.SizeCache 1084 unknownFields protoimpl.UnknownFields 1085 1086 // Required. Resource name of the ProductSet to delete. 1087 // 1088 // Format is: 1089 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1090 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1091} 1092 1093func (x *DeleteProductSetRequest) Reset() { 1094 *x = DeleteProductSetRequest{} 1095 if protoimpl.UnsafeEnabled { 1096 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[14] 1097 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1098 ms.StoreMessageInfo(mi) 1099 } 1100} 1101 1102func (x *DeleteProductSetRequest) String() string { 1103 return protoimpl.X.MessageStringOf(x) 1104} 1105 1106func (*DeleteProductSetRequest) ProtoMessage() {} 1107 1108func (x *DeleteProductSetRequest) ProtoReflect() protoreflect.Message { 1109 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[14] 1110 if protoimpl.UnsafeEnabled && x != nil { 1111 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1112 if ms.LoadMessageInfo() == nil { 1113 ms.StoreMessageInfo(mi) 1114 } 1115 return ms 1116 } 1117 return mi.MessageOf(x) 1118} 1119 1120// Deprecated: Use DeleteProductSetRequest.ProtoReflect.Descriptor instead. 1121func (*DeleteProductSetRequest) Descriptor() ([]byte, []int) { 1122 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{14} 1123} 1124 1125func (x *DeleteProductSetRequest) GetName() string { 1126 if x != nil { 1127 return x.Name 1128 } 1129 return "" 1130} 1131 1132// Request message for the `CreateReferenceImage` method. 1133type CreateReferenceImageRequest struct { 1134 state protoimpl.MessageState 1135 sizeCache protoimpl.SizeCache 1136 unknownFields protoimpl.UnknownFields 1137 1138 // Required. Resource name of the product in which to create the reference image. 1139 // 1140 // Format is 1141 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. 1142 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1143 // Required. The reference image to create. 1144 // If an image ID is specified, it is ignored. 1145 ReferenceImage *ReferenceImage `protobuf:"bytes,2,opt,name=reference_image,json=referenceImage,proto3" json:"reference_image,omitempty"` 1146 // A user-supplied resource id for the ReferenceImage to be added. If set, 1147 // the server will attempt to use this value as the resource id. If it is 1148 // already in use, an error is returned with code ALREADY_EXISTS. Must be at 1149 // most 128 characters long. It cannot contain the character `/`. 1150 ReferenceImageId string `protobuf:"bytes,3,opt,name=reference_image_id,json=referenceImageId,proto3" json:"reference_image_id,omitempty"` 1151} 1152 1153func (x *CreateReferenceImageRequest) Reset() { 1154 *x = CreateReferenceImageRequest{} 1155 if protoimpl.UnsafeEnabled { 1156 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[15] 1157 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1158 ms.StoreMessageInfo(mi) 1159 } 1160} 1161 1162func (x *CreateReferenceImageRequest) String() string { 1163 return protoimpl.X.MessageStringOf(x) 1164} 1165 1166func (*CreateReferenceImageRequest) ProtoMessage() {} 1167 1168func (x *CreateReferenceImageRequest) ProtoReflect() protoreflect.Message { 1169 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[15] 1170 if protoimpl.UnsafeEnabled && x != nil { 1171 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1172 if ms.LoadMessageInfo() == nil { 1173 ms.StoreMessageInfo(mi) 1174 } 1175 return ms 1176 } 1177 return mi.MessageOf(x) 1178} 1179 1180// Deprecated: Use CreateReferenceImageRequest.ProtoReflect.Descriptor instead. 1181func (*CreateReferenceImageRequest) Descriptor() ([]byte, []int) { 1182 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{15} 1183} 1184 1185func (x *CreateReferenceImageRequest) GetParent() string { 1186 if x != nil { 1187 return x.Parent 1188 } 1189 return "" 1190} 1191 1192func (x *CreateReferenceImageRequest) GetReferenceImage() *ReferenceImage { 1193 if x != nil { 1194 return x.ReferenceImage 1195 } 1196 return nil 1197} 1198 1199func (x *CreateReferenceImageRequest) GetReferenceImageId() string { 1200 if x != nil { 1201 return x.ReferenceImageId 1202 } 1203 return "" 1204} 1205 1206// Request message for the `ListReferenceImages` method. 1207type ListReferenceImagesRequest struct { 1208 state protoimpl.MessageState 1209 sizeCache protoimpl.SizeCache 1210 unknownFields protoimpl.UnknownFields 1211 1212 // Required. Resource name of the product containing the reference images. 1213 // 1214 // Format is 1215 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. 1216 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1217 // The maximum number of items to return. Default 10, maximum 100. 1218 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1219 // A token identifying a page of results to be returned. This is the value 1220 // of `nextPageToken` returned in a previous reference image list request. 1221 // 1222 // Defaults to the first page if not specified. 1223 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 1224} 1225 1226func (x *ListReferenceImagesRequest) Reset() { 1227 *x = ListReferenceImagesRequest{} 1228 if protoimpl.UnsafeEnabled { 1229 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[16] 1230 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1231 ms.StoreMessageInfo(mi) 1232 } 1233} 1234 1235func (x *ListReferenceImagesRequest) String() string { 1236 return protoimpl.X.MessageStringOf(x) 1237} 1238 1239func (*ListReferenceImagesRequest) ProtoMessage() {} 1240 1241func (x *ListReferenceImagesRequest) ProtoReflect() protoreflect.Message { 1242 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[16] 1243 if protoimpl.UnsafeEnabled && x != nil { 1244 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1245 if ms.LoadMessageInfo() == nil { 1246 ms.StoreMessageInfo(mi) 1247 } 1248 return ms 1249 } 1250 return mi.MessageOf(x) 1251} 1252 1253// Deprecated: Use ListReferenceImagesRequest.ProtoReflect.Descriptor instead. 1254func (*ListReferenceImagesRequest) Descriptor() ([]byte, []int) { 1255 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{16} 1256} 1257 1258func (x *ListReferenceImagesRequest) GetParent() string { 1259 if x != nil { 1260 return x.Parent 1261 } 1262 return "" 1263} 1264 1265func (x *ListReferenceImagesRequest) GetPageSize() int32 { 1266 if x != nil { 1267 return x.PageSize 1268 } 1269 return 0 1270} 1271 1272func (x *ListReferenceImagesRequest) GetPageToken() string { 1273 if x != nil { 1274 return x.PageToken 1275 } 1276 return "" 1277} 1278 1279// Response message for the `ListReferenceImages` method. 1280type ListReferenceImagesResponse struct { 1281 state protoimpl.MessageState 1282 sizeCache protoimpl.SizeCache 1283 unknownFields protoimpl.UnknownFields 1284 1285 // The list of reference images. 1286 ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"` 1287 // The maximum number of items to return. Default 10, maximum 100. 1288 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1289 // The next_page_token returned from a previous List request, if any. 1290 NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 1291} 1292 1293func (x *ListReferenceImagesResponse) Reset() { 1294 *x = ListReferenceImagesResponse{} 1295 if protoimpl.UnsafeEnabled { 1296 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[17] 1297 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1298 ms.StoreMessageInfo(mi) 1299 } 1300} 1301 1302func (x *ListReferenceImagesResponse) String() string { 1303 return protoimpl.X.MessageStringOf(x) 1304} 1305 1306func (*ListReferenceImagesResponse) ProtoMessage() {} 1307 1308func (x *ListReferenceImagesResponse) ProtoReflect() protoreflect.Message { 1309 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[17] 1310 if protoimpl.UnsafeEnabled && x != nil { 1311 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1312 if ms.LoadMessageInfo() == nil { 1313 ms.StoreMessageInfo(mi) 1314 } 1315 return ms 1316 } 1317 return mi.MessageOf(x) 1318} 1319 1320// Deprecated: Use ListReferenceImagesResponse.ProtoReflect.Descriptor instead. 1321func (*ListReferenceImagesResponse) Descriptor() ([]byte, []int) { 1322 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{17} 1323} 1324 1325func (x *ListReferenceImagesResponse) GetReferenceImages() []*ReferenceImage { 1326 if x != nil { 1327 return x.ReferenceImages 1328 } 1329 return nil 1330} 1331 1332func (x *ListReferenceImagesResponse) GetPageSize() int32 { 1333 if x != nil { 1334 return x.PageSize 1335 } 1336 return 0 1337} 1338 1339func (x *ListReferenceImagesResponse) GetNextPageToken() string { 1340 if x != nil { 1341 return x.NextPageToken 1342 } 1343 return "" 1344} 1345 1346// Request message for the `GetReferenceImage` method. 1347type GetReferenceImageRequest struct { 1348 state protoimpl.MessageState 1349 sizeCache protoimpl.SizeCache 1350 unknownFields protoimpl.UnknownFields 1351 1352 // Required. The resource name of the ReferenceImage to get. 1353 // 1354 // Format is: 1355 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. 1356 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1357} 1358 1359func (x *GetReferenceImageRequest) Reset() { 1360 *x = GetReferenceImageRequest{} 1361 if protoimpl.UnsafeEnabled { 1362 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[18] 1363 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1364 ms.StoreMessageInfo(mi) 1365 } 1366} 1367 1368func (x *GetReferenceImageRequest) String() string { 1369 return protoimpl.X.MessageStringOf(x) 1370} 1371 1372func (*GetReferenceImageRequest) ProtoMessage() {} 1373 1374func (x *GetReferenceImageRequest) ProtoReflect() protoreflect.Message { 1375 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[18] 1376 if protoimpl.UnsafeEnabled && x != nil { 1377 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1378 if ms.LoadMessageInfo() == nil { 1379 ms.StoreMessageInfo(mi) 1380 } 1381 return ms 1382 } 1383 return mi.MessageOf(x) 1384} 1385 1386// Deprecated: Use GetReferenceImageRequest.ProtoReflect.Descriptor instead. 1387func (*GetReferenceImageRequest) Descriptor() ([]byte, []int) { 1388 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{18} 1389} 1390 1391func (x *GetReferenceImageRequest) GetName() string { 1392 if x != nil { 1393 return x.Name 1394 } 1395 return "" 1396} 1397 1398// Request message for the `DeleteReferenceImage` method. 1399type DeleteReferenceImageRequest struct { 1400 state protoimpl.MessageState 1401 sizeCache protoimpl.SizeCache 1402 unknownFields protoimpl.UnknownFields 1403 1404 // Required. The resource name of the reference image to delete. 1405 // 1406 // Format is: 1407 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID` 1408 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1409} 1410 1411func (x *DeleteReferenceImageRequest) Reset() { 1412 *x = DeleteReferenceImageRequest{} 1413 if protoimpl.UnsafeEnabled { 1414 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[19] 1415 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1416 ms.StoreMessageInfo(mi) 1417 } 1418} 1419 1420func (x *DeleteReferenceImageRequest) String() string { 1421 return protoimpl.X.MessageStringOf(x) 1422} 1423 1424func (*DeleteReferenceImageRequest) ProtoMessage() {} 1425 1426func (x *DeleteReferenceImageRequest) ProtoReflect() protoreflect.Message { 1427 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[19] 1428 if protoimpl.UnsafeEnabled && x != nil { 1429 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1430 if ms.LoadMessageInfo() == nil { 1431 ms.StoreMessageInfo(mi) 1432 } 1433 return ms 1434 } 1435 return mi.MessageOf(x) 1436} 1437 1438// Deprecated: Use DeleteReferenceImageRequest.ProtoReflect.Descriptor instead. 1439func (*DeleteReferenceImageRequest) Descriptor() ([]byte, []int) { 1440 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{19} 1441} 1442 1443func (x *DeleteReferenceImageRequest) GetName() string { 1444 if x != nil { 1445 return x.Name 1446 } 1447 return "" 1448} 1449 1450// Request message for the `AddProductToProductSet` method. 1451type AddProductToProductSetRequest struct { 1452 state protoimpl.MessageState 1453 sizeCache protoimpl.SizeCache 1454 unknownFields protoimpl.UnknownFields 1455 1456 // Required. The resource name for the ProductSet to modify. 1457 // 1458 // Format is: 1459 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1460 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1461 // Required. The resource name for the Product to be added to this ProductSet. 1462 // 1463 // Format is: 1464 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 1465 Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` 1466} 1467 1468func (x *AddProductToProductSetRequest) Reset() { 1469 *x = AddProductToProductSetRequest{} 1470 if protoimpl.UnsafeEnabled { 1471 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[20] 1472 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1473 ms.StoreMessageInfo(mi) 1474 } 1475} 1476 1477func (x *AddProductToProductSetRequest) String() string { 1478 return protoimpl.X.MessageStringOf(x) 1479} 1480 1481func (*AddProductToProductSetRequest) ProtoMessage() {} 1482 1483func (x *AddProductToProductSetRequest) ProtoReflect() protoreflect.Message { 1484 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[20] 1485 if protoimpl.UnsafeEnabled && x != nil { 1486 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1487 if ms.LoadMessageInfo() == nil { 1488 ms.StoreMessageInfo(mi) 1489 } 1490 return ms 1491 } 1492 return mi.MessageOf(x) 1493} 1494 1495// Deprecated: Use AddProductToProductSetRequest.ProtoReflect.Descriptor instead. 1496func (*AddProductToProductSetRequest) Descriptor() ([]byte, []int) { 1497 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{20} 1498} 1499 1500func (x *AddProductToProductSetRequest) GetName() string { 1501 if x != nil { 1502 return x.Name 1503 } 1504 return "" 1505} 1506 1507func (x *AddProductToProductSetRequest) GetProduct() string { 1508 if x != nil { 1509 return x.Product 1510 } 1511 return "" 1512} 1513 1514// Request message for the `RemoveProductFromProductSet` method. 1515type RemoveProductFromProductSetRequest struct { 1516 state protoimpl.MessageState 1517 sizeCache protoimpl.SizeCache 1518 unknownFields protoimpl.UnknownFields 1519 1520 // Required. The resource name for the ProductSet to modify. 1521 // 1522 // Format is: 1523 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1524 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1525 // Required. The resource name for the Product to be removed from this ProductSet. 1526 // 1527 // Format is: 1528 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 1529 Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` 1530} 1531 1532func (x *RemoveProductFromProductSetRequest) Reset() { 1533 *x = RemoveProductFromProductSetRequest{} 1534 if protoimpl.UnsafeEnabled { 1535 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[21] 1536 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1537 ms.StoreMessageInfo(mi) 1538 } 1539} 1540 1541func (x *RemoveProductFromProductSetRequest) String() string { 1542 return protoimpl.X.MessageStringOf(x) 1543} 1544 1545func (*RemoveProductFromProductSetRequest) ProtoMessage() {} 1546 1547func (x *RemoveProductFromProductSetRequest) ProtoReflect() protoreflect.Message { 1548 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[21] 1549 if protoimpl.UnsafeEnabled && x != nil { 1550 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1551 if ms.LoadMessageInfo() == nil { 1552 ms.StoreMessageInfo(mi) 1553 } 1554 return ms 1555 } 1556 return mi.MessageOf(x) 1557} 1558 1559// Deprecated: Use RemoveProductFromProductSetRequest.ProtoReflect.Descriptor instead. 1560func (*RemoveProductFromProductSetRequest) Descriptor() ([]byte, []int) { 1561 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{21} 1562} 1563 1564func (x *RemoveProductFromProductSetRequest) GetName() string { 1565 if x != nil { 1566 return x.Name 1567 } 1568 return "" 1569} 1570 1571func (x *RemoveProductFromProductSetRequest) GetProduct() string { 1572 if x != nil { 1573 return x.Product 1574 } 1575 return "" 1576} 1577 1578// Request message for the `ListProductsInProductSet` method. 1579type ListProductsInProductSetRequest struct { 1580 state protoimpl.MessageState 1581 sizeCache protoimpl.SizeCache 1582 unknownFields protoimpl.UnknownFields 1583 1584 // Required. The ProductSet resource for which to retrieve Products. 1585 // 1586 // Format is: 1587 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1588 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1589 // The maximum number of items to return. Default 10, maximum 100. 1590 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1591 // The next_page_token returned from a previous List request, if any. 1592 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 1593} 1594 1595func (x *ListProductsInProductSetRequest) Reset() { 1596 *x = ListProductsInProductSetRequest{} 1597 if protoimpl.UnsafeEnabled { 1598 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[22] 1599 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1600 ms.StoreMessageInfo(mi) 1601 } 1602} 1603 1604func (x *ListProductsInProductSetRequest) String() string { 1605 return protoimpl.X.MessageStringOf(x) 1606} 1607 1608func (*ListProductsInProductSetRequest) ProtoMessage() {} 1609 1610func (x *ListProductsInProductSetRequest) ProtoReflect() protoreflect.Message { 1611 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[22] 1612 if protoimpl.UnsafeEnabled && x != nil { 1613 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1614 if ms.LoadMessageInfo() == nil { 1615 ms.StoreMessageInfo(mi) 1616 } 1617 return ms 1618 } 1619 return mi.MessageOf(x) 1620} 1621 1622// Deprecated: Use ListProductsInProductSetRequest.ProtoReflect.Descriptor instead. 1623func (*ListProductsInProductSetRequest) Descriptor() ([]byte, []int) { 1624 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{22} 1625} 1626 1627func (x *ListProductsInProductSetRequest) GetName() string { 1628 if x != nil { 1629 return x.Name 1630 } 1631 return "" 1632} 1633 1634func (x *ListProductsInProductSetRequest) GetPageSize() int32 { 1635 if x != nil { 1636 return x.PageSize 1637 } 1638 return 0 1639} 1640 1641func (x *ListProductsInProductSetRequest) GetPageToken() string { 1642 if x != nil { 1643 return x.PageToken 1644 } 1645 return "" 1646} 1647 1648// Response message for the `ListProductsInProductSet` method. 1649type ListProductsInProductSetResponse struct { 1650 state protoimpl.MessageState 1651 sizeCache protoimpl.SizeCache 1652 unknownFields protoimpl.UnknownFields 1653 1654 // The list of Products. 1655 Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` 1656 // Token to retrieve the next page of results, or empty if there are no more 1657 // results in the list. 1658 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 1659} 1660 1661func (x *ListProductsInProductSetResponse) Reset() { 1662 *x = ListProductsInProductSetResponse{} 1663 if protoimpl.UnsafeEnabled { 1664 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[23] 1665 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1666 ms.StoreMessageInfo(mi) 1667 } 1668} 1669 1670func (x *ListProductsInProductSetResponse) String() string { 1671 return protoimpl.X.MessageStringOf(x) 1672} 1673 1674func (*ListProductsInProductSetResponse) ProtoMessage() {} 1675 1676func (x *ListProductsInProductSetResponse) ProtoReflect() protoreflect.Message { 1677 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[23] 1678 if protoimpl.UnsafeEnabled && x != nil { 1679 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1680 if ms.LoadMessageInfo() == nil { 1681 ms.StoreMessageInfo(mi) 1682 } 1683 return ms 1684 } 1685 return mi.MessageOf(x) 1686} 1687 1688// Deprecated: Use ListProductsInProductSetResponse.ProtoReflect.Descriptor instead. 1689func (*ListProductsInProductSetResponse) Descriptor() ([]byte, []int) { 1690 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{23} 1691} 1692 1693func (x *ListProductsInProductSetResponse) GetProducts() []*Product { 1694 if x != nil { 1695 return x.Products 1696 } 1697 return nil 1698} 1699 1700func (x *ListProductsInProductSetResponse) GetNextPageToken() string { 1701 if x != nil { 1702 return x.NextPageToken 1703 } 1704 return "" 1705} 1706 1707// The Google Cloud Storage location for a csv file which preserves a list of 1708// ImportProductSetRequests in each line. 1709type ImportProductSetsGcsSource struct { 1710 state protoimpl.MessageState 1711 sizeCache protoimpl.SizeCache 1712 unknownFields protoimpl.UnknownFields 1713 1714 // The Google Cloud Storage URI of the input csv file. 1715 // 1716 // The URI must start with `gs://`. 1717 // 1718 // The format of the input csv file should be one image per line. 1719 // In each line, there are 8 columns. 1720 // 1721 // 1. image-uri 1722 // 2. image-id 1723 // 3. product-set-id 1724 // 4. product-id 1725 // 5. product-category 1726 // 6. product-display-name 1727 // 7. labels 1728 // 8. bounding-poly 1729 // 1730 // The `image-uri`, `product-set-id`, `product-id`, and `product-category` 1731 // columns are required. All other columns are optional. 1732 // 1733 // If the `ProductSet` or `Product` specified by the `product-set-id` and 1734 // `product-id` values does not exist, then the system will create a new 1735 // `ProductSet` or `Product` for the image. In this case, the 1736 // `product-display-name` column refers to 1737 // [display_name][google.cloud.vision.v1.Product.display_name], the 1738 // `product-category` column refers to 1739 // [product_category][google.cloud.vision.v1.Product.product_category], and the 1740 // `labels` column refers to [product_labels][google.cloud.vision.v1.Product.product_labels]. 1741 // 1742 // The `image-id` column is optional but must be unique if provided. If it is 1743 // empty, the system will automatically assign a unique id to the image. 1744 // 1745 // The `product-display-name` column is optional. If it is empty, the system 1746 // sets the [display_name][google.cloud.vision.v1.Product.display_name] field for the product to a 1747 // space (" "). You can update the `display_name` later by using the API. 1748 // 1749 // If a `Product` with the specified `product-id` already exists, then the 1750 // system ignores the `product-display-name`, `product-category`, and `labels` 1751 // columns. 1752 // 1753 // The `labels` column (optional) is a line containing a list of 1754 // comma-separated key-value pairs, in the following format: 1755 // 1756 // "key_1=value_1,key_2=value_2,...,key_n=value_n" 1757 // 1758 // The `bounding-poly` column (optional) identifies one region of 1759 // interest from the image in the same manner as `CreateReferenceImage`. If 1760 // you do not specify the `bounding-poly` column, then the system will try to 1761 // detect regions of interest automatically. 1762 // 1763 // At most one `bounding-poly` column is allowed per line. If the image 1764 // contains multiple regions of interest, add a line to the CSV file that 1765 // includes the same product information, and the `bounding-poly` values for 1766 // each region of interest. 1767 // 1768 // The `bounding-poly` column must contain an even number of comma-separated 1769 // numbers, in the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Use 1770 // non-negative integers for absolute bounding polygons, and float values 1771 // in [0, 1] for normalized bounding polygons. 1772 // 1773 // The system will resize the image if the image resolution is too 1774 // large to process (larger than 20MP). 1775 CsvFileUri string `protobuf:"bytes,1,opt,name=csv_file_uri,json=csvFileUri,proto3" json:"csv_file_uri,omitempty"` 1776} 1777 1778func (x *ImportProductSetsGcsSource) Reset() { 1779 *x = ImportProductSetsGcsSource{} 1780 if protoimpl.UnsafeEnabled { 1781 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[24] 1782 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1783 ms.StoreMessageInfo(mi) 1784 } 1785} 1786 1787func (x *ImportProductSetsGcsSource) String() string { 1788 return protoimpl.X.MessageStringOf(x) 1789} 1790 1791func (*ImportProductSetsGcsSource) ProtoMessage() {} 1792 1793func (x *ImportProductSetsGcsSource) ProtoReflect() protoreflect.Message { 1794 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[24] 1795 if protoimpl.UnsafeEnabled && x != nil { 1796 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1797 if ms.LoadMessageInfo() == nil { 1798 ms.StoreMessageInfo(mi) 1799 } 1800 return ms 1801 } 1802 return mi.MessageOf(x) 1803} 1804 1805// Deprecated: Use ImportProductSetsGcsSource.ProtoReflect.Descriptor instead. 1806func (*ImportProductSetsGcsSource) Descriptor() ([]byte, []int) { 1807 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{24} 1808} 1809 1810func (x *ImportProductSetsGcsSource) GetCsvFileUri() string { 1811 if x != nil { 1812 return x.CsvFileUri 1813 } 1814 return "" 1815} 1816 1817// The input content for the `ImportProductSets` method. 1818type ImportProductSetsInputConfig struct { 1819 state protoimpl.MessageState 1820 sizeCache protoimpl.SizeCache 1821 unknownFields protoimpl.UnknownFields 1822 1823 // The source of the input. 1824 // 1825 // Types that are assignable to Source: 1826 // *ImportProductSetsInputConfig_GcsSource 1827 Source isImportProductSetsInputConfig_Source `protobuf_oneof:"source"` 1828} 1829 1830func (x *ImportProductSetsInputConfig) Reset() { 1831 *x = ImportProductSetsInputConfig{} 1832 if protoimpl.UnsafeEnabled { 1833 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25] 1834 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1835 ms.StoreMessageInfo(mi) 1836 } 1837} 1838 1839func (x *ImportProductSetsInputConfig) String() string { 1840 return protoimpl.X.MessageStringOf(x) 1841} 1842 1843func (*ImportProductSetsInputConfig) ProtoMessage() {} 1844 1845func (x *ImportProductSetsInputConfig) ProtoReflect() protoreflect.Message { 1846 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25] 1847 if protoimpl.UnsafeEnabled && x != nil { 1848 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1849 if ms.LoadMessageInfo() == nil { 1850 ms.StoreMessageInfo(mi) 1851 } 1852 return ms 1853 } 1854 return mi.MessageOf(x) 1855} 1856 1857// Deprecated: Use ImportProductSetsInputConfig.ProtoReflect.Descriptor instead. 1858func (*ImportProductSetsInputConfig) Descriptor() ([]byte, []int) { 1859 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{25} 1860} 1861 1862func (m *ImportProductSetsInputConfig) GetSource() isImportProductSetsInputConfig_Source { 1863 if m != nil { 1864 return m.Source 1865 } 1866 return nil 1867} 1868 1869func (x *ImportProductSetsInputConfig) GetGcsSource() *ImportProductSetsGcsSource { 1870 if x, ok := x.GetSource().(*ImportProductSetsInputConfig_GcsSource); ok { 1871 return x.GcsSource 1872 } 1873 return nil 1874} 1875 1876type isImportProductSetsInputConfig_Source interface { 1877 isImportProductSetsInputConfig_Source() 1878} 1879 1880type ImportProductSetsInputConfig_GcsSource struct { 1881 // The Google Cloud Storage location for a csv file which preserves a list 1882 // of ImportProductSetRequests in each line. 1883 GcsSource *ImportProductSetsGcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"` 1884} 1885 1886func (*ImportProductSetsInputConfig_GcsSource) isImportProductSetsInputConfig_Source() {} 1887 1888// Request message for the `ImportProductSets` method. 1889type ImportProductSetsRequest struct { 1890 state protoimpl.MessageState 1891 sizeCache protoimpl.SizeCache 1892 unknownFields protoimpl.UnknownFields 1893 1894 // Required. The project in which the ProductSets should be imported. 1895 // 1896 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 1897 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1898 // Required. The input content for the list of requests. 1899 InputConfig *ImportProductSetsInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"` 1900} 1901 1902func (x *ImportProductSetsRequest) Reset() { 1903 *x = ImportProductSetsRequest{} 1904 if protoimpl.UnsafeEnabled { 1905 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[26] 1906 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1907 ms.StoreMessageInfo(mi) 1908 } 1909} 1910 1911func (x *ImportProductSetsRequest) String() string { 1912 return protoimpl.X.MessageStringOf(x) 1913} 1914 1915func (*ImportProductSetsRequest) ProtoMessage() {} 1916 1917func (x *ImportProductSetsRequest) ProtoReflect() protoreflect.Message { 1918 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[26] 1919 if protoimpl.UnsafeEnabled && x != nil { 1920 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1921 if ms.LoadMessageInfo() == nil { 1922 ms.StoreMessageInfo(mi) 1923 } 1924 return ms 1925 } 1926 return mi.MessageOf(x) 1927} 1928 1929// Deprecated: Use ImportProductSetsRequest.ProtoReflect.Descriptor instead. 1930func (*ImportProductSetsRequest) Descriptor() ([]byte, []int) { 1931 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{26} 1932} 1933 1934func (x *ImportProductSetsRequest) GetParent() string { 1935 if x != nil { 1936 return x.Parent 1937 } 1938 return "" 1939} 1940 1941func (x *ImportProductSetsRequest) GetInputConfig() *ImportProductSetsInputConfig { 1942 if x != nil { 1943 return x.InputConfig 1944 } 1945 return nil 1946} 1947 1948// Response message for the `ImportProductSets` method. 1949// 1950// This message is returned by the 1951// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] method in the returned 1952// [google.longrunning.Operation.response][google.longrunning.Operation.response] field. 1953type ImportProductSetsResponse struct { 1954 state protoimpl.MessageState 1955 sizeCache protoimpl.SizeCache 1956 unknownFields protoimpl.UnknownFields 1957 1958 // The list of reference_images that are imported successfully. 1959 ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"` 1960 // The rpc status for each ImportProductSet request, including both successes 1961 // and errors. 1962 // 1963 // The number of statuses here matches the number of lines in the csv file, 1964 // and statuses[i] stores the success or failure status of processing the i-th 1965 // line of the csv, starting from line 0. 1966 Statuses []*status.Status `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"` 1967} 1968 1969func (x *ImportProductSetsResponse) Reset() { 1970 *x = ImportProductSetsResponse{} 1971 if protoimpl.UnsafeEnabled { 1972 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[27] 1973 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1974 ms.StoreMessageInfo(mi) 1975 } 1976} 1977 1978func (x *ImportProductSetsResponse) String() string { 1979 return protoimpl.X.MessageStringOf(x) 1980} 1981 1982func (*ImportProductSetsResponse) ProtoMessage() {} 1983 1984func (x *ImportProductSetsResponse) ProtoReflect() protoreflect.Message { 1985 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[27] 1986 if protoimpl.UnsafeEnabled && x != nil { 1987 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1988 if ms.LoadMessageInfo() == nil { 1989 ms.StoreMessageInfo(mi) 1990 } 1991 return ms 1992 } 1993 return mi.MessageOf(x) 1994} 1995 1996// Deprecated: Use ImportProductSetsResponse.ProtoReflect.Descriptor instead. 1997func (*ImportProductSetsResponse) Descriptor() ([]byte, []int) { 1998 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{27} 1999} 2000 2001func (x *ImportProductSetsResponse) GetReferenceImages() []*ReferenceImage { 2002 if x != nil { 2003 return x.ReferenceImages 2004 } 2005 return nil 2006} 2007 2008func (x *ImportProductSetsResponse) GetStatuses() []*status.Status { 2009 if x != nil { 2010 return x.Statuses 2011 } 2012 return nil 2013} 2014 2015// Metadata for the batch operations such as the current state. 2016// 2017// This is included in the `metadata` field of the `Operation` returned by the 2018// `GetOperation` call of the `google::longrunning::Operations` service. 2019type BatchOperationMetadata struct { 2020 state protoimpl.MessageState 2021 sizeCache protoimpl.SizeCache 2022 unknownFields protoimpl.UnknownFields 2023 2024 // The current state of the batch operation. 2025 State BatchOperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.vision.v1.BatchOperationMetadata_State" json:"state,omitempty"` 2026 // The time when the batch request was submitted to the server. 2027 SubmitTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"` 2028 // The time when the batch request is finished and 2029 // [google.longrunning.Operation.done][google.longrunning.Operation.done] is set to true. 2030 EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 2031} 2032 2033func (x *BatchOperationMetadata) Reset() { 2034 *x = BatchOperationMetadata{} 2035 if protoimpl.UnsafeEnabled { 2036 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[28] 2037 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2038 ms.StoreMessageInfo(mi) 2039 } 2040} 2041 2042func (x *BatchOperationMetadata) String() string { 2043 return protoimpl.X.MessageStringOf(x) 2044} 2045 2046func (*BatchOperationMetadata) ProtoMessage() {} 2047 2048func (x *BatchOperationMetadata) ProtoReflect() protoreflect.Message { 2049 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[28] 2050 if protoimpl.UnsafeEnabled && x != nil { 2051 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2052 if ms.LoadMessageInfo() == nil { 2053 ms.StoreMessageInfo(mi) 2054 } 2055 return ms 2056 } 2057 return mi.MessageOf(x) 2058} 2059 2060// Deprecated: Use BatchOperationMetadata.ProtoReflect.Descriptor instead. 2061func (*BatchOperationMetadata) Descriptor() ([]byte, []int) { 2062 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{28} 2063} 2064 2065func (x *BatchOperationMetadata) GetState() BatchOperationMetadata_State { 2066 if x != nil { 2067 return x.State 2068 } 2069 return BatchOperationMetadata_STATE_UNSPECIFIED 2070} 2071 2072func (x *BatchOperationMetadata) GetSubmitTime() *timestamppb.Timestamp { 2073 if x != nil { 2074 return x.SubmitTime 2075 } 2076 return nil 2077} 2078 2079func (x *BatchOperationMetadata) GetEndTime() *timestamppb.Timestamp { 2080 if x != nil { 2081 return x.EndTime 2082 } 2083 return nil 2084} 2085 2086// Config to control which ProductSet contains the Products to be deleted. 2087type ProductSetPurgeConfig struct { 2088 state protoimpl.MessageState 2089 sizeCache protoimpl.SizeCache 2090 unknownFields protoimpl.UnknownFields 2091 2092 // The ProductSet that contains the Products to delete. If a Product is a 2093 // member of product_set_id in addition to other ProductSets, the Product will 2094 // still be deleted. 2095 ProductSetId string `protobuf:"bytes,1,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"` 2096} 2097 2098func (x *ProductSetPurgeConfig) Reset() { 2099 *x = ProductSetPurgeConfig{} 2100 if protoimpl.UnsafeEnabled { 2101 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[29] 2102 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2103 ms.StoreMessageInfo(mi) 2104 } 2105} 2106 2107func (x *ProductSetPurgeConfig) String() string { 2108 return protoimpl.X.MessageStringOf(x) 2109} 2110 2111func (*ProductSetPurgeConfig) ProtoMessage() {} 2112 2113func (x *ProductSetPurgeConfig) ProtoReflect() protoreflect.Message { 2114 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[29] 2115 if protoimpl.UnsafeEnabled && x != nil { 2116 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2117 if ms.LoadMessageInfo() == nil { 2118 ms.StoreMessageInfo(mi) 2119 } 2120 return ms 2121 } 2122 return mi.MessageOf(x) 2123} 2124 2125// Deprecated: Use ProductSetPurgeConfig.ProtoReflect.Descriptor instead. 2126func (*ProductSetPurgeConfig) Descriptor() ([]byte, []int) { 2127 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{29} 2128} 2129 2130func (x *ProductSetPurgeConfig) GetProductSetId() string { 2131 if x != nil { 2132 return x.ProductSetId 2133 } 2134 return "" 2135} 2136 2137// Request message for the `PurgeProducts` method. 2138type PurgeProductsRequest struct { 2139 state protoimpl.MessageState 2140 sizeCache protoimpl.SizeCache 2141 unknownFields protoimpl.UnknownFields 2142 2143 // The Products to delete. 2144 // 2145 // Types that are assignable to Target: 2146 // *PurgeProductsRequest_ProductSetPurgeConfig 2147 // *PurgeProductsRequest_DeleteOrphanProducts 2148 Target isPurgeProductsRequest_Target `protobuf_oneof:"target"` 2149 // Required. The project and location in which the Products should be deleted. 2150 // 2151 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 2152 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 2153 // The default value is false. Override this value to true to actually perform 2154 // the purge. 2155 Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` 2156} 2157 2158func (x *PurgeProductsRequest) Reset() { 2159 *x = PurgeProductsRequest{} 2160 if protoimpl.UnsafeEnabled { 2161 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30] 2162 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2163 ms.StoreMessageInfo(mi) 2164 } 2165} 2166 2167func (x *PurgeProductsRequest) String() string { 2168 return protoimpl.X.MessageStringOf(x) 2169} 2170 2171func (*PurgeProductsRequest) ProtoMessage() {} 2172 2173func (x *PurgeProductsRequest) ProtoReflect() protoreflect.Message { 2174 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30] 2175 if protoimpl.UnsafeEnabled && x != nil { 2176 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2177 if ms.LoadMessageInfo() == nil { 2178 ms.StoreMessageInfo(mi) 2179 } 2180 return ms 2181 } 2182 return mi.MessageOf(x) 2183} 2184 2185// Deprecated: Use PurgeProductsRequest.ProtoReflect.Descriptor instead. 2186func (*PurgeProductsRequest) Descriptor() ([]byte, []int) { 2187 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{30} 2188} 2189 2190func (m *PurgeProductsRequest) GetTarget() isPurgeProductsRequest_Target { 2191 if m != nil { 2192 return m.Target 2193 } 2194 return nil 2195} 2196 2197func (x *PurgeProductsRequest) GetProductSetPurgeConfig() *ProductSetPurgeConfig { 2198 if x, ok := x.GetTarget().(*PurgeProductsRequest_ProductSetPurgeConfig); ok { 2199 return x.ProductSetPurgeConfig 2200 } 2201 return nil 2202} 2203 2204func (x *PurgeProductsRequest) GetDeleteOrphanProducts() bool { 2205 if x, ok := x.GetTarget().(*PurgeProductsRequest_DeleteOrphanProducts); ok { 2206 return x.DeleteOrphanProducts 2207 } 2208 return false 2209} 2210 2211func (x *PurgeProductsRequest) GetParent() string { 2212 if x != nil { 2213 return x.Parent 2214 } 2215 return "" 2216} 2217 2218func (x *PurgeProductsRequest) GetForce() bool { 2219 if x != nil { 2220 return x.Force 2221 } 2222 return false 2223} 2224 2225type isPurgeProductsRequest_Target interface { 2226 isPurgeProductsRequest_Target() 2227} 2228 2229type PurgeProductsRequest_ProductSetPurgeConfig struct { 2230 // Specify which ProductSet contains the Products to be deleted. 2231 ProductSetPurgeConfig *ProductSetPurgeConfig `protobuf:"bytes,2,opt,name=product_set_purge_config,json=productSetPurgeConfig,proto3,oneof"` 2232} 2233 2234type PurgeProductsRequest_DeleteOrphanProducts struct { 2235 // If delete_orphan_products is true, all Products that are not in any 2236 // ProductSet will be deleted. 2237 DeleteOrphanProducts bool `protobuf:"varint,3,opt,name=delete_orphan_products,json=deleteOrphanProducts,proto3,oneof"` 2238} 2239 2240func (*PurgeProductsRequest_ProductSetPurgeConfig) isPurgeProductsRequest_Target() {} 2241 2242func (*PurgeProductsRequest_DeleteOrphanProducts) isPurgeProductsRequest_Target() {} 2243 2244// A product label represented as a key-value pair. 2245type Product_KeyValue struct { 2246 state protoimpl.MessageState 2247 sizeCache protoimpl.SizeCache 2248 unknownFields protoimpl.UnknownFields 2249 2250 // The key of the label attached to the product. Cannot be empty and cannot 2251 // exceed 128 bytes. 2252 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 2253 // The value of the label attached to the product. Cannot be empty and 2254 // cannot exceed 128 bytes. 2255 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 2256} 2257 2258func (x *Product_KeyValue) Reset() { 2259 *x = Product_KeyValue{} 2260 if protoimpl.UnsafeEnabled { 2261 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[31] 2262 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2263 ms.StoreMessageInfo(mi) 2264 } 2265} 2266 2267func (x *Product_KeyValue) String() string { 2268 return protoimpl.X.MessageStringOf(x) 2269} 2270 2271func (*Product_KeyValue) ProtoMessage() {} 2272 2273func (x *Product_KeyValue) ProtoReflect() protoreflect.Message { 2274 mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[31] 2275 if protoimpl.UnsafeEnabled && x != nil { 2276 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2277 if ms.LoadMessageInfo() == nil { 2278 ms.StoreMessageInfo(mi) 2279 } 2280 return ms 2281 } 2282 return mi.MessageOf(x) 2283} 2284 2285// Deprecated: Use Product_KeyValue.ProtoReflect.Descriptor instead. 2286func (*Product_KeyValue) Descriptor() ([]byte, []int) { 2287 return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{0, 0} 2288} 2289 2290func (x *Product_KeyValue) GetKey() string { 2291 if x != nil { 2292 return x.Key 2293 } 2294 return "" 2295} 2296 2297func (x *Product_KeyValue) GetValue() string { 2298 if x != nil { 2299 return x.Value 2300 } 2301 return "" 2302} 2303 2304var File_google_cloud_vision_v1_product_search_service_proto protoreflect.FileDescriptor 2305 2306var file_google_cloud_vision_v1_product_search_service_proto_rawDesc = []byte{ 2307 0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 2308 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2309 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 2310 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2311 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 2312 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 2313 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 2314 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 2315 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 2316 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 2317 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 2318 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2319 0x1a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 2320 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 2321 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 2322 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 2323 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 2324 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 2325 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2326 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 2327 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 2328 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 2329 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 2330 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 2331 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2332 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 2333 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 2334 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 2335 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 2336 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 2337 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x70, 0x72, 2338 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 2339 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2340 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0e, 0x70, 0x72, 2341 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 2342 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2343 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 2344 0x75, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, 2345 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x32, 0x0a, 0x08, 0x4b, 2346 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 2347 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 2348 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 2349 0x5e, 0xea, 0x41, 0x5b, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 2350 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 2351 0x75, 0x63, 0x74, 0x12, 0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 2352 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2353 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 2354 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x22, 2355 0xa7, 0x02, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x12, 2356 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 2357 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 2358 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 2359 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 2360 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2361 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 2362 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 2363 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 2364 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 2365 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 2366 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 2367 0x68, 0xea, 0x41, 0x65, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 2368 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 2369 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 2370 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2371 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 2372 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 2373 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x98, 0x02, 0x0a, 0x0e, 0x52, 0x65, 2374 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 2375 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2376 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 2377 0x41, 0x02, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x50, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 2378 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 2379 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 2380 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 2381 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62, 0x6f, 0x75, 0x6e, 2382 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x73, 0x3a, 0x88, 0x01, 0xea, 0x41, 0x84, 0x01, 2383 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 2384 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2385 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 2386 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2387 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 2388 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2389 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 2390 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 2391 0x61, 0x67, 0x65, 0x7d, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 2392 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 2393 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 2394 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 2395 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 2396 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 2397 0x12, 0x3e, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 2398 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2399 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 2400 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2401 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 2402 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 2403 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 2404 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 2405 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 2406 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2407 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 2408 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 2409 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 2410 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 2411 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 2412 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2413 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 2414 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 2415 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2416 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2417 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 2418 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 2419 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 2420 0x6b, 0x65, 0x6e, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2421 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2422 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 2423 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 2424 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 2425 0x61, 0x6d, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 2426 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x07, 2427 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 2428 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2429 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 2430 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 2431 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 2432 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2433 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 2434 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c, 2435 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2436 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 2437 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2438 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 2439 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xcc, 0x01, 0x0a, 2440 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2441 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 2442 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 2443 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2444 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 2445 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x70, 2446 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 2447 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2448 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2449 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 2450 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2451 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 2452 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x16, 2453 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 2454 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 2455 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 2456 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2457 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 2458 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 2459 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 2460 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 2461 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 2462 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2463 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 2464 0x65, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 2465 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2466 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 2467 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x70, 0x72, 0x6f, 2468 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 2469 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 2470 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 2471 0x22, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2472 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2473 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 2474 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 2475 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2476 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 2477 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 2478 0x73, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 2479 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2480 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 2481 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 2482 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 2483 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 2484 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2485 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 2486 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x17, 0x44, 0x65, 0x6c, 2487 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 2488 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 2489 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 2490 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 2491 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 2492 0x6d, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 2493 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 2494 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 2495 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 2496 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 2497 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 2498 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 2499 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 2500 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2501 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 2502 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 2503 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 2504 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 2505 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 2506 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 2507 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 2508 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 2509 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 2510 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 2511 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 2512 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 2513 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 2514 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 2515 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 2516 0xb5, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2517 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 2518 0x51, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 2519 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2520 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2521 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 2522 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 2523 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 2524 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 2525 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 2526 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 2527 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 2528 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 2529 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 2530 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 2531 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 2532 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 2533 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 2534 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 2535 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 2536 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 2537 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 2538 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 2539 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x50, 0x72, 2540 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2541 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2542 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 2543 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 2544 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2545 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2546 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 2547 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 2548 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 2549 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 2550 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 2551 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 2552 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 2553 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 2554 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 2555 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 2556 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 2557 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 2558 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 2559 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x9b, 0x01, 2560 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 2561 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2562 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 2563 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2564 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 2565 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 2566 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 2567 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 2568 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 2569 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x20, 2570 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 2571 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 2572 0x12, 0x3b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 2573 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2574 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 2575 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 2576 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 2577 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 2578 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 2579 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 2580 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x73, 0x76, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 2581 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x73, 0x76, 0x46, 0x69, 2582 0x6c, 0x65, 0x55, 0x72, 0x69, 0x22, 0x7d, 0x0a, 0x1c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 2583 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 2584 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, 2585 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2586 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2587 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2588 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 2589 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 2590 0x75, 0x72, 0x63, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 2591 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2592 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2593 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2594 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 2595 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 2596 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 2597 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 2598 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2599 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2600 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2601 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 2602 0x69, 0x67, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 2603 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 2604 0x12, 0x51, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 2605 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 2606 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2607 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 2608 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 2609 0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 2610 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 2611 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 2612 0x73, 0x65, 0x73, 0x22, 0xb3, 0x02, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 2613 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4a, 2614 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 2615 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2616 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 2617 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 2618 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x75, 2619 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 2620 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2621 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x75, 0x62, 2622 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 2623 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2624 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 2625 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59, 2626 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 2627 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 2628 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 2629 0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x0a, 2630 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 2631 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0x3d, 0x0a, 0x15, 0x50, 0x72, 0x6f, 2632 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 2633 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 2634 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 2635 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x9b, 0x02, 0x0a, 0x14, 0x50, 0x75, 0x72, 2636 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2637 0x74, 0x12, 0x68, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 2638 0x5f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 2639 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2640 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 2641 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 2642 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2643 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x16, 0x64, 2644 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 2645 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x14, 0x64, 2646 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 2647 0x63, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 2648 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 2649 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 2650 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 2651 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 2652 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 2653 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x32, 0xf4, 0x1d, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 2654 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xd1, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 2655 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x2e, 2656 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2657 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 2658 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 2659 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2660 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2661 0x65, 0x74, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 2662 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 2663 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 2664 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 2665 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 2666 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x70, 0x72, 2667 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xb4, 0x01, 0x0a, 2668 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 2669 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2670 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2671 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2672 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2673 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2674 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 2675 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 2676 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 2677 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 2678 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 2679 0x65, 0x6e, 0x74, 0x12, 0xa1, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 2680 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2681 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 2682 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 2683 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2684 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 2685 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 2686 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 2687 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 2688 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 2689 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd3, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 2690 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x2e, 0x67, 2691 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 2692 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 2693 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 2694 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2695 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2696 0x74, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 2697 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 2698 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 2699 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2700 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 2701 0x73, 0x65, 0x74, 0xda, 0x41, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 2702 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x9b, 0x01, 2703 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2704 0x65, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2705 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 2706 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 2707 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 2708 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 2709 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 2710 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 2711 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2712 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x0d, 2713 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 2714 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2715 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 2716 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 2717 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2718 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x59, 0x82, 0xd3, 2719 0xe4, 0x93, 0x02, 0x37, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 2720 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 2721 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2722 0x74, 0x73, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61, 2723 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f, 2724 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xa8, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 2725 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2726 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2727 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 2728 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2729 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 2730 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 2731 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 2732 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 2733 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 2734 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 2735 0x6e, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2736 0x74, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2737 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 2738 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 2739 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 2740 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x3b, 0x82, 2741 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 2742 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 2743 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 2744 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xbb, 0x01, 0x0a, 0x0d, 0x55, 2745 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 0x67, 2746 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 2747 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 2748 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 2749 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2750 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 2751 0x93, 0x02, 0x3f, 0x32, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2752 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 2753 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 2754 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 2755 0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 2756 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 2757 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 2758 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2759 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2760 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2761 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 2762 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x2a, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 2763 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 2764 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2765 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf9, 0x01, 2766 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2767 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2768 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 2769 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 2770 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 2771 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2772 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 2773 0x61, 0x67, 0x65, 0x22, 0x83, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x22, 0x3e, 0x2f, 0x76, 2774 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 2775 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 2776 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 2777 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x0f, 0x72, 0x65, 2778 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0xda, 0x41, 0x29, 2779 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2780 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2781 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xb2, 0x01, 0x0a, 0x14, 0x44, 0x65, 2782 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 2783 0x67, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2784 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 2785 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 2786 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2787 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 2788 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x2a, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 2789 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 2790 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2791 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 2792 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xcf, 2793 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2794 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2795 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 2796 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 2797 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 2798 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2799 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2800 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 2801 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 2802 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 2803 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 2804 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2805 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 2806 0x12, 0xbc, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2807 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2808 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 2809 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 2810 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2811 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2812 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 2813 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 2814 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 2815 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2816 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 2817 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 2818 0xbd, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 2819 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 2820 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2821 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 2822 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2823 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2824 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 2825 0x3f, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 2826 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2827 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 2828 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 2829 0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 2830 0xca, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2831 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 2832 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 2833 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 2834 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2835 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 2836 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 2837 0x70, 0x74, 0x79, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x31, 2838 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 2839 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 2840 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d, 2841 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 2842 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0xd6, 0x01, 0x0a, 2843 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 2844 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2845 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2846 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 2847 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 2848 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2849 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 2850 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2851 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 2852 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 2853 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2854 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2855 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 2856 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf4, 0x01, 0x0a, 0x11, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 2857 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 2858 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2859 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 2860 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 2861 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 2862 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x01, 0x82, 2863 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 2864 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 2865 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2866 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 2867 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 2868 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xca, 0x41, 0x33, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 2869 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 2870 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 2871 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd6, 0x01, 0x0a, 2872 0x0d, 0x50, 0x75, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x2c, 2873 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2874 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 2875 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 2876 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 2877 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x82, 0xd3, 0xe4, 2878 0x93, 0x02, 0x37, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 2879 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 2880 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2881 0x73, 0x3a, 0x70, 0x75, 0x72, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 2882 0x65, 0x6e, 0x74, 0xca, 0x41, 0x2f, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2883 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x16, 0x42, 2884 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 2885 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x76, 0xca, 0x41, 0x15, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2886 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 2887 0x41, 0x5b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 2888 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 2889 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 2890 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 2891 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 2892 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x81, 0x01, 2893 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2894 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x19, 0x50, 0x72, 2895 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 2896 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2897 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 2898 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 2899 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 2900 0x3b, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04, 0x47, 0x43, 0x56, 2901 0x4e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2902} 2903 2904var ( 2905 file_google_cloud_vision_v1_product_search_service_proto_rawDescOnce sync.Once 2906 file_google_cloud_vision_v1_product_search_service_proto_rawDescData = file_google_cloud_vision_v1_product_search_service_proto_rawDesc 2907) 2908 2909func file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP() []byte { 2910 file_google_cloud_vision_v1_product_search_service_proto_rawDescOnce.Do(func() { 2911 file_google_cloud_vision_v1_product_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_vision_v1_product_search_service_proto_rawDescData) 2912 }) 2913 return file_google_cloud_vision_v1_product_search_service_proto_rawDescData 2914} 2915 2916var file_google_cloud_vision_v1_product_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 2917var file_google_cloud_vision_v1_product_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 32) 2918var file_google_cloud_vision_v1_product_search_service_proto_goTypes = []interface{}{ 2919 (BatchOperationMetadata_State)(0), // 0: google.cloud.vision.v1.BatchOperationMetadata.State 2920 (*Product)(nil), // 1: google.cloud.vision.v1.Product 2921 (*ProductSet)(nil), // 2: google.cloud.vision.v1.ProductSet 2922 (*ReferenceImage)(nil), // 3: google.cloud.vision.v1.ReferenceImage 2923 (*CreateProductRequest)(nil), // 4: google.cloud.vision.v1.CreateProductRequest 2924 (*ListProductsRequest)(nil), // 5: google.cloud.vision.v1.ListProductsRequest 2925 (*ListProductsResponse)(nil), // 6: google.cloud.vision.v1.ListProductsResponse 2926 (*GetProductRequest)(nil), // 7: google.cloud.vision.v1.GetProductRequest 2927 (*UpdateProductRequest)(nil), // 8: google.cloud.vision.v1.UpdateProductRequest 2928 (*DeleteProductRequest)(nil), // 9: google.cloud.vision.v1.DeleteProductRequest 2929 (*CreateProductSetRequest)(nil), // 10: google.cloud.vision.v1.CreateProductSetRequest 2930 (*ListProductSetsRequest)(nil), // 11: google.cloud.vision.v1.ListProductSetsRequest 2931 (*ListProductSetsResponse)(nil), // 12: google.cloud.vision.v1.ListProductSetsResponse 2932 (*GetProductSetRequest)(nil), // 13: google.cloud.vision.v1.GetProductSetRequest 2933 (*UpdateProductSetRequest)(nil), // 14: google.cloud.vision.v1.UpdateProductSetRequest 2934 (*DeleteProductSetRequest)(nil), // 15: google.cloud.vision.v1.DeleteProductSetRequest 2935 (*CreateReferenceImageRequest)(nil), // 16: google.cloud.vision.v1.CreateReferenceImageRequest 2936 (*ListReferenceImagesRequest)(nil), // 17: google.cloud.vision.v1.ListReferenceImagesRequest 2937 (*ListReferenceImagesResponse)(nil), // 18: google.cloud.vision.v1.ListReferenceImagesResponse 2938 (*GetReferenceImageRequest)(nil), // 19: google.cloud.vision.v1.GetReferenceImageRequest 2939 (*DeleteReferenceImageRequest)(nil), // 20: google.cloud.vision.v1.DeleteReferenceImageRequest 2940 (*AddProductToProductSetRequest)(nil), // 21: google.cloud.vision.v1.AddProductToProductSetRequest 2941 (*RemoveProductFromProductSetRequest)(nil), // 22: google.cloud.vision.v1.RemoveProductFromProductSetRequest 2942 (*ListProductsInProductSetRequest)(nil), // 23: google.cloud.vision.v1.ListProductsInProductSetRequest 2943 (*ListProductsInProductSetResponse)(nil), // 24: google.cloud.vision.v1.ListProductsInProductSetResponse 2944 (*ImportProductSetsGcsSource)(nil), // 25: google.cloud.vision.v1.ImportProductSetsGcsSource 2945 (*ImportProductSetsInputConfig)(nil), // 26: google.cloud.vision.v1.ImportProductSetsInputConfig 2946 (*ImportProductSetsRequest)(nil), // 27: google.cloud.vision.v1.ImportProductSetsRequest 2947 (*ImportProductSetsResponse)(nil), // 28: google.cloud.vision.v1.ImportProductSetsResponse 2948 (*BatchOperationMetadata)(nil), // 29: google.cloud.vision.v1.BatchOperationMetadata 2949 (*ProductSetPurgeConfig)(nil), // 30: google.cloud.vision.v1.ProductSetPurgeConfig 2950 (*PurgeProductsRequest)(nil), // 31: google.cloud.vision.v1.PurgeProductsRequest 2951 (*Product_KeyValue)(nil), // 32: google.cloud.vision.v1.Product.KeyValue 2952 (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp 2953 (*status.Status)(nil), // 34: google.rpc.Status 2954 (*BoundingPoly)(nil), // 35: google.cloud.vision.v1.BoundingPoly 2955 (*fieldmaskpb.FieldMask)(nil), // 36: google.protobuf.FieldMask 2956 (*emptypb.Empty)(nil), // 37: google.protobuf.Empty 2957 (*longrunning.Operation)(nil), // 38: google.longrunning.Operation 2958} 2959var file_google_cloud_vision_v1_product_search_service_proto_depIdxs = []int32{ 2960 32, // 0: google.cloud.vision.v1.Product.product_labels:type_name -> google.cloud.vision.v1.Product.KeyValue 2961 33, // 1: google.cloud.vision.v1.ProductSet.index_time:type_name -> google.protobuf.Timestamp 2962 34, // 2: google.cloud.vision.v1.ProductSet.index_error:type_name -> google.rpc.Status 2963 35, // 3: google.cloud.vision.v1.ReferenceImage.bounding_polys:type_name -> google.cloud.vision.v1.BoundingPoly 2964 1, // 4: google.cloud.vision.v1.CreateProductRequest.product:type_name -> google.cloud.vision.v1.Product 2965 1, // 5: google.cloud.vision.v1.ListProductsResponse.products:type_name -> google.cloud.vision.v1.Product 2966 1, // 6: google.cloud.vision.v1.UpdateProductRequest.product:type_name -> google.cloud.vision.v1.Product 2967 36, // 7: google.cloud.vision.v1.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask 2968 2, // 8: google.cloud.vision.v1.CreateProductSetRequest.product_set:type_name -> google.cloud.vision.v1.ProductSet 2969 2, // 9: google.cloud.vision.v1.ListProductSetsResponse.product_sets:type_name -> google.cloud.vision.v1.ProductSet 2970 2, // 10: google.cloud.vision.v1.UpdateProductSetRequest.product_set:type_name -> google.cloud.vision.v1.ProductSet 2971 36, // 11: google.cloud.vision.v1.UpdateProductSetRequest.update_mask:type_name -> google.protobuf.FieldMask 2972 3, // 12: google.cloud.vision.v1.CreateReferenceImageRequest.reference_image:type_name -> google.cloud.vision.v1.ReferenceImage 2973 3, // 13: google.cloud.vision.v1.ListReferenceImagesResponse.reference_images:type_name -> google.cloud.vision.v1.ReferenceImage 2974 1, // 14: google.cloud.vision.v1.ListProductsInProductSetResponse.products:type_name -> google.cloud.vision.v1.Product 2975 25, // 15: google.cloud.vision.v1.ImportProductSetsInputConfig.gcs_source:type_name -> google.cloud.vision.v1.ImportProductSetsGcsSource 2976 26, // 16: google.cloud.vision.v1.ImportProductSetsRequest.input_config:type_name -> google.cloud.vision.v1.ImportProductSetsInputConfig 2977 3, // 17: google.cloud.vision.v1.ImportProductSetsResponse.reference_images:type_name -> google.cloud.vision.v1.ReferenceImage 2978 34, // 18: google.cloud.vision.v1.ImportProductSetsResponse.statuses:type_name -> google.rpc.Status 2979 0, // 19: google.cloud.vision.v1.BatchOperationMetadata.state:type_name -> google.cloud.vision.v1.BatchOperationMetadata.State 2980 33, // 20: google.cloud.vision.v1.BatchOperationMetadata.submit_time:type_name -> google.protobuf.Timestamp 2981 33, // 21: google.cloud.vision.v1.BatchOperationMetadata.end_time:type_name -> google.protobuf.Timestamp 2982 30, // 22: google.cloud.vision.v1.PurgeProductsRequest.product_set_purge_config:type_name -> google.cloud.vision.v1.ProductSetPurgeConfig 2983 10, // 23: google.cloud.vision.v1.ProductSearch.CreateProductSet:input_type -> google.cloud.vision.v1.CreateProductSetRequest 2984 11, // 24: google.cloud.vision.v1.ProductSearch.ListProductSets:input_type -> google.cloud.vision.v1.ListProductSetsRequest 2985 13, // 25: google.cloud.vision.v1.ProductSearch.GetProductSet:input_type -> google.cloud.vision.v1.GetProductSetRequest 2986 14, // 26: google.cloud.vision.v1.ProductSearch.UpdateProductSet:input_type -> google.cloud.vision.v1.UpdateProductSetRequest 2987 15, // 27: google.cloud.vision.v1.ProductSearch.DeleteProductSet:input_type -> google.cloud.vision.v1.DeleteProductSetRequest 2988 4, // 28: google.cloud.vision.v1.ProductSearch.CreateProduct:input_type -> google.cloud.vision.v1.CreateProductRequest 2989 5, // 29: google.cloud.vision.v1.ProductSearch.ListProducts:input_type -> google.cloud.vision.v1.ListProductsRequest 2990 7, // 30: google.cloud.vision.v1.ProductSearch.GetProduct:input_type -> google.cloud.vision.v1.GetProductRequest 2991 8, // 31: google.cloud.vision.v1.ProductSearch.UpdateProduct:input_type -> google.cloud.vision.v1.UpdateProductRequest 2992 9, // 32: google.cloud.vision.v1.ProductSearch.DeleteProduct:input_type -> google.cloud.vision.v1.DeleteProductRequest 2993 16, // 33: google.cloud.vision.v1.ProductSearch.CreateReferenceImage:input_type -> google.cloud.vision.v1.CreateReferenceImageRequest 2994 20, // 34: google.cloud.vision.v1.ProductSearch.DeleteReferenceImage:input_type -> google.cloud.vision.v1.DeleteReferenceImageRequest 2995 17, // 35: google.cloud.vision.v1.ProductSearch.ListReferenceImages:input_type -> google.cloud.vision.v1.ListReferenceImagesRequest 2996 19, // 36: google.cloud.vision.v1.ProductSearch.GetReferenceImage:input_type -> google.cloud.vision.v1.GetReferenceImageRequest 2997 21, // 37: google.cloud.vision.v1.ProductSearch.AddProductToProductSet:input_type -> google.cloud.vision.v1.AddProductToProductSetRequest 2998 22, // 38: google.cloud.vision.v1.ProductSearch.RemoveProductFromProductSet:input_type -> google.cloud.vision.v1.RemoveProductFromProductSetRequest 2999 23, // 39: google.cloud.vision.v1.ProductSearch.ListProductsInProductSet:input_type -> google.cloud.vision.v1.ListProductsInProductSetRequest 3000 27, // 40: google.cloud.vision.v1.ProductSearch.ImportProductSets:input_type -> google.cloud.vision.v1.ImportProductSetsRequest 3001 31, // 41: google.cloud.vision.v1.ProductSearch.PurgeProducts:input_type -> google.cloud.vision.v1.PurgeProductsRequest 3002 2, // 42: google.cloud.vision.v1.ProductSearch.CreateProductSet:output_type -> google.cloud.vision.v1.ProductSet 3003 12, // 43: google.cloud.vision.v1.ProductSearch.ListProductSets:output_type -> google.cloud.vision.v1.ListProductSetsResponse 3004 2, // 44: google.cloud.vision.v1.ProductSearch.GetProductSet:output_type -> google.cloud.vision.v1.ProductSet 3005 2, // 45: google.cloud.vision.v1.ProductSearch.UpdateProductSet:output_type -> google.cloud.vision.v1.ProductSet 3006 37, // 46: google.cloud.vision.v1.ProductSearch.DeleteProductSet:output_type -> google.protobuf.Empty 3007 1, // 47: google.cloud.vision.v1.ProductSearch.CreateProduct:output_type -> google.cloud.vision.v1.Product 3008 6, // 48: google.cloud.vision.v1.ProductSearch.ListProducts:output_type -> google.cloud.vision.v1.ListProductsResponse 3009 1, // 49: google.cloud.vision.v1.ProductSearch.GetProduct:output_type -> google.cloud.vision.v1.Product 3010 1, // 50: google.cloud.vision.v1.ProductSearch.UpdateProduct:output_type -> google.cloud.vision.v1.Product 3011 37, // 51: google.cloud.vision.v1.ProductSearch.DeleteProduct:output_type -> google.protobuf.Empty 3012 3, // 52: google.cloud.vision.v1.ProductSearch.CreateReferenceImage:output_type -> google.cloud.vision.v1.ReferenceImage 3013 37, // 53: google.cloud.vision.v1.ProductSearch.DeleteReferenceImage:output_type -> google.protobuf.Empty 3014 18, // 54: google.cloud.vision.v1.ProductSearch.ListReferenceImages:output_type -> google.cloud.vision.v1.ListReferenceImagesResponse 3015 3, // 55: google.cloud.vision.v1.ProductSearch.GetReferenceImage:output_type -> google.cloud.vision.v1.ReferenceImage 3016 37, // 56: google.cloud.vision.v1.ProductSearch.AddProductToProductSet:output_type -> google.protobuf.Empty 3017 37, // 57: google.cloud.vision.v1.ProductSearch.RemoveProductFromProductSet:output_type -> google.protobuf.Empty 3018 24, // 58: google.cloud.vision.v1.ProductSearch.ListProductsInProductSet:output_type -> google.cloud.vision.v1.ListProductsInProductSetResponse 3019 38, // 59: google.cloud.vision.v1.ProductSearch.ImportProductSets:output_type -> google.longrunning.Operation 3020 38, // 60: google.cloud.vision.v1.ProductSearch.PurgeProducts:output_type -> google.longrunning.Operation 3021 42, // [42:61] is the sub-list for method output_type 3022 23, // [23:42] is the sub-list for method input_type 3023 23, // [23:23] is the sub-list for extension type_name 3024 23, // [23:23] is the sub-list for extension extendee 3025 0, // [0:23] is the sub-list for field type_name 3026} 3027 3028func init() { file_google_cloud_vision_v1_product_search_service_proto_init() } 3029func file_google_cloud_vision_v1_product_search_service_proto_init() { 3030 if File_google_cloud_vision_v1_product_search_service_proto != nil { 3031 return 3032 } 3033 file_google_cloud_vision_v1_geometry_proto_init() 3034 if !protoimpl.UnsafeEnabled { 3035 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 3036 switch v := v.(*Product); i { 3037 case 0: 3038 return &v.state 3039 case 1: 3040 return &v.sizeCache 3041 case 2: 3042 return &v.unknownFields 3043 default: 3044 return nil 3045 } 3046 } 3047 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 3048 switch v := v.(*ProductSet); i { 3049 case 0: 3050 return &v.state 3051 case 1: 3052 return &v.sizeCache 3053 case 2: 3054 return &v.unknownFields 3055 default: 3056 return nil 3057 } 3058 } 3059 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 3060 switch v := v.(*ReferenceImage); i { 3061 case 0: 3062 return &v.state 3063 case 1: 3064 return &v.sizeCache 3065 case 2: 3066 return &v.unknownFields 3067 default: 3068 return nil 3069 } 3070 } 3071 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 3072 switch v := v.(*CreateProductRequest); i { 3073 case 0: 3074 return &v.state 3075 case 1: 3076 return &v.sizeCache 3077 case 2: 3078 return &v.unknownFields 3079 default: 3080 return nil 3081 } 3082 } 3083 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 3084 switch v := v.(*ListProductsRequest); i { 3085 case 0: 3086 return &v.state 3087 case 1: 3088 return &v.sizeCache 3089 case 2: 3090 return &v.unknownFields 3091 default: 3092 return nil 3093 } 3094 } 3095 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 3096 switch v := v.(*ListProductsResponse); i { 3097 case 0: 3098 return &v.state 3099 case 1: 3100 return &v.sizeCache 3101 case 2: 3102 return &v.unknownFields 3103 default: 3104 return nil 3105 } 3106 } 3107 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 3108 switch v := v.(*GetProductRequest); i { 3109 case 0: 3110 return &v.state 3111 case 1: 3112 return &v.sizeCache 3113 case 2: 3114 return &v.unknownFields 3115 default: 3116 return nil 3117 } 3118 } 3119 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 3120 switch v := v.(*UpdateProductRequest); i { 3121 case 0: 3122 return &v.state 3123 case 1: 3124 return &v.sizeCache 3125 case 2: 3126 return &v.unknownFields 3127 default: 3128 return nil 3129 } 3130 } 3131 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 3132 switch v := v.(*DeleteProductRequest); i { 3133 case 0: 3134 return &v.state 3135 case 1: 3136 return &v.sizeCache 3137 case 2: 3138 return &v.unknownFields 3139 default: 3140 return nil 3141 } 3142 } 3143 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 3144 switch v := v.(*CreateProductSetRequest); i { 3145 case 0: 3146 return &v.state 3147 case 1: 3148 return &v.sizeCache 3149 case 2: 3150 return &v.unknownFields 3151 default: 3152 return nil 3153 } 3154 } 3155 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 3156 switch v := v.(*ListProductSetsRequest); i { 3157 case 0: 3158 return &v.state 3159 case 1: 3160 return &v.sizeCache 3161 case 2: 3162 return &v.unknownFields 3163 default: 3164 return nil 3165 } 3166 } 3167 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 3168 switch v := v.(*ListProductSetsResponse); i { 3169 case 0: 3170 return &v.state 3171 case 1: 3172 return &v.sizeCache 3173 case 2: 3174 return &v.unknownFields 3175 default: 3176 return nil 3177 } 3178 } 3179 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 3180 switch v := v.(*GetProductSetRequest); i { 3181 case 0: 3182 return &v.state 3183 case 1: 3184 return &v.sizeCache 3185 case 2: 3186 return &v.unknownFields 3187 default: 3188 return nil 3189 } 3190 } 3191 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 3192 switch v := v.(*UpdateProductSetRequest); i { 3193 case 0: 3194 return &v.state 3195 case 1: 3196 return &v.sizeCache 3197 case 2: 3198 return &v.unknownFields 3199 default: 3200 return nil 3201 } 3202 } 3203 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 3204 switch v := v.(*DeleteProductSetRequest); i { 3205 case 0: 3206 return &v.state 3207 case 1: 3208 return &v.sizeCache 3209 case 2: 3210 return &v.unknownFields 3211 default: 3212 return nil 3213 } 3214 } 3215 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 3216 switch v := v.(*CreateReferenceImageRequest); i { 3217 case 0: 3218 return &v.state 3219 case 1: 3220 return &v.sizeCache 3221 case 2: 3222 return &v.unknownFields 3223 default: 3224 return nil 3225 } 3226 } 3227 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 3228 switch v := v.(*ListReferenceImagesRequest); i { 3229 case 0: 3230 return &v.state 3231 case 1: 3232 return &v.sizeCache 3233 case 2: 3234 return &v.unknownFields 3235 default: 3236 return nil 3237 } 3238 } 3239 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 3240 switch v := v.(*ListReferenceImagesResponse); i { 3241 case 0: 3242 return &v.state 3243 case 1: 3244 return &v.sizeCache 3245 case 2: 3246 return &v.unknownFields 3247 default: 3248 return nil 3249 } 3250 } 3251 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 3252 switch v := v.(*GetReferenceImageRequest); i { 3253 case 0: 3254 return &v.state 3255 case 1: 3256 return &v.sizeCache 3257 case 2: 3258 return &v.unknownFields 3259 default: 3260 return nil 3261 } 3262 } 3263 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 3264 switch v := v.(*DeleteReferenceImageRequest); i { 3265 case 0: 3266 return &v.state 3267 case 1: 3268 return &v.sizeCache 3269 case 2: 3270 return &v.unknownFields 3271 default: 3272 return nil 3273 } 3274 } 3275 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 3276 switch v := v.(*AddProductToProductSetRequest); i { 3277 case 0: 3278 return &v.state 3279 case 1: 3280 return &v.sizeCache 3281 case 2: 3282 return &v.unknownFields 3283 default: 3284 return nil 3285 } 3286 } 3287 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 3288 switch v := v.(*RemoveProductFromProductSetRequest); i { 3289 case 0: 3290 return &v.state 3291 case 1: 3292 return &v.sizeCache 3293 case 2: 3294 return &v.unknownFields 3295 default: 3296 return nil 3297 } 3298 } 3299 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { 3300 switch v := v.(*ListProductsInProductSetRequest); i { 3301 case 0: 3302 return &v.state 3303 case 1: 3304 return &v.sizeCache 3305 case 2: 3306 return &v.unknownFields 3307 default: 3308 return nil 3309 } 3310 } 3311 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { 3312 switch v := v.(*ListProductsInProductSetResponse); i { 3313 case 0: 3314 return &v.state 3315 case 1: 3316 return &v.sizeCache 3317 case 2: 3318 return &v.unknownFields 3319 default: 3320 return nil 3321 } 3322 } 3323 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 3324 switch v := v.(*ImportProductSetsGcsSource); i { 3325 case 0: 3326 return &v.state 3327 case 1: 3328 return &v.sizeCache 3329 case 2: 3330 return &v.unknownFields 3331 default: 3332 return nil 3333 } 3334 } 3335 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { 3336 switch v := v.(*ImportProductSetsInputConfig); i { 3337 case 0: 3338 return &v.state 3339 case 1: 3340 return &v.sizeCache 3341 case 2: 3342 return &v.unknownFields 3343 default: 3344 return nil 3345 } 3346 } 3347 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { 3348 switch v := v.(*ImportProductSetsRequest); i { 3349 case 0: 3350 return &v.state 3351 case 1: 3352 return &v.sizeCache 3353 case 2: 3354 return &v.unknownFields 3355 default: 3356 return nil 3357 } 3358 } 3359 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 3360 switch v := v.(*ImportProductSetsResponse); i { 3361 case 0: 3362 return &v.state 3363 case 1: 3364 return &v.sizeCache 3365 case 2: 3366 return &v.unknownFields 3367 default: 3368 return nil 3369 } 3370 } 3371 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 3372 switch v := v.(*BatchOperationMetadata); i { 3373 case 0: 3374 return &v.state 3375 case 1: 3376 return &v.sizeCache 3377 case 2: 3378 return &v.unknownFields 3379 default: 3380 return nil 3381 } 3382 } 3383 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { 3384 switch v := v.(*ProductSetPurgeConfig); i { 3385 case 0: 3386 return &v.state 3387 case 1: 3388 return &v.sizeCache 3389 case 2: 3390 return &v.unknownFields 3391 default: 3392 return nil 3393 } 3394 } 3395 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { 3396 switch v := v.(*PurgeProductsRequest); i { 3397 case 0: 3398 return &v.state 3399 case 1: 3400 return &v.sizeCache 3401 case 2: 3402 return &v.unknownFields 3403 default: 3404 return nil 3405 } 3406 } 3407 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { 3408 switch v := v.(*Product_KeyValue); i { 3409 case 0: 3410 return &v.state 3411 case 1: 3412 return &v.sizeCache 3413 case 2: 3414 return &v.unknownFields 3415 default: 3416 return nil 3417 } 3418 } 3419 } 3420 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25].OneofWrappers = []interface{}{ 3421 (*ImportProductSetsInputConfig_GcsSource)(nil), 3422 } 3423 file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30].OneofWrappers = []interface{}{ 3424 (*PurgeProductsRequest_ProductSetPurgeConfig)(nil), 3425 (*PurgeProductsRequest_DeleteOrphanProducts)(nil), 3426 } 3427 type x struct{} 3428 out := protoimpl.TypeBuilder{ 3429 File: protoimpl.DescBuilder{ 3430 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 3431 RawDescriptor: file_google_cloud_vision_v1_product_search_service_proto_rawDesc, 3432 NumEnums: 1, 3433 NumMessages: 32, 3434 NumExtensions: 0, 3435 NumServices: 1, 3436 }, 3437 GoTypes: file_google_cloud_vision_v1_product_search_service_proto_goTypes, 3438 DependencyIndexes: file_google_cloud_vision_v1_product_search_service_proto_depIdxs, 3439 EnumInfos: file_google_cloud_vision_v1_product_search_service_proto_enumTypes, 3440 MessageInfos: file_google_cloud_vision_v1_product_search_service_proto_msgTypes, 3441 }.Build() 3442 File_google_cloud_vision_v1_product_search_service_proto = out.File 3443 file_google_cloud_vision_v1_product_search_service_proto_rawDesc = nil 3444 file_google_cloud_vision_v1_product_search_service_proto_goTypes = nil 3445 file_google_cloud_vision_v1_product_search_service_proto_depIdxs = nil 3446} 3447 3448// Reference imports to suppress errors if they are not otherwise used. 3449var _ context.Context 3450var _ grpc.ClientConnInterface 3451 3452// This is a compile-time assertion to ensure that this generated file 3453// is compatible with the grpc package it is being compiled against. 3454const _ = grpc.SupportPackageIsVersion6 3455 3456// ProductSearchClient is the client API for ProductSearch service. 3457// 3458// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 3459type ProductSearchClient interface { 3460 // Creates and returns a new ProductSet resource. 3461 // 3462 // Possible errors: 3463 // 3464 // * Returns INVALID_ARGUMENT if display_name is missing, or is longer than 3465 // 4096 characters. 3466 CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) 3467 // Lists ProductSets in an unspecified order. 3468 // 3469 // Possible errors: 3470 // 3471 // * Returns INVALID_ARGUMENT if page_size is greater than 100, or less 3472 // than 1. 3473 ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) 3474 // Gets information associated with a ProductSet. 3475 // 3476 // Possible errors: 3477 // 3478 // * Returns NOT_FOUND if the ProductSet does not exist. 3479 GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) 3480 // Makes changes to a ProductSet resource. 3481 // Only display_name can be updated currently. 3482 // 3483 // Possible errors: 3484 // 3485 // * Returns NOT_FOUND if the ProductSet does not exist. 3486 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but 3487 // missing from the request or longer than 4096 characters. 3488 UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) 3489 // Permanently deletes a ProductSet. Products and ReferenceImages in the 3490 // ProductSet are not deleted. 3491 // 3492 // The actual image files are not deleted from Google Cloud Storage. 3493 DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3494 // Creates and returns a new product resource. 3495 // 3496 // Possible errors: 3497 // 3498 // * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 3499 // characters. 3500 // * Returns INVALID_ARGUMENT if description is longer than 4096 characters. 3501 // * Returns INVALID_ARGUMENT if product_category is missing or invalid. 3502 CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) 3503 // Lists products in an unspecified order. 3504 // 3505 // Possible errors: 3506 // 3507 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3508 ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) 3509 // Gets information associated with a Product. 3510 // 3511 // Possible errors: 3512 // 3513 // * Returns NOT_FOUND if the Product does not exist. 3514 GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) 3515 // Makes changes to a Product resource. 3516 // Only the `display_name`, `description`, and `labels` fields can be updated 3517 // right now. 3518 // 3519 // If labels are updated, the change will not be reflected in queries until 3520 // the next index time. 3521 // 3522 // Possible errors: 3523 // 3524 // * Returns NOT_FOUND if the Product does not exist. 3525 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but is 3526 // missing from the request or longer than 4096 characters. 3527 // * Returns INVALID_ARGUMENT if description is present in update_mask but is 3528 // longer than 4096 characters. 3529 // * Returns INVALID_ARGUMENT if product_category is present in update_mask. 3530 UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) 3531 // Permanently deletes a product and its reference images. 3532 // 3533 // Metadata of the product and all its images will be deleted right away, but 3534 // search queries against ProductSets containing the product may still work 3535 // until all related caches are refreshed. 3536 DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3537 // Creates and returns a new ReferenceImage resource. 3538 // 3539 // The `bounding_poly` field is optional. If `bounding_poly` is not specified, 3540 // the system will try to detect regions of interest in the image that are 3541 // compatible with the product_category on the parent product. If it is 3542 // specified, detection is ALWAYS skipped. The system converts polygons into 3543 // non-rotated rectangles. 3544 // 3545 // Note that the pipeline will resize the image if the image resolution is too 3546 // large to process (above 50MP). 3547 // 3548 // Possible errors: 3549 // 3550 // * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 3551 // characters. 3552 // * Returns INVALID_ARGUMENT if the product does not exist. 3553 // * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing 3554 // compatible with the parent product's product_category is detected. 3555 // * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons. 3556 CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) 3557 // Permanently deletes a reference image. 3558 // 3559 // The image metadata will be deleted right away, but search queries 3560 // against ProductSets containing the image may still work until all related 3561 // caches are refreshed. 3562 // 3563 // The actual image files are not deleted from Google Cloud Storage. 3564 DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3565 // Lists reference images. 3566 // 3567 // Possible errors: 3568 // 3569 // * Returns NOT_FOUND if the parent product does not exist. 3570 // * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less 3571 // than 1. 3572 ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) 3573 // Gets information associated with a ReferenceImage. 3574 // 3575 // Possible errors: 3576 // 3577 // * Returns NOT_FOUND if the specified image does not exist. 3578 GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) 3579 // Adds a Product to the specified ProductSet. If the Product is already 3580 // present, no change is made. 3581 // 3582 // One Product can be added to at most 100 ProductSets. 3583 // 3584 // Possible errors: 3585 // 3586 // * Returns NOT_FOUND if the Product or the ProductSet doesn't exist. 3587 AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3588 // Removes a Product from the specified ProductSet. 3589 RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3590 // Lists the Products in a ProductSet, in an unspecified order. If the 3591 // ProductSet does not exist, the products field of the response will be 3592 // empty. 3593 // 3594 // Possible errors: 3595 // 3596 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3597 ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) 3598 // Asynchronous API that imports a list of reference images to specified 3599 // product sets based on a list of image information. 3600 // 3601 // The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the 3602 // progress and results of the request. 3603 // `Operation.metadata` contains `BatchOperationMetadata`. (progress) 3604 // `Operation.response` contains `ImportProductSetsResponse`. (results) 3605 // 3606 // The input source of this method is a csv file on Google Cloud Storage. 3607 // For the format of the csv file please see 3608 // [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1.ImportProductSetsGcsSource.csv_file_uri]. 3609 ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) 3610 // Asynchronous API to delete all Products in a ProductSet or all Products 3611 // that are in no ProductSet. 3612 // 3613 // If a Product is a member of the specified ProductSet in addition to other 3614 // ProductSets, the Product will still be deleted. 3615 // 3616 // It is recommended to not delete the specified ProductSet until after this 3617 // operation has completed. It is also recommended to not add any of the 3618 // Products involved in the batch delete to a new ProductSet while this 3619 // operation is running because those Products may still end up deleted. 3620 // 3621 // It's not possible to undo the PurgeProducts operation. Therefore, it is 3622 // recommended to keep the csv files used in ImportProductSets (if that was 3623 // how you originally built the Product Set) before starting PurgeProducts, in 3624 // case you need to re-import the data after deletion. 3625 // 3626 // If the plan is to purge all of the Products from a ProductSet and then 3627 // re-use the empty ProductSet to re-import new Products into the empty 3628 // ProductSet, you must wait until the PurgeProducts operation has finished 3629 // for that ProductSet. 3630 // 3631 // The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the 3632 // progress and results of the request. 3633 // `Operation.metadata` contains `BatchOperationMetadata`. (progress) 3634 PurgeProducts(ctx context.Context, in *PurgeProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) 3635} 3636 3637type productSearchClient struct { 3638 cc grpc.ClientConnInterface 3639} 3640 3641func NewProductSearchClient(cc grpc.ClientConnInterface) ProductSearchClient { 3642 return &productSearchClient{cc} 3643} 3644 3645func (c *productSearchClient) CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { 3646 out := new(ProductSet) 3647 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/CreateProductSet", in, out, opts...) 3648 if err != nil { 3649 return nil, err 3650 } 3651 return out, nil 3652} 3653 3654func (c *productSearchClient) ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) { 3655 out := new(ListProductSetsResponse) 3656 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListProductSets", in, out, opts...) 3657 if err != nil { 3658 return nil, err 3659 } 3660 return out, nil 3661} 3662 3663func (c *productSearchClient) GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { 3664 out := new(ProductSet) 3665 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/GetProductSet", in, out, opts...) 3666 if err != nil { 3667 return nil, err 3668 } 3669 return out, nil 3670} 3671 3672func (c *productSearchClient) UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { 3673 out := new(ProductSet) 3674 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/UpdateProductSet", in, out, opts...) 3675 if err != nil { 3676 return nil, err 3677 } 3678 return out, nil 3679} 3680 3681func (c *productSearchClient) DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3682 out := new(emptypb.Empty) 3683 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/DeleteProductSet", in, out, opts...) 3684 if err != nil { 3685 return nil, err 3686 } 3687 return out, nil 3688} 3689 3690func (c *productSearchClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) { 3691 out := new(Product) 3692 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/CreateProduct", in, out, opts...) 3693 if err != nil { 3694 return nil, err 3695 } 3696 return out, nil 3697} 3698 3699func (c *productSearchClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) { 3700 out := new(ListProductsResponse) 3701 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListProducts", in, out, opts...) 3702 if err != nil { 3703 return nil, err 3704 } 3705 return out, nil 3706} 3707 3708func (c *productSearchClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) { 3709 out := new(Product) 3710 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/GetProduct", in, out, opts...) 3711 if err != nil { 3712 return nil, err 3713 } 3714 return out, nil 3715} 3716 3717func (c *productSearchClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) { 3718 out := new(Product) 3719 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/UpdateProduct", in, out, opts...) 3720 if err != nil { 3721 return nil, err 3722 } 3723 return out, nil 3724} 3725 3726func (c *productSearchClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3727 out := new(emptypb.Empty) 3728 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/DeleteProduct", in, out, opts...) 3729 if err != nil { 3730 return nil, err 3731 } 3732 return out, nil 3733} 3734 3735func (c *productSearchClient) CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) { 3736 out := new(ReferenceImage) 3737 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/CreateReferenceImage", in, out, opts...) 3738 if err != nil { 3739 return nil, err 3740 } 3741 return out, nil 3742} 3743 3744func (c *productSearchClient) DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3745 out := new(emptypb.Empty) 3746 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/DeleteReferenceImage", in, out, opts...) 3747 if err != nil { 3748 return nil, err 3749 } 3750 return out, nil 3751} 3752 3753func (c *productSearchClient) ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) { 3754 out := new(ListReferenceImagesResponse) 3755 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListReferenceImages", in, out, opts...) 3756 if err != nil { 3757 return nil, err 3758 } 3759 return out, nil 3760} 3761 3762func (c *productSearchClient) GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) { 3763 out := new(ReferenceImage) 3764 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/GetReferenceImage", in, out, opts...) 3765 if err != nil { 3766 return nil, err 3767 } 3768 return out, nil 3769} 3770 3771func (c *productSearchClient) AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3772 out := new(emptypb.Empty) 3773 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/AddProductToProductSet", in, out, opts...) 3774 if err != nil { 3775 return nil, err 3776 } 3777 return out, nil 3778} 3779 3780func (c *productSearchClient) RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3781 out := new(emptypb.Empty) 3782 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/RemoveProductFromProductSet", in, out, opts...) 3783 if err != nil { 3784 return nil, err 3785 } 3786 return out, nil 3787} 3788 3789func (c *productSearchClient) ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) { 3790 out := new(ListProductsInProductSetResponse) 3791 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListProductsInProductSet", in, out, opts...) 3792 if err != nil { 3793 return nil, err 3794 } 3795 return out, nil 3796} 3797 3798func (c *productSearchClient) ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { 3799 out := new(longrunning.Operation) 3800 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ImportProductSets", in, out, opts...) 3801 if err != nil { 3802 return nil, err 3803 } 3804 return out, nil 3805} 3806 3807func (c *productSearchClient) PurgeProducts(ctx context.Context, in *PurgeProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { 3808 out := new(longrunning.Operation) 3809 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/PurgeProducts", in, out, opts...) 3810 if err != nil { 3811 return nil, err 3812 } 3813 return out, nil 3814} 3815 3816// ProductSearchServer is the server API for ProductSearch service. 3817type ProductSearchServer interface { 3818 // Creates and returns a new ProductSet resource. 3819 // 3820 // Possible errors: 3821 // 3822 // * Returns INVALID_ARGUMENT if display_name is missing, or is longer than 3823 // 4096 characters. 3824 CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) 3825 // Lists ProductSets in an unspecified order. 3826 // 3827 // Possible errors: 3828 // 3829 // * Returns INVALID_ARGUMENT if page_size is greater than 100, or less 3830 // than 1. 3831 ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) 3832 // Gets information associated with a ProductSet. 3833 // 3834 // Possible errors: 3835 // 3836 // * Returns NOT_FOUND if the ProductSet does not exist. 3837 GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) 3838 // Makes changes to a ProductSet resource. 3839 // Only display_name can be updated currently. 3840 // 3841 // Possible errors: 3842 // 3843 // * Returns NOT_FOUND if the ProductSet does not exist. 3844 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but 3845 // missing from the request or longer than 4096 characters. 3846 UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) 3847 // Permanently deletes a ProductSet. Products and ReferenceImages in the 3848 // ProductSet are not deleted. 3849 // 3850 // The actual image files are not deleted from Google Cloud Storage. 3851 DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) 3852 // Creates and returns a new product resource. 3853 // 3854 // Possible errors: 3855 // 3856 // * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 3857 // characters. 3858 // * Returns INVALID_ARGUMENT if description is longer than 4096 characters. 3859 // * Returns INVALID_ARGUMENT if product_category is missing or invalid. 3860 CreateProduct(context.Context, *CreateProductRequest) (*Product, error) 3861 // Lists products in an unspecified order. 3862 // 3863 // Possible errors: 3864 // 3865 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3866 ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) 3867 // Gets information associated with a Product. 3868 // 3869 // Possible errors: 3870 // 3871 // * Returns NOT_FOUND if the Product does not exist. 3872 GetProduct(context.Context, *GetProductRequest) (*Product, error) 3873 // Makes changes to a Product resource. 3874 // Only the `display_name`, `description`, and `labels` fields can be updated 3875 // right now. 3876 // 3877 // If labels are updated, the change will not be reflected in queries until 3878 // the next index time. 3879 // 3880 // Possible errors: 3881 // 3882 // * Returns NOT_FOUND if the Product does not exist. 3883 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but is 3884 // missing from the request or longer than 4096 characters. 3885 // * Returns INVALID_ARGUMENT if description is present in update_mask but is 3886 // longer than 4096 characters. 3887 // * Returns INVALID_ARGUMENT if product_category is present in update_mask. 3888 UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) 3889 // Permanently deletes a product and its reference images. 3890 // 3891 // Metadata of the product and all its images will be deleted right away, but 3892 // search queries against ProductSets containing the product may still work 3893 // until all related caches are refreshed. 3894 DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) 3895 // Creates and returns a new ReferenceImage resource. 3896 // 3897 // The `bounding_poly` field is optional. If `bounding_poly` is not specified, 3898 // the system will try to detect regions of interest in the image that are 3899 // compatible with the product_category on the parent product. If it is 3900 // specified, detection is ALWAYS skipped. The system converts polygons into 3901 // non-rotated rectangles. 3902 // 3903 // Note that the pipeline will resize the image if the image resolution is too 3904 // large to process (above 50MP). 3905 // 3906 // Possible errors: 3907 // 3908 // * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 3909 // characters. 3910 // * Returns INVALID_ARGUMENT if the product does not exist. 3911 // * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing 3912 // compatible with the parent product's product_category is detected. 3913 // * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons. 3914 CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) 3915 // Permanently deletes a reference image. 3916 // 3917 // The image metadata will be deleted right away, but search queries 3918 // against ProductSets containing the image may still work until all related 3919 // caches are refreshed. 3920 // 3921 // The actual image files are not deleted from Google Cloud Storage. 3922 DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) 3923 // Lists reference images. 3924 // 3925 // Possible errors: 3926 // 3927 // * Returns NOT_FOUND if the parent product does not exist. 3928 // * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less 3929 // than 1. 3930 ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) 3931 // Gets information associated with a ReferenceImage. 3932 // 3933 // Possible errors: 3934 // 3935 // * Returns NOT_FOUND if the specified image does not exist. 3936 GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) 3937 // Adds a Product to the specified ProductSet. If the Product is already 3938 // present, no change is made. 3939 // 3940 // One Product can be added to at most 100 ProductSets. 3941 // 3942 // Possible errors: 3943 // 3944 // * Returns NOT_FOUND if the Product or the ProductSet doesn't exist. 3945 AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) 3946 // Removes a Product from the specified ProductSet. 3947 RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) 3948 // Lists the Products in a ProductSet, in an unspecified order. If the 3949 // ProductSet does not exist, the products field of the response will be 3950 // empty. 3951 // 3952 // Possible errors: 3953 // 3954 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3955 ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) 3956 // Asynchronous API that imports a list of reference images to specified 3957 // product sets based on a list of image information. 3958 // 3959 // The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the 3960 // progress and results of the request. 3961 // `Operation.metadata` contains `BatchOperationMetadata`. (progress) 3962 // `Operation.response` contains `ImportProductSetsResponse`. (results) 3963 // 3964 // The input source of this method is a csv file on Google Cloud Storage. 3965 // For the format of the csv file please see 3966 // [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1.ImportProductSetsGcsSource.csv_file_uri]. 3967 ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) 3968 // Asynchronous API to delete all Products in a ProductSet or all Products 3969 // that are in no ProductSet. 3970 // 3971 // If a Product is a member of the specified ProductSet in addition to other 3972 // ProductSets, the Product will still be deleted. 3973 // 3974 // It is recommended to not delete the specified ProductSet until after this 3975 // operation has completed. It is also recommended to not add any of the 3976 // Products involved in the batch delete to a new ProductSet while this 3977 // operation is running because those Products may still end up deleted. 3978 // 3979 // It's not possible to undo the PurgeProducts operation. Therefore, it is 3980 // recommended to keep the csv files used in ImportProductSets (if that was 3981 // how you originally built the Product Set) before starting PurgeProducts, in 3982 // case you need to re-import the data after deletion. 3983 // 3984 // If the plan is to purge all of the Products from a ProductSet and then 3985 // re-use the empty ProductSet to re-import new Products into the empty 3986 // ProductSet, you must wait until the PurgeProducts operation has finished 3987 // for that ProductSet. 3988 // 3989 // The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the 3990 // progress and results of the request. 3991 // `Operation.metadata` contains `BatchOperationMetadata`. (progress) 3992 PurgeProducts(context.Context, *PurgeProductsRequest) (*longrunning.Operation, error) 3993} 3994 3995// UnimplementedProductSearchServer can be embedded to have forward compatible implementations. 3996type UnimplementedProductSearchServer struct { 3997} 3998 3999func (*UnimplementedProductSearchServer) CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) { 4000 return nil, status1.Errorf(codes.Unimplemented, "method CreateProductSet not implemented") 4001} 4002func (*UnimplementedProductSearchServer) ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) { 4003 return nil, status1.Errorf(codes.Unimplemented, "method ListProductSets not implemented") 4004} 4005func (*UnimplementedProductSearchServer) GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) { 4006 return nil, status1.Errorf(codes.Unimplemented, "method GetProductSet not implemented") 4007} 4008func (*UnimplementedProductSearchServer) UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) { 4009 return nil, status1.Errorf(codes.Unimplemented, "method UpdateProductSet not implemented") 4010} 4011func (*UnimplementedProductSearchServer) DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) { 4012 return nil, status1.Errorf(codes.Unimplemented, "method DeleteProductSet not implemented") 4013} 4014func (*UnimplementedProductSearchServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) { 4015 return nil, status1.Errorf(codes.Unimplemented, "method CreateProduct not implemented") 4016} 4017func (*UnimplementedProductSearchServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) { 4018 return nil, status1.Errorf(codes.Unimplemented, "method ListProducts not implemented") 4019} 4020func (*UnimplementedProductSearchServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) { 4021 return nil, status1.Errorf(codes.Unimplemented, "method GetProduct not implemented") 4022} 4023func (*UnimplementedProductSearchServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) { 4024 return nil, status1.Errorf(codes.Unimplemented, "method UpdateProduct not implemented") 4025} 4026func (*UnimplementedProductSearchServer) DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) { 4027 return nil, status1.Errorf(codes.Unimplemented, "method DeleteProduct not implemented") 4028} 4029func (*UnimplementedProductSearchServer) CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) { 4030 return nil, status1.Errorf(codes.Unimplemented, "method CreateReferenceImage not implemented") 4031} 4032func (*UnimplementedProductSearchServer) DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) { 4033 return nil, status1.Errorf(codes.Unimplemented, "method DeleteReferenceImage not implemented") 4034} 4035func (*UnimplementedProductSearchServer) ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) { 4036 return nil, status1.Errorf(codes.Unimplemented, "method ListReferenceImages not implemented") 4037} 4038func (*UnimplementedProductSearchServer) GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) { 4039 return nil, status1.Errorf(codes.Unimplemented, "method GetReferenceImage not implemented") 4040} 4041func (*UnimplementedProductSearchServer) AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) { 4042 return nil, status1.Errorf(codes.Unimplemented, "method AddProductToProductSet not implemented") 4043} 4044func (*UnimplementedProductSearchServer) RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) { 4045 return nil, status1.Errorf(codes.Unimplemented, "method RemoveProductFromProductSet not implemented") 4046} 4047func (*UnimplementedProductSearchServer) ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) { 4048 return nil, status1.Errorf(codes.Unimplemented, "method ListProductsInProductSet not implemented") 4049} 4050func (*UnimplementedProductSearchServer) ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) { 4051 return nil, status1.Errorf(codes.Unimplemented, "method ImportProductSets not implemented") 4052} 4053func (*UnimplementedProductSearchServer) PurgeProducts(context.Context, *PurgeProductsRequest) (*longrunning.Operation, error) { 4054 return nil, status1.Errorf(codes.Unimplemented, "method PurgeProducts not implemented") 4055} 4056 4057func RegisterProductSearchServer(s *grpc.Server, srv ProductSearchServer) { 4058 s.RegisterService(&_ProductSearch_serviceDesc, srv) 4059} 4060 4061func _ProductSearch_CreateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4062 in := new(CreateProductSetRequest) 4063 if err := dec(in); err != nil { 4064 return nil, err 4065 } 4066 if interceptor == nil { 4067 return srv.(ProductSearchServer).CreateProductSet(ctx, in) 4068 } 4069 info := &grpc.UnaryServerInfo{ 4070 Server: srv, 4071 FullMethod: "/google.cloud.vision.v1.ProductSearch/CreateProductSet", 4072 } 4073 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4074 return srv.(ProductSearchServer).CreateProductSet(ctx, req.(*CreateProductSetRequest)) 4075 } 4076 return interceptor(ctx, in, info, handler) 4077} 4078 4079func _ProductSearch_ListProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4080 in := new(ListProductSetsRequest) 4081 if err := dec(in); err != nil { 4082 return nil, err 4083 } 4084 if interceptor == nil { 4085 return srv.(ProductSearchServer).ListProductSets(ctx, in) 4086 } 4087 info := &grpc.UnaryServerInfo{ 4088 Server: srv, 4089 FullMethod: "/google.cloud.vision.v1.ProductSearch/ListProductSets", 4090 } 4091 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4092 return srv.(ProductSearchServer).ListProductSets(ctx, req.(*ListProductSetsRequest)) 4093 } 4094 return interceptor(ctx, in, info, handler) 4095} 4096 4097func _ProductSearch_GetProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4098 in := new(GetProductSetRequest) 4099 if err := dec(in); err != nil { 4100 return nil, err 4101 } 4102 if interceptor == nil { 4103 return srv.(ProductSearchServer).GetProductSet(ctx, in) 4104 } 4105 info := &grpc.UnaryServerInfo{ 4106 Server: srv, 4107 FullMethod: "/google.cloud.vision.v1.ProductSearch/GetProductSet", 4108 } 4109 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4110 return srv.(ProductSearchServer).GetProductSet(ctx, req.(*GetProductSetRequest)) 4111 } 4112 return interceptor(ctx, in, info, handler) 4113} 4114 4115func _ProductSearch_UpdateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4116 in := new(UpdateProductSetRequest) 4117 if err := dec(in); err != nil { 4118 return nil, err 4119 } 4120 if interceptor == nil { 4121 return srv.(ProductSearchServer).UpdateProductSet(ctx, in) 4122 } 4123 info := &grpc.UnaryServerInfo{ 4124 Server: srv, 4125 FullMethod: "/google.cloud.vision.v1.ProductSearch/UpdateProductSet", 4126 } 4127 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4128 return srv.(ProductSearchServer).UpdateProductSet(ctx, req.(*UpdateProductSetRequest)) 4129 } 4130 return interceptor(ctx, in, info, handler) 4131} 4132 4133func _ProductSearch_DeleteProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4134 in := new(DeleteProductSetRequest) 4135 if err := dec(in); err != nil { 4136 return nil, err 4137 } 4138 if interceptor == nil { 4139 return srv.(ProductSearchServer).DeleteProductSet(ctx, in) 4140 } 4141 info := &grpc.UnaryServerInfo{ 4142 Server: srv, 4143 FullMethod: "/google.cloud.vision.v1.ProductSearch/DeleteProductSet", 4144 } 4145 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4146 return srv.(ProductSearchServer).DeleteProductSet(ctx, req.(*DeleteProductSetRequest)) 4147 } 4148 return interceptor(ctx, in, info, handler) 4149} 4150 4151func _ProductSearch_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4152 in := new(CreateProductRequest) 4153 if err := dec(in); err != nil { 4154 return nil, err 4155 } 4156 if interceptor == nil { 4157 return srv.(ProductSearchServer).CreateProduct(ctx, in) 4158 } 4159 info := &grpc.UnaryServerInfo{ 4160 Server: srv, 4161 FullMethod: "/google.cloud.vision.v1.ProductSearch/CreateProduct", 4162 } 4163 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4164 return srv.(ProductSearchServer).CreateProduct(ctx, req.(*CreateProductRequest)) 4165 } 4166 return interceptor(ctx, in, info, handler) 4167} 4168 4169func _ProductSearch_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4170 in := new(ListProductsRequest) 4171 if err := dec(in); err != nil { 4172 return nil, err 4173 } 4174 if interceptor == nil { 4175 return srv.(ProductSearchServer).ListProducts(ctx, in) 4176 } 4177 info := &grpc.UnaryServerInfo{ 4178 Server: srv, 4179 FullMethod: "/google.cloud.vision.v1.ProductSearch/ListProducts", 4180 } 4181 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4182 return srv.(ProductSearchServer).ListProducts(ctx, req.(*ListProductsRequest)) 4183 } 4184 return interceptor(ctx, in, info, handler) 4185} 4186 4187func _ProductSearch_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4188 in := new(GetProductRequest) 4189 if err := dec(in); err != nil { 4190 return nil, err 4191 } 4192 if interceptor == nil { 4193 return srv.(ProductSearchServer).GetProduct(ctx, in) 4194 } 4195 info := &grpc.UnaryServerInfo{ 4196 Server: srv, 4197 FullMethod: "/google.cloud.vision.v1.ProductSearch/GetProduct", 4198 } 4199 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4200 return srv.(ProductSearchServer).GetProduct(ctx, req.(*GetProductRequest)) 4201 } 4202 return interceptor(ctx, in, info, handler) 4203} 4204 4205func _ProductSearch_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4206 in := new(UpdateProductRequest) 4207 if err := dec(in); err != nil { 4208 return nil, err 4209 } 4210 if interceptor == nil { 4211 return srv.(ProductSearchServer).UpdateProduct(ctx, in) 4212 } 4213 info := &grpc.UnaryServerInfo{ 4214 Server: srv, 4215 FullMethod: "/google.cloud.vision.v1.ProductSearch/UpdateProduct", 4216 } 4217 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4218 return srv.(ProductSearchServer).UpdateProduct(ctx, req.(*UpdateProductRequest)) 4219 } 4220 return interceptor(ctx, in, info, handler) 4221} 4222 4223func _ProductSearch_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4224 in := new(DeleteProductRequest) 4225 if err := dec(in); err != nil { 4226 return nil, err 4227 } 4228 if interceptor == nil { 4229 return srv.(ProductSearchServer).DeleteProduct(ctx, in) 4230 } 4231 info := &grpc.UnaryServerInfo{ 4232 Server: srv, 4233 FullMethod: "/google.cloud.vision.v1.ProductSearch/DeleteProduct", 4234 } 4235 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4236 return srv.(ProductSearchServer).DeleteProduct(ctx, req.(*DeleteProductRequest)) 4237 } 4238 return interceptor(ctx, in, info, handler) 4239} 4240 4241func _ProductSearch_CreateReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4242 in := new(CreateReferenceImageRequest) 4243 if err := dec(in); err != nil { 4244 return nil, err 4245 } 4246 if interceptor == nil { 4247 return srv.(ProductSearchServer).CreateReferenceImage(ctx, in) 4248 } 4249 info := &grpc.UnaryServerInfo{ 4250 Server: srv, 4251 FullMethod: "/google.cloud.vision.v1.ProductSearch/CreateReferenceImage", 4252 } 4253 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4254 return srv.(ProductSearchServer).CreateReferenceImage(ctx, req.(*CreateReferenceImageRequest)) 4255 } 4256 return interceptor(ctx, in, info, handler) 4257} 4258 4259func _ProductSearch_DeleteReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4260 in := new(DeleteReferenceImageRequest) 4261 if err := dec(in); err != nil { 4262 return nil, err 4263 } 4264 if interceptor == nil { 4265 return srv.(ProductSearchServer).DeleteReferenceImage(ctx, in) 4266 } 4267 info := &grpc.UnaryServerInfo{ 4268 Server: srv, 4269 FullMethod: "/google.cloud.vision.v1.ProductSearch/DeleteReferenceImage", 4270 } 4271 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4272 return srv.(ProductSearchServer).DeleteReferenceImage(ctx, req.(*DeleteReferenceImageRequest)) 4273 } 4274 return interceptor(ctx, in, info, handler) 4275} 4276 4277func _ProductSearch_ListReferenceImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4278 in := new(ListReferenceImagesRequest) 4279 if err := dec(in); err != nil { 4280 return nil, err 4281 } 4282 if interceptor == nil { 4283 return srv.(ProductSearchServer).ListReferenceImages(ctx, in) 4284 } 4285 info := &grpc.UnaryServerInfo{ 4286 Server: srv, 4287 FullMethod: "/google.cloud.vision.v1.ProductSearch/ListReferenceImages", 4288 } 4289 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4290 return srv.(ProductSearchServer).ListReferenceImages(ctx, req.(*ListReferenceImagesRequest)) 4291 } 4292 return interceptor(ctx, in, info, handler) 4293} 4294 4295func _ProductSearch_GetReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4296 in := new(GetReferenceImageRequest) 4297 if err := dec(in); err != nil { 4298 return nil, err 4299 } 4300 if interceptor == nil { 4301 return srv.(ProductSearchServer).GetReferenceImage(ctx, in) 4302 } 4303 info := &grpc.UnaryServerInfo{ 4304 Server: srv, 4305 FullMethod: "/google.cloud.vision.v1.ProductSearch/GetReferenceImage", 4306 } 4307 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4308 return srv.(ProductSearchServer).GetReferenceImage(ctx, req.(*GetReferenceImageRequest)) 4309 } 4310 return interceptor(ctx, in, info, handler) 4311} 4312 4313func _ProductSearch_AddProductToProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4314 in := new(AddProductToProductSetRequest) 4315 if err := dec(in); err != nil { 4316 return nil, err 4317 } 4318 if interceptor == nil { 4319 return srv.(ProductSearchServer).AddProductToProductSet(ctx, in) 4320 } 4321 info := &grpc.UnaryServerInfo{ 4322 Server: srv, 4323 FullMethod: "/google.cloud.vision.v1.ProductSearch/AddProductToProductSet", 4324 } 4325 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4326 return srv.(ProductSearchServer).AddProductToProductSet(ctx, req.(*AddProductToProductSetRequest)) 4327 } 4328 return interceptor(ctx, in, info, handler) 4329} 4330 4331func _ProductSearch_RemoveProductFromProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4332 in := new(RemoveProductFromProductSetRequest) 4333 if err := dec(in); err != nil { 4334 return nil, err 4335 } 4336 if interceptor == nil { 4337 return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, in) 4338 } 4339 info := &grpc.UnaryServerInfo{ 4340 Server: srv, 4341 FullMethod: "/google.cloud.vision.v1.ProductSearch/RemoveProductFromProductSet", 4342 } 4343 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4344 return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, req.(*RemoveProductFromProductSetRequest)) 4345 } 4346 return interceptor(ctx, in, info, handler) 4347} 4348 4349func _ProductSearch_ListProductsInProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4350 in := new(ListProductsInProductSetRequest) 4351 if err := dec(in); err != nil { 4352 return nil, err 4353 } 4354 if interceptor == nil { 4355 return srv.(ProductSearchServer).ListProductsInProductSet(ctx, in) 4356 } 4357 info := &grpc.UnaryServerInfo{ 4358 Server: srv, 4359 FullMethod: "/google.cloud.vision.v1.ProductSearch/ListProductsInProductSet", 4360 } 4361 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4362 return srv.(ProductSearchServer).ListProductsInProductSet(ctx, req.(*ListProductsInProductSetRequest)) 4363 } 4364 return interceptor(ctx, in, info, handler) 4365} 4366 4367func _ProductSearch_ImportProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4368 in := new(ImportProductSetsRequest) 4369 if err := dec(in); err != nil { 4370 return nil, err 4371 } 4372 if interceptor == nil { 4373 return srv.(ProductSearchServer).ImportProductSets(ctx, in) 4374 } 4375 info := &grpc.UnaryServerInfo{ 4376 Server: srv, 4377 FullMethod: "/google.cloud.vision.v1.ProductSearch/ImportProductSets", 4378 } 4379 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4380 return srv.(ProductSearchServer).ImportProductSets(ctx, req.(*ImportProductSetsRequest)) 4381 } 4382 return interceptor(ctx, in, info, handler) 4383} 4384 4385func _ProductSearch_PurgeProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4386 in := new(PurgeProductsRequest) 4387 if err := dec(in); err != nil { 4388 return nil, err 4389 } 4390 if interceptor == nil { 4391 return srv.(ProductSearchServer).PurgeProducts(ctx, in) 4392 } 4393 info := &grpc.UnaryServerInfo{ 4394 Server: srv, 4395 FullMethod: "/google.cloud.vision.v1.ProductSearch/PurgeProducts", 4396 } 4397 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4398 return srv.(ProductSearchServer).PurgeProducts(ctx, req.(*PurgeProductsRequest)) 4399 } 4400 return interceptor(ctx, in, info, handler) 4401} 4402 4403var _ProductSearch_serviceDesc = grpc.ServiceDesc{ 4404 ServiceName: "google.cloud.vision.v1.ProductSearch", 4405 HandlerType: (*ProductSearchServer)(nil), 4406 Methods: []grpc.MethodDesc{ 4407 { 4408 MethodName: "CreateProductSet", 4409 Handler: _ProductSearch_CreateProductSet_Handler, 4410 }, 4411 { 4412 MethodName: "ListProductSets", 4413 Handler: _ProductSearch_ListProductSets_Handler, 4414 }, 4415 { 4416 MethodName: "GetProductSet", 4417 Handler: _ProductSearch_GetProductSet_Handler, 4418 }, 4419 { 4420 MethodName: "UpdateProductSet", 4421 Handler: _ProductSearch_UpdateProductSet_Handler, 4422 }, 4423 { 4424 MethodName: "DeleteProductSet", 4425 Handler: _ProductSearch_DeleteProductSet_Handler, 4426 }, 4427 { 4428 MethodName: "CreateProduct", 4429 Handler: _ProductSearch_CreateProduct_Handler, 4430 }, 4431 { 4432 MethodName: "ListProducts", 4433 Handler: _ProductSearch_ListProducts_Handler, 4434 }, 4435 { 4436 MethodName: "GetProduct", 4437 Handler: _ProductSearch_GetProduct_Handler, 4438 }, 4439 { 4440 MethodName: "UpdateProduct", 4441 Handler: _ProductSearch_UpdateProduct_Handler, 4442 }, 4443 { 4444 MethodName: "DeleteProduct", 4445 Handler: _ProductSearch_DeleteProduct_Handler, 4446 }, 4447 { 4448 MethodName: "CreateReferenceImage", 4449 Handler: _ProductSearch_CreateReferenceImage_Handler, 4450 }, 4451 { 4452 MethodName: "DeleteReferenceImage", 4453 Handler: _ProductSearch_DeleteReferenceImage_Handler, 4454 }, 4455 { 4456 MethodName: "ListReferenceImages", 4457 Handler: _ProductSearch_ListReferenceImages_Handler, 4458 }, 4459 { 4460 MethodName: "GetReferenceImage", 4461 Handler: _ProductSearch_GetReferenceImage_Handler, 4462 }, 4463 { 4464 MethodName: "AddProductToProductSet", 4465 Handler: _ProductSearch_AddProductToProductSet_Handler, 4466 }, 4467 { 4468 MethodName: "RemoveProductFromProductSet", 4469 Handler: _ProductSearch_RemoveProductFromProductSet_Handler, 4470 }, 4471 { 4472 MethodName: "ListProductsInProductSet", 4473 Handler: _ProductSearch_ListProductsInProductSet_Handler, 4474 }, 4475 { 4476 MethodName: "ImportProductSets", 4477 Handler: _ProductSearch_ImportProductSets_Handler, 4478 }, 4479 { 4480 MethodName: "PurgeProducts", 4481 Handler: _ProductSearch_PurgeProducts_Handler, 4482 }, 4483 }, 4484 Streams: []grpc.StreamDesc{}, 4485 Metadata: "google/cloud/vision/v1/product_search_service.proto", 4486} 4487