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