// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.1 // protoc v3.19.4 // source: generate/protobuf/product.proto package product import ( reflect "reflect" sync "sync" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // OKResp type OKResp struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *OKResp) Reset() { *x = OKResp{} mi := &file_generate_protobuf_product_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *OKResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*OKResp) ProtoMessage() {} func (x *OKResp) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OKResp.ProtoReflect.Descriptor instead. func (*OKResp) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{0} } // NoneReq type NoneReq struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NoneReq) Reset() { *x = NoneReq{} mi := &file_generate_protobuf_product_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NoneReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*NoneReq) ProtoMessage() {} func (x *NoneReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NoneReq.ProtoReflect.Descriptor instead. func (*NoneReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{1} } // ====================== Category ====================== type CreateCategoryReq struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateCategoryReq) Reset() { *x = CreateCategoryReq{} mi := &file_generate_protobuf_product_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateCategoryReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateCategoryReq) ProtoMessage() {} func (x *CreateCategoryReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateCategoryReq.ProtoReflect.Descriptor instead. func (*CreateCategoryReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{2} } func (x *CreateCategoryReq) GetName() string { if x != nil { return x.Name } return "" } type ModifyCategoryReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ModifyCategoryReq) Reset() { *x = ModifyCategoryReq{} mi := &file_generate_protobuf_product_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ModifyCategoryReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ModifyCategoryReq) ProtoMessage() {} func (x *ModifyCategoryReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ModifyCategoryReq.ProtoReflect.Descriptor instead. func (*ModifyCategoryReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{3} } func (x *ModifyCategoryReq) GetId() string { if x != nil { return x.Id } return "" } func (x *ModifyCategoryReq) GetName() string { if x != nil { return x.Name } return "" } type CategoryReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CategoryReq) Reset() { *x = CategoryReq{} mi := &file_generate_protobuf_product_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CategoryReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CategoryReq) ProtoMessage() {} func (x *CategoryReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CategoryReq.ProtoReflect.Descriptor instead. func (*CategoryReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{4} } func (x *CategoryReq) GetId() string { if x != nil { return x.Id } return "" } type Category struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreateTime int64 `protobuf:"varint,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` UpdateTime int64 `protobuf:"varint,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Category) Reset() { *x = Category{} mi := &file_generate_protobuf_product_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Category) String() string { return protoimpl.X.MessageStringOf(x) } func (*Category) ProtoMessage() {} func (x *Category) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Category.ProtoReflect.Descriptor instead. func (*Category) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{5} } func (x *Category) GetId() string { if x != nil { return x.Id } return "" } func (x *Category) GetName() string { if x != nil { return x.Name } return "" } func (x *Category) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *Category) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } type ListCategoryReq struct { state protoimpl.MessageState `protogen:"open.v1"` PageIndex int64 `protobuf:"varint,1,opt,name=page_index,json=pageIndex,proto3" json:"page_index,omitempty"` PageSize int64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` Ids []string `protobuf:"bytes,3,rep,name=ids,proto3" json:"ids,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListCategoryReq) Reset() { *x = ListCategoryReq{} mi := &file_generate_protobuf_product_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListCategoryReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListCategoryReq) ProtoMessage() {} func (x *ListCategoryReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListCategoryReq.ProtoReflect.Descriptor instead. func (*ListCategoryReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{6} } func (x *ListCategoryReq) GetPageIndex() int64 { if x != nil { return x.PageIndex } return 0 } func (x *ListCategoryReq) GetPageSize() int64 { if x != nil { return x.PageSize } return 0 } func (x *ListCategoryReq) GetIds() []string { if x != nil { return x.Ids } return nil } type ListCategoryResp struct { state protoimpl.MessageState `protogen:"open.v1"` Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` Data []*Category `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListCategoryResp) Reset() { *x = ListCategoryResp{} mi := &file_generate_protobuf_product_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListCategoryResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListCategoryResp) ProtoMessage() {} func (x *ListCategoryResp) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListCategoryResp.ProtoReflect.Descriptor instead. func (*ListCategoryResp) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{7} } func (x *ListCategoryResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *ListCategoryResp) GetData() []*Category { if x != nil { return x.Data } return nil } type CreateTagsReq struct { state protoimpl.MessageState `protogen:"open.v1"` Types string `protobuf:"bytes,1,opt,name=types,proto3" json:"types,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` ShowType string `protobuf:"bytes,3,opt,name=show_type,json=showType,proto3" json:"show_type,omitempty"` Cover *string `protobuf:"bytes,4,opt,name=cover,proto3,oneof" json:"cover,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateTagsReq) Reset() { *x = CreateTagsReq{} mi := &file_generate_protobuf_product_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateTagsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateTagsReq) ProtoMessage() {} func (x *CreateTagsReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateTagsReq.ProtoReflect.Descriptor instead. func (*CreateTagsReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{8} } func (x *CreateTagsReq) GetTypes() string { if x != nil { return x.Types } return "" } func (x *CreateTagsReq) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateTagsReq) GetShowType() string { if x != nil { return x.ShowType } return "" } func (x *CreateTagsReq) GetCover() string { if x != nil && x.Cover != nil { return *x.Cover } return "" } type ModifyTagsReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Types *string `protobuf:"bytes,2,opt,name=types,proto3,oneof" json:"types,omitempty"` Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` ShowType *string `protobuf:"bytes,4,opt,name=show_type,json=showType,proto3,oneof" json:"show_type,omitempty"` Cover *string `protobuf:"bytes,5,opt,name=cover,proto3,oneof" json:"cover,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ModifyTagsReq) Reset() { *x = ModifyTagsReq{} mi := &file_generate_protobuf_product_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ModifyTagsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ModifyTagsReq) ProtoMessage() {} func (x *ModifyTagsReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ModifyTagsReq.ProtoReflect.Descriptor instead. func (*ModifyTagsReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{9} } func (x *ModifyTagsReq) GetId() string { if x != nil { return x.Id } return "" } func (x *ModifyTagsReq) GetTypes() string { if x != nil && x.Types != nil { return *x.Types } return "" } func (x *ModifyTagsReq) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *ModifyTagsReq) GetShowType() string { if x != nil && x.ShowType != nil { return *x.ShowType } return "" } func (x *ModifyTagsReq) GetCover() string { if x != nil && x.Cover != nil { return *x.Cover } return "" } type TagsReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TagsReq) Reset() { *x = TagsReq{} mi := &file_generate_protobuf_product_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *TagsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*TagsReq) ProtoMessage() {} func (x *TagsReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TagsReq.ProtoReflect.Descriptor instead. func (*TagsReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{10} } func (x *TagsReq) GetId() string { if x != nil { return x.Id } return "" } type Tags struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Types string `protobuf:"bytes,2,opt,name=types,proto3" json:"types,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` ShowType string `protobuf:"bytes,4,opt,name=show_type,json=showType,proto3" json:"show_type,omitempty"` Cover string `protobuf:"bytes,5,opt,name=cover,proto3" json:"cover,omitempty"` UpdateAt int64 `protobuf:"varint,6,opt,name=update_at,json=updateAt,proto3" json:"update_at,omitempty"` CreatedAt int64 `protobuf:"varint,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Tags) Reset() { *x = Tags{} mi := &file_generate_protobuf_product_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Tags) String() string { return protoimpl.X.MessageStringOf(x) } func (*Tags) ProtoMessage() {} func (x *Tags) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Tags.ProtoReflect.Descriptor instead. func (*Tags) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{11} } func (x *Tags) GetId() string { if x != nil { return x.Id } return "" } func (x *Tags) GetTypes() string { if x != nil { return x.Types } return "" } func (x *Tags) GetName() string { if x != nil { return x.Name } return "" } func (x *Tags) GetShowType() string { if x != nil { return x.ShowType } return "" } func (x *Tags) GetCover() string { if x != nil { return x.Cover } return "" } func (x *Tags) GetUpdateAt() int64 { if x != nil { return x.UpdateAt } return 0 } func (x *Tags) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } type ListTagsReq struct { state protoimpl.MessageState `protogen:"open.v1"` PageIndex int64 `protobuf:"varint,1,opt,name=page_index,json=pageIndex,proto3" json:"page_index,omitempty"` PageSize int64 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` Ids []string `protobuf:"bytes,3,rep,name=ids,proto3" json:"ids,omitempty"` Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` Types *string `protobuf:"bytes,5,opt,name=types,proto3,oneof" json:"types,omitempty"` ShowType *string `protobuf:"bytes,6,opt,name=show_type,json=showType,proto3,oneof" json:"show_type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListTagsReq) Reset() { *x = ListTagsReq{} mi := &file_generate_protobuf_product_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListTagsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListTagsReq) ProtoMessage() {} func (x *ListTagsReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListTagsReq.ProtoReflect.Descriptor instead. func (*ListTagsReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{12} } func (x *ListTagsReq) GetPageIndex() int64 { if x != nil { return x.PageIndex } return 0 } func (x *ListTagsReq) GetPageSize() int64 { if x != nil { return x.PageSize } return 0 } func (x *ListTagsReq) GetIds() []string { if x != nil { return x.Ids } return nil } func (x *ListTagsReq) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *ListTagsReq) GetTypes() string { if x != nil && x.Types != nil { return *x.Types } return "" } func (x *ListTagsReq) GetShowType() string { if x != nil && x.ShowType != nil { return *x.ShowType } return "" } type ListTagsResp struct { state protoimpl.MessageState `protogen:"open.v1"` Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` Data []*Tags `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListTagsResp) Reset() { *x = ListTagsResp{} mi := &file_generate_protobuf_product_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListTagsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListTagsResp) ProtoMessage() {} func (x *ListTagsResp) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListTagsResp.ProtoReflect.Descriptor instead. func (*ListTagsResp) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{13} } func (x *ListTagsResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *ListTagsResp) GetData() []*Tags { if x != nil { return x.Data } return nil } // ====================== KYC Param ====================== type Kyc struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // MongoDB ObjectID 字串格式 Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` // 驗證人 UID CountryRegion string `protobuf:"bytes,3,opt,name=country_region,json=countryRegion,proto3" json:"country_region,omitempty"` // 地區(例如 "TW", "JP", "US"...) Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // 真實姓名 Identification string `protobuf:"bytes,5,opt,name=identification,proto3" json:"identification,omitempty"` // 身分證字號 or 護照號碼 IdentificationType string `protobuf:"bytes,6,opt,name=identification_type,json=identificationType,proto3" json:"identification_type,omitempty"` // ID 類型:ID_CARD, PASSPORT, RESIDENT_CERT Address string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"` // 戶籍地址(或居住地址) PostalCode string `protobuf:"bytes,8,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` // 郵遞區號(海外使用) IdFrontImage string `protobuf:"bytes,9,opt,name=id_front_image,json=idFrontImage,proto3" json:"id_front_image,omitempty"` // 身分證/護照 正面 IdBackImage string `protobuf:"bytes,10,opt,name=id_back_image,json=idBackImage,proto3" json:"id_back_image,omitempty"` // 身分證/居留證 反面 BankStatementImg string `protobuf:"bytes,11,opt,name=bank_statement_img,json=bankStatementImg,proto3" json:"bank_statement_img,omitempty"` // 銀行存摺封面照 BankCode string `protobuf:"bytes,12,opt,name=bank_code,json=bankCode,proto3" json:"bank_code,omitempty"` // 銀行代碼(可為 SWIFT) BankName string `protobuf:"bytes,13,opt,name=bank_name,json=bankName,proto3" json:"bank_name,omitempty"` // 銀行名稱(顯示用) BranchCode string `protobuf:"bytes,14,opt,name=branch_code,json=branchCode,proto3" json:"branch_code,omitempty"` // 分行代碼 BranchName string `protobuf:"bytes,15,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // 分行名稱(顯示用) BankAccount string `protobuf:"bytes,16,opt,name=bank_account,json=bankAccount,proto3" json:"bank_account,omitempty"` // 銀行帳號 Status string `protobuf:"bytes,17,opt,name=status,proto3" json:"status,omitempty"` // 審核狀態:PENDING, APPROVED, REJECTED RejectReason string `protobuf:"bytes,18,opt,name=reject_reason,json=rejectReason,proto3" json:"reject_reason,omitempty"` // 若被駁回,原因描述 UpdatedAt int64 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // 更新時間(timestamp) CreatedAt int64 `protobuf:"varint,20,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // 建立時間(timestamp) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Kyc) Reset() { *x = Kyc{} mi := &file_generate_protobuf_product_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Kyc) String() string { return protoimpl.X.MessageStringOf(x) } func (*Kyc) ProtoMessage() {} func (x *Kyc) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Kyc.ProtoReflect.Descriptor instead. func (*Kyc) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{14} } func (x *Kyc) GetId() string { if x != nil { return x.Id } return "" } func (x *Kyc) GetUid() string { if x != nil { return x.Uid } return "" } func (x *Kyc) GetCountryRegion() string { if x != nil { return x.CountryRegion } return "" } func (x *Kyc) GetName() string { if x != nil { return x.Name } return "" } func (x *Kyc) GetIdentification() string { if x != nil { return x.Identification } return "" } func (x *Kyc) GetIdentificationType() string { if x != nil { return x.IdentificationType } return "" } func (x *Kyc) GetAddress() string { if x != nil { return x.Address } return "" } func (x *Kyc) GetPostalCode() string { if x != nil { return x.PostalCode } return "" } func (x *Kyc) GetIdFrontImage() string { if x != nil { return x.IdFrontImage } return "" } func (x *Kyc) GetIdBackImage() string { if x != nil { return x.IdBackImage } return "" } func (x *Kyc) GetBankStatementImg() string { if x != nil { return x.BankStatementImg } return "" } func (x *Kyc) GetBankCode() string { if x != nil { return x.BankCode } return "" } func (x *Kyc) GetBankName() string { if x != nil { return x.BankName } return "" } func (x *Kyc) GetBranchCode() string { if x != nil { return x.BranchCode } return "" } func (x *Kyc) GetBranchName() string { if x != nil { return x.BranchName } return "" } func (x *Kyc) GetBankAccount() string { if x != nil { return x.BankAccount } return "" } func (x *Kyc) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Kyc) GetRejectReason() string { if x != nil { return x.RejectReason } return "" } func (x *Kyc) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *Kyc) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } type CreateKycReq struct { state protoimpl.MessageState `protogen:"open.v1"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` CountryRegion string `protobuf:"bytes,2,opt,name=country_region,json=countryRegion,proto3" json:"country_region,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Identification string `protobuf:"bytes,4,opt,name=identification,proto3" json:"identification,omitempty"` IdentificationType string `protobuf:"bytes,5,opt,name=identification_type,json=identificationType,proto3" json:"identification_type,omitempty"` Address string `protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"` PostalCode string `protobuf:"bytes,7,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` IdFrontImage string `protobuf:"bytes,8,opt,name=id_front_image,json=idFrontImage,proto3" json:"id_front_image,omitempty"` IdBackImage string `protobuf:"bytes,9,opt,name=id_back_image,json=idBackImage,proto3" json:"id_back_image,omitempty"` BankStatementImg string `protobuf:"bytes,10,opt,name=bank_statement_img,json=bankStatementImg,proto3" json:"bank_statement_img,omitempty"` BankCode string `protobuf:"bytes,11,opt,name=bank_code,json=bankCode,proto3" json:"bank_code,omitempty"` BankName string `protobuf:"bytes,12,opt,name=bank_name,json=bankName,proto3" json:"bank_name,omitempty"` BranchCode string `protobuf:"bytes,13,opt,name=branch_code,json=branchCode,proto3" json:"branch_code,omitempty"` BranchName string `protobuf:"bytes,14,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` BankAccount string `protobuf:"bytes,15,opt,name=bank_account,json=bankAccount,proto3" json:"bank_account,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateKycReq) Reset() { *x = CreateKycReq{} mi := &file_generate_protobuf_product_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateKycReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateKycReq) ProtoMessage() {} func (x *CreateKycReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateKycReq.ProtoReflect.Descriptor instead. func (*CreateKycReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{15} } func (x *CreateKycReq) GetUid() string { if x != nil { return x.Uid } return "" } func (x *CreateKycReq) GetCountryRegion() string { if x != nil { return x.CountryRegion } return "" } func (x *CreateKycReq) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateKycReq) GetIdentification() string { if x != nil { return x.Identification } return "" } func (x *CreateKycReq) GetIdentificationType() string { if x != nil { return x.IdentificationType } return "" } func (x *CreateKycReq) GetAddress() string { if x != nil { return x.Address } return "" } func (x *CreateKycReq) GetPostalCode() string { if x != nil { return x.PostalCode } return "" } func (x *CreateKycReq) GetIdFrontImage() string { if x != nil { return x.IdFrontImage } return "" } func (x *CreateKycReq) GetIdBackImage() string { if x != nil { return x.IdBackImage } return "" } func (x *CreateKycReq) GetBankStatementImg() string { if x != nil { return x.BankStatementImg } return "" } func (x *CreateKycReq) GetBankCode() string { if x != nil { return x.BankCode } return "" } func (x *CreateKycReq) GetBankName() string { if x != nil { return x.BankName } return "" } func (x *CreateKycReq) GetBranchCode() string { if x != nil { return x.BranchCode } return "" } func (x *CreateKycReq) GetBranchName() string { if x != nil { return x.BranchName } return "" } func (x *CreateKycReq) GetBankAccount() string { if x != nil { return x.BankAccount } return "" } type FindLatestKycByUIDReq struct { state protoimpl.MessageState `protogen:"open.v1"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FindLatestKycByUIDReq) Reset() { *x = FindLatestKycByUIDReq{} mi := &file_generate_protobuf_product_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FindLatestKycByUIDReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindLatestKycByUIDReq) ProtoMessage() {} func (x *FindLatestKycByUIDReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindLatestKycByUIDReq.ProtoReflect.Descriptor instead. func (*FindLatestKycByUIDReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{16} } func (x *FindLatestKycByUIDReq) GetUid() string { if x != nil { return x.Uid } return "" } type FindKycByIDReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FindKycByIDReq) Reset() { *x = FindKycByIDReq{} mi := &file_generate_protobuf_product_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FindKycByIDReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindKycByIDReq) ProtoMessage() {} func (x *FindKycByIDReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindKycByIDReq.ProtoReflect.Descriptor instead. func (*FindKycByIDReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{17} } func (x *FindKycByIDReq) GetId() string { if x != nil { return x.Id } return "" } type ListKycReq struct { state protoimpl.MessageState `protogen:"open.v1"` Uid *string `protobuf:"bytes,1,opt,name=uid,proto3,oneof" json:"uid,omitempty"` Country *string `protobuf:"bytes,2,opt,name=country,proto3,oneof" json:"country,omitempty"` Status *string `protobuf:"bytes,3,opt,name=status,proto3,oneof" json:"status,omitempty"` // 可改 enum PageSize int64 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` PageIndex int64 `protobuf:"varint,5,opt,name=page_index,json=pageIndex,proto3" json:"page_index,omitempty"` SortByDate bool `protobuf:"varint,6,opt,name=sort_by_date,json=sortByDate,proto3" json:"sort_by_date,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListKycReq) Reset() { *x = ListKycReq{} mi := &file_generate_protobuf_product_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListKycReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListKycReq) ProtoMessage() {} func (x *ListKycReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListKycReq.ProtoReflect.Descriptor instead. func (*ListKycReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{18} } func (x *ListKycReq) GetUid() string { if x != nil && x.Uid != nil { return *x.Uid } return "" } func (x *ListKycReq) GetCountry() string { if x != nil && x.Country != nil { return *x.Country } return "" } func (x *ListKycReq) GetStatus() string { if x != nil && x.Status != nil { return *x.Status } return "" } func (x *ListKycReq) GetPageSize() int64 { if x != nil { return x.PageSize } return 0 } func (x *ListKycReq) GetPageIndex() int64 { if x != nil { return x.PageIndex } return 0 } func (x *ListKycReq) GetSortByDate() bool { if x != nil { return x.SortByDate } return false } type ListKycResp struct { state protoimpl.MessageState `protogen:"open.v1"` List []*Kyc `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListKycResp) Reset() { *x = ListKycResp{} mi := &file_generate_protobuf_product_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListKycResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListKycResp) ProtoMessage() {} func (x *ListKycResp) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListKycResp.ProtoReflect.Descriptor instead. func (*ListKycResp) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{19} } func (x *ListKycResp) GetList() []*Kyc { if x != nil { return x.List } return nil } func (x *ListKycResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } type UpdateKycStatusReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // 可改 enum:PENDING, APPROVED, REJECTED Reason *string `protobuf:"bytes,3,opt,name=reason,proto3,oneof" json:"reason,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateKycStatusReq) Reset() { *x = UpdateKycStatusReq{} mi := &file_generate_protobuf_product_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateKycStatusReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateKycStatusReq) ProtoMessage() {} func (x *UpdateKycStatusReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateKycStatusReq.ProtoReflect.Descriptor instead. func (*UpdateKycStatusReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{20} } func (x *UpdateKycStatusReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateKycStatusReq) GetStatus() string { if x != nil { return x.Status } return "" } func (x *UpdateKycStatusReq) GetReason() string { if x != nil && x.Reason != nil { return *x.Reason } return "" } type UpdateKycInfoReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` Identification *string `protobuf:"bytes,3,opt,name=identification,proto3,oneof" json:"identification,omitempty"` IdentificationType *string `protobuf:"bytes,4,opt,name=identification_type,json=identificationType,proto3,oneof" json:"identification_type,omitempty"` Address *string `protobuf:"bytes,5,opt,name=address,proto3,oneof" json:"address,omitempty"` PostalCode *string `protobuf:"bytes,6,opt,name=postal_code,json=postalCode,proto3,oneof" json:"postal_code,omitempty"` IdFrontImage *string `protobuf:"bytes,7,opt,name=id_front_image,json=idFrontImage,proto3,oneof" json:"id_front_image,omitempty"` IdBackImage *string `protobuf:"bytes,8,opt,name=id_back_image,json=idBackImage,proto3,oneof" json:"id_back_image,omitempty"` BankStatementImg *string `protobuf:"bytes,9,opt,name=bank_statement_img,json=bankStatementImg,proto3,oneof" json:"bank_statement_img,omitempty"` BankCode *string `protobuf:"bytes,10,opt,name=bank_code,json=bankCode,proto3,oneof" json:"bank_code,omitempty"` BankName *string `protobuf:"bytes,11,opt,name=bank_name,json=bankName,proto3,oneof" json:"bank_name,omitempty"` BranchCode *string `protobuf:"bytes,12,opt,name=branch_code,json=branchCode,proto3,oneof" json:"branch_code,omitempty"` BranchName *string `protobuf:"bytes,13,opt,name=branch_name,json=branchName,proto3,oneof" json:"branch_name,omitempty"` BankAccount *string `protobuf:"bytes,14,opt,name=bank_account,json=bankAccount,proto3,oneof" json:"bank_account,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateKycInfoReq) Reset() { *x = UpdateKycInfoReq{} mi := &file_generate_protobuf_product_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateKycInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateKycInfoReq) ProtoMessage() {} func (x *UpdateKycInfoReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateKycInfoReq.ProtoReflect.Descriptor instead. func (*UpdateKycInfoReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{21} } func (x *UpdateKycInfoReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateKycInfoReq) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *UpdateKycInfoReq) GetIdentification() string { if x != nil && x.Identification != nil { return *x.Identification } return "" } func (x *UpdateKycInfoReq) GetIdentificationType() string { if x != nil && x.IdentificationType != nil { return *x.IdentificationType } return "" } func (x *UpdateKycInfoReq) GetAddress() string { if x != nil && x.Address != nil { return *x.Address } return "" } func (x *UpdateKycInfoReq) GetPostalCode() string { if x != nil && x.PostalCode != nil { return *x.PostalCode } return "" } func (x *UpdateKycInfoReq) GetIdFrontImage() string { if x != nil && x.IdFrontImage != nil { return *x.IdFrontImage } return "" } func (x *UpdateKycInfoReq) GetIdBackImage() string { if x != nil && x.IdBackImage != nil { return *x.IdBackImage } return "" } func (x *UpdateKycInfoReq) GetBankStatementImg() string { if x != nil && x.BankStatementImg != nil { return *x.BankStatementImg } return "" } func (x *UpdateKycInfoReq) GetBankCode() string { if x != nil && x.BankCode != nil { return *x.BankCode } return "" } func (x *UpdateKycInfoReq) GetBankName() string { if x != nil && x.BankName != nil { return *x.BankName } return "" } func (x *UpdateKycInfoReq) GetBranchCode() string { if x != nil && x.BranchCode != nil { return *x.BranchCode } return "" } func (x *UpdateKycInfoReq) GetBranchName() string { if x != nil && x.BranchName != nil { return *x.BranchName } return "" } func (x *UpdateKycInfoReq) GetBankAccount() string { if x != nil && x.BankAccount != nil { return *x.BankAccount } return "" } type ProductItem struct { state protoimpl.MessageState `protogen:"open.v1"` Id *string `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"` ReferenceId string `protobuf:"bytes,2,opt,name=reference_id,json=referenceId,proto3" json:"reference_id,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` ShortDescription string `protobuf:"bytes,5,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` IsUnLimit bool `protobuf:"varint,6,opt,name=is_un_limit,json=isUnLimit,proto3" json:"is_un_limit,omitempty"` IsFree bool `protobuf:"varint,7,opt,name=is_free,json=isFree,proto3" json:"is_free,omitempty"` Stock uint64 `protobuf:"varint,8,opt,name=stock,proto3" json:"stock,omitempty"` Price string `protobuf:"bytes,9,opt,name=price,proto3" json:"price,omitempty"` Sku string `protobuf:"bytes,10,opt,name=sku,proto3" json:"sku,omitempty"` TimeSeries string `protobuf:"bytes,11,opt,name=time_series,json=timeSeries,proto3" json:"time_series,omitempty"` Media []*Media `protobuf:"bytes,12,rep,name=media,proto3" json:"media,omitempty"` Status string `protobuf:"bytes,13,opt,name=status,proto3" json:"status,omitempty"` Freight []*CustomField `protobuf:"bytes,14,rep,name=freight,proto3" json:"freight,omitempty"` CustomFields []*CustomField `protobuf:"bytes,15,rep,name=custom_fields,json=customFields,proto3" json:"custom_fields,omitempty"` SalesCount uint64 `protobuf:"varint,16,opt,name=sales_count,json=salesCount,proto3" json:"sales_count,omitempty"` UpdatedAt *int64 `protobuf:"varint,17,opt,name=updated_at,json=updatedAt,proto3,oneof" json:"updated_at,omitempty"` CreatedAt *int64 `protobuf:"varint,18,opt,name=created_at,json=createdAt,proto3,oneof" json:"created_at,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ProductItem) Reset() { *x = ProductItem{} mi := &file_generate_protobuf_product_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ProductItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*ProductItem) ProtoMessage() {} func (x *ProductItem) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ProductItem.ProtoReflect.Descriptor instead. func (*ProductItem) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{22} } func (x *ProductItem) GetId() string { if x != nil && x.Id != nil { return *x.Id } return "" } func (x *ProductItem) GetReferenceId() string { if x != nil { return x.ReferenceId } return "" } func (x *ProductItem) GetName() string { if x != nil { return x.Name } return "" } func (x *ProductItem) GetDescription() string { if x != nil { return x.Description } return "" } func (x *ProductItem) GetShortDescription() string { if x != nil { return x.ShortDescription } return "" } func (x *ProductItem) GetIsUnLimit() bool { if x != nil { return x.IsUnLimit } return false } func (x *ProductItem) GetIsFree() bool { if x != nil { return x.IsFree } return false } func (x *ProductItem) GetStock() uint64 { if x != nil { return x.Stock } return 0 } func (x *ProductItem) GetPrice() string { if x != nil { return x.Price } return "" } func (x *ProductItem) GetSku() string { if x != nil { return x.Sku } return "" } func (x *ProductItem) GetTimeSeries() string { if x != nil { return x.TimeSeries } return "" } func (x *ProductItem) GetMedia() []*Media { if x != nil { return x.Media } return nil } func (x *ProductItem) GetStatus() string { if x != nil { return x.Status } return "" } func (x *ProductItem) GetFreight() []*CustomField { if x != nil { return x.Freight } return nil } func (x *ProductItem) GetCustomFields() []*CustomField { if x != nil { return x.CustomFields } return nil } func (x *ProductItem) GetSalesCount() uint64 { if x != nil { return x.SalesCount } return 0 } func (x *ProductItem) GetUpdatedAt() int64 { if x != nil && x.UpdatedAt != nil { return *x.UpdatedAt } return 0 } func (x *ProductItem) GetCreatedAt() int64 { if x != nil && x.CreatedAt != nil { return *x.CreatedAt } return 0 } type Media struct { state protoimpl.MessageState `protogen:"open.v1"` Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` Sort *uint64 `protobuf:"varint,3,opt,name=sort,proto3,oneof" json:"sort,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Media) Reset() { *x = Media{} mi := &file_generate_protobuf_product_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Media) String() string { return protoimpl.X.MessageStringOf(x) } func (*Media) ProtoMessage() {} func (x *Media) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Media.ProtoReflect.Descriptor instead. func (*Media) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{23} } func (x *Media) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Media) GetType() string { if x != nil { return x.Type } return "" } func (x *Media) GetSort() uint64 { if x != nil && x.Sort != nil { return *x.Sort } return 0 } type CustomField struct { state protoimpl.MessageState `protogen:"open.v1"` Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CustomField) Reset() { *x = CustomField{} mi := &file_generate_protobuf_product_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CustomField) String() string { return protoimpl.X.MessageStringOf(x) } func (*CustomField) ProtoMessage() {} func (x *CustomField) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CustomField.ProtoReflect.Descriptor instead. func (*CustomField) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{24} } func (x *CustomField) GetKey() string { if x != nil { return x.Key } return "" } func (x *CustomField) GetValue() string { if x != nil { return x.Value } return "" } type CreateProductItemRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Item *ProductItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateProductItemRequest) Reset() { *x = CreateProductItemRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateProductItemRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateProductItemRequest) ProtoMessage() {} func (x *CreateProductItemRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateProductItemRequest.ProtoReflect.Descriptor instead. func (*CreateProductItemRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{25} } func (x *CreateProductItemRequest) GetItem() *ProductItem { if x != nil { return x.Item } return nil } type GetProductItemRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetProductItemRequest) Reset() { *x = GetProductItemRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetProductItemRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetProductItemRequest) ProtoMessage() {} func (x *GetProductItemRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetProductItemRequest.ProtoReflect.Descriptor instead. func (*GetProductItemRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{26} } func (x *GetProductItemRequest) GetId() string { if x != nil { return x.Id } return "" } type ListProductItemRequest struct { state protoimpl.MessageState `protogen:"open.v1"` PageSize int64 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` PageIndex int64 `protobuf:"varint,2,opt,name=page_index,json=pageIndex,proto3" json:"page_index,omitempty"` ReferenceId string `protobuf:"bytes,3,opt,name=reference_id,json=referenceId,proto3" json:"reference_id,omitempty"` IsUnLimit *bool `protobuf:"varint,4,opt,name=is_un_limit,json=isUnLimit,proto3,oneof" json:"is_un_limit,omitempty"` IsFree *bool `protobuf:"varint,5,opt,name=is_free,json=isFree,proto3,oneof" json:"is_free,omitempty"` Status *string `protobuf:"bytes,6,opt,name=status,proto3,oneof" json:"status,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListProductItemRequest) Reset() { *x = ListProductItemRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListProductItemRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProductItemRequest) ProtoMessage() {} func (x *ListProductItemRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListProductItemRequest.ProtoReflect.Descriptor instead. func (*ListProductItemRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{27} } func (x *ListProductItemRequest) GetPageSize() int64 { if x != nil { return x.PageSize } return 0 } func (x *ListProductItemRequest) GetPageIndex() int64 { if x != nil { return x.PageIndex } return 0 } func (x *ListProductItemRequest) GetReferenceId() string { if x != nil { return x.ReferenceId } return "" } func (x *ListProductItemRequest) GetIsUnLimit() bool { if x != nil && x.IsUnLimit != nil { return *x.IsUnLimit } return false } func (x *ListProductItemRequest) GetIsFree() bool { if x != nil && x.IsFree != nil { return *x.IsFree } return false } func (x *ListProductItemRequest) GetStatus() string { if x != nil && x.Status != nil { return *x.Status } return "" } type ListProductItemResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Data []*ProductItem `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListProductItemResponse) Reset() { *x = ListProductItemResponse{} mi := &file_generate_protobuf_product_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListProductItemResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProductItemResponse) ProtoMessage() {} func (x *ListProductItemResponse) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListProductItemResponse.ProtoReflect.Descriptor instead. func (*ListProductItemResponse) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{28} } func (x *ListProductItemResponse) GetData() []*ProductItem { if x != nil { return x.Data } return nil } func (x *ListProductItemResponse) GetTotal() int64 { if x != nil { return x.Total } return 0 } type DeleteProductItemRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id []string `protobuf:"bytes,1,rep,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DeleteProductItemRequest) Reset() { *x = DeleteProductItemRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeleteProductItemRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteProductItemRequest) ProtoMessage() {} func (x *DeleteProductItemRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteProductItemRequest.ProtoReflect.Descriptor instead. func (*DeleteProductItemRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{29} } func (x *DeleteProductItemRequest) GetId() []string { if x != nil { return x.Id } return nil } type DeleteProductItemsByReferenceIDReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DeleteProductItemsByReferenceIDReq) Reset() { *x = DeleteProductItemsByReferenceIDReq{} mi := &file_generate_protobuf_product_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeleteProductItemsByReferenceIDReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteProductItemsByReferenceIDReq) ProtoMessage() {} func (x *DeleteProductItemsByReferenceIDReq) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteProductItemsByReferenceIDReq.ProtoReflect.Descriptor instead. func (*DeleteProductItemsByReferenceIDReq) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{30} } func (x *DeleteProductItemsByReferenceIDReq) GetId() string { if x != nil { return x.Id } return "" } type IncDecSalesCountRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *IncDecSalesCountRequest) Reset() { *x = IncDecSalesCountRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *IncDecSalesCountRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*IncDecSalesCountRequest) ProtoMessage() {} func (x *IncDecSalesCountRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use IncDecSalesCountRequest.ProtoReflect.Descriptor instead. func (*IncDecSalesCountRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{31} } func (x *IncDecSalesCountRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *IncDecSalesCountRequest) GetCount() uint64 { if x != nil { return x.Count } return 0 } type UpdateProductItemRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` ShortDescription *string `protobuf:"bytes,4,opt,name=short_description,json=shortDescription,proto3,oneof" json:"short_description,omitempty"` IsUnLimit *bool `protobuf:"varint,5,opt,name=is_un_limit,json=isUnLimit,proto3,oneof" json:"is_un_limit,omitempty"` IsFree *bool `protobuf:"varint,6,opt,name=is_free,json=isFree,proto3,oneof" json:"is_free,omitempty"` Stock *uint64 `protobuf:"varint,7,opt,name=stock,proto3,oneof" json:"stock,omitempty"` Price *string `protobuf:"bytes,8,opt,name=price,proto3,oneof" json:"price,omitempty"` Sku *string `protobuf:"bytes,9,opt,name=sku,proto3,oneof" json:"sku,omitempty"` TimeSeries *string `protobuf:"bytes,10,opt,name=time_series,json=timeSeries,proto3,oneof" json:"time_series,omitempty"` Media []*Media `protobuf:"bytes,11,rep,name=media,proto3" json:"media,omitempty"` Status *string `protobuf:"bytes,12,opt,name=status,proto3,oneof" json:"status,omitempty"` Freight []*CustomField `protobuf:"bytes,13,rep,name=freight,proto3" json:"freight,omitempty"` CustomFields []*CustomField `protobuf:"bytes,14,rep,name=custom_fields,json=customFields,proto3" json:"custom_fields,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateProductItemRequest) Reset() { *x = UpdateProductItemRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateProductItemRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateProductItemRequest) ProtoMessage() {} func (x *UpdateProductItemRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateProductItemRequest.ProtoReflect.Descriptor instead. func (*UpdateProductItemRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{32} } func (x *UpdateProductItemRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateProductItemRequest) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *UpdateProductItemRequest) GetDescription() string { if x != nil && x.Description != nil { return *x.Description } return "" } func (x *UpdateProductItemRequest) GetShortDescription() string { if x != nil && x.ShortDescription != nil { return *x.ShortDescription } return "" } func (x *UpdateProductItemRequest) GetIsUnLimit() bool { if x != nil && x.IsUnLimit != nil { return *x.IsUnLimit } return false } func (x *UpdateProductItemRequest) GetIsFree() bool { if x != nil && x.IsFree != nil { return *x.IsFree } return false } func (x *UpdateProductItemRequest) GetStock() uint64 { if x != nil && x.Stock != nil { return *x.Stock } return 0 } func (x *UpdateProductItemRequest) GetPrice() string { if x != nil && x.Price != nil { return *x.Price } return "" } func (x *UpdateProductItemRequest) GetSku() string { if x != nil && x.Sku != nil { return *x.Sku } return "" } func (x *UpdateProductItemRequest) GetTimeSeries() string { if x != nil && x.TimeSeries != nil { return *x.TimeSeries } return "" } func (x *UpdateProductItemRequest) GetMedia() []*Media { if x != nil { return x.Media } return nil } func (x *UpdateProductItemRequest) GetStatus() string { if x != nil && x.Status != nil { return *x.Status } return "" } func (x *UpdateProductItemRequest) GetFreight() []*CustomField { if x != nil { return x.Freight } return nil } func (x *UpdateProductItemRequest) GetCustomFields() []*CustomField { if x != nil { return x.CustomFields } return nil } type UpdateStatusRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateStatusRequest) Reset() { *x = UpdateStatusRequest{} mi := &file_generate_protobuf_product_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateStatusRequest) ProtoMessage() {} func (x *UpdateStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_generate_protobuf_product_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateStatusRequest) Descriptor() ([]byte, []int) { return file_generate_protobuf_product_proto_rawDescGZIP(), []int{33} } func (x *UpdateStatusRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateStatusRequest) GetStatus() string { if x != nil { return x.Status } return "" } var File_generate_protobuf_product_proto protoreflect.FileDescriptor var file_generate_protobuf_product_proto_rawDesc = []byte{ 0x0a, 0x1f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x08, 0x0a, 0x06, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x09, 0x0a, 0x07, 0x4e, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x22, 0x27, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1d, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x70, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7b, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x22, 0x19, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xd2, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x88, 0x05, 0x0a, 0x03, 0x4b, 0x79, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x86, 0x04, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x79, 0x63, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4b, 0x79, 0x63, 0x42, 0x79, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x20, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x4b, 0x79, 0x63, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x79, 0x63, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x44, 0x61, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x45, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x79, 0x63, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4b, 0x79, 0x63, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x64, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x79, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xfb, 0x05, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x79, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0b, 0x69, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x10, 0x62, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0a, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0b, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0c, 0x52, 0x0b, 0x62, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf7, 0x04, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x55, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x46, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6b, 0x75, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6b, 0x75, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x6c, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x61, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x4f, 0x0a, 0x05, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x35, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x44, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xfe, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x69, 0x73, 0x55, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x69, 0x73, 0x46, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x59, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x34, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3f, 0x0a, 0x17, 0x49, 0x6e, 0x63, 0x44, 0x65, 0x63, 0x53, 0x61, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, 0x05, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x09, 0x69, 0x73, 0x55, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x06, 0x69, 0x73, 0x46, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x73, 0x6b, 0x75, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x03, 0x73, 0x6b, 0x75, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x6b, 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3d, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x32, 0x9e, 0x02, 0x0a, 0x10, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x3b, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x32, 0xfd, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x67, 0x5f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x32, 0xda, 0x02, 0x0a, 0x0b, 0x4b, 0x79, 0x63, 0x5f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x79, 0x63, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x79, 0x55, 0x69, 0x64, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4b, 0x79, 0x63, 0x42, 0x79, 0x55, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4b, 0x79, 0x63, 0x12, 0x31, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x64, 0x42, 0x79, 0x49, 0x64, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4b, 0x79, 0x63, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4b, 0x79, 0x63, 0x12, 0x31, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x79, 0x63, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x79, 0x63, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x79, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x79, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x32, 0xff, 0x04, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x54, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0d, 0x49, 0x6e, 0x63, 0x53, 0x61, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x44, 0x65, 0x63, 0x53, 0x61, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0d, 0x44, 0x65, 0x63, 0x53, 0x61, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x44, 0x65, 0x63, 0x53, 0x61, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_generate_protobuf_product_proto_rawDescOnce sync.Once file_generate_protobuf_product_proto_rawDescData = file_generate_protobuf_product_proto_rawDesc ) func file_generate_protobuf_product_proto_rawDescGZIP() []byte { file_generate_protobuf_product_proto_rawDescOnce.Do(func() { file_generate_protobuf_product_proto_rawDescData = protoimpl.X.CompressGZIP(file_generate_protobuf_product_proto_rawDescData) }) return file_generate_protobuf_product_proto_rawDescData } var file_generate_protobuf_product_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_generate_protobuf_product_proto_goTypes = []any{ (*OKResp)(nil), // 0: product.OKResp (*NoneReq)(nil), // 1: product.NoneReq (*CreateCategoryReq)(nil), // 2: product.CreateCategoryReq (*ModifyCategoryReq)(nil), // 3: product.ModifyCategoryReq (*CategoryReq)(nil), // 4: product.CategoryReq (*Category)(nil), // 5: product.Category (*ListCategoryReq)(nil), // 6: product.ListCategoryReq (*ListCategoryResp)(nil), // 7: product.ListCategoryResp (*CreateTagsReq)(nil), // 8: product.CreateTagsReq (*ModifyTagsReq)(nil), // 9: product.ModifyTagsReq (*TagsReq)(nil), // 10: product.TagsReq (*Tags)(nil), // 11: product.Tags (*ListTagsReq)(nil), // 12: product.ListTagsReq (*ListTagsResp)(nil), // 13: product.ListTagsResp (*Kyc)(nil), // 14: product.Kyc (*CreateKycReq)(nil), // 15: product.CreateKycReq (*FindLatestKycByUIDReq)(nil), // 16: product.FindLatestKycByUIDReq (*FindKycByIDReq)(nil), // 17: product.FindKycByIDReq (*ListKycReq)(nil), // 18: product.ListKycReq (*ListKycResp)(nil), // 19: product.ListKycResp (*UpdateKycStatusReq)(nil), // 20: product.UpdateKycStatusReq (*UpdateKycInfoReq)(nil), // 21: product.UpdateKycInfoReq (*ProductItem)(nil), // 22: product.ProductItem (*Media)(nil), // 23: product.Media (*CustomField)(nil), // 24: product.CustomField (*CreateProductItemRequest)(nil), // 25: product.CreateProductItemRequest (*GetProductItemRequest)(nil), // 26: product.GetProductItemRequest (*ListProductItemRequest)(nil), // 27: product.ListProductItemRequest (*ListProductItemResponse)(nil), // 28: product.ListProductItemResponse (*DeleteProductItemRequest)(nil), // 29: product.DeleteProductItemRequest (*DeleteProductItemsByReferenceIDReq)(nil), // 30: product.DeleteProductItemsByReferenceIDReq (*IncDecSalesCountRequest)(nil), // 31: product.IncDecSalesCountRequest (*UpdateProductItemRequest)(nil), // 32: product.UpdateProductItemRequest (*UpdateStatusRequest)(nil), // 33: product.UpdateStatusRequest } var file_generate_protobuf_product_proto_depIdxs = []int32{ 5, // 0: product.ListCategoryResp.data:type_name -> product.Category 11, // 1: product.ListTagsResp.data:type_name -> product.Tags 14, // 2: product.ListKycResp.list:type_name -> product.Kyc 23, // 3: product.ProductItem.media:type_name -> product.Media 24, // 4: product.ProductItem.freight:type_name -> product.CustomField 24, // 5: product.ProductItem.custom_fields:type_name -> product.CustomField 22, // 6: product.CreateProductItemRequest.item:type_name -> product.ProductItem 22, // 7: product.ListProductItemResponse.data:type_name -> product.ProductItem 23, // 8: product.UpdateProductItemRequest.media:type_name -> product.Media 24, // 9: product.UpdateProductItemRequest.freight:type_name -> product.CustomField 24, // 10: product.UpdateProductItemRequest.custom_fields:type_name -> product.CustomField 2, // 11: product.Category_Service.Create:input_type -> product.CreateCategoryReq 3, // 12: product.Category_Service.Modify:input_type -> product.ModifyCategoryReq 4, // 13: product.Category_Service.Delete:input_type -> product.CategoryReq 4, // 14: product.Category_Service.Get:input_type -> product.CategoryReq 6, // 15: product.Category_Service.List:input_type -> product.ListCategoryReq 8, // 16: product.Tag_Service.Create:input_type -> product.CreateTagsReq 9, // 17: product.Tag_Service.Modify:input_type -> product.ModifyTagsReq 10, // 18: product.Tag_Service.Delete:input_type -> product.TagsReq 10, // 19: product.Tag_Service.Get:input_type -> product.TagsReq 12, // 20: product.Tag_Service.List:input_type -> product.ListTagsReq 15, // 21: product.Kyc_Service.Create:input_type -> product.CreateKycReq 16, // 22: product.Kyc_Service.FindLatestByUid:input_type -> product.FindLatestKycByUIDReq 17, // 23: product.Kyc_Service.FindById:input_type -> product.FindKycByIDReq 18, // 24: product.Kyc_Service.List:input_type -> product.ListKycReq 20, // 25: product.Kyc_Service.UpdateStatus:input_type -> product.UpdateKycStatusReq 21, // 26: product.Kyc_Service.Update:input_type -> product.UpdateKycInfoReq 25, // 27: product.Product_Item_Service.Create:input_type -> product.CreateProductItemRequest 26, // 28: product.Product_Item_Service.Get:input_type -> product.GetProductItemRequest 27, // 29: product.Product_Item_Service.ListByProductId:input_type -> product.ListProductItemRequest 29, // 30: product.Product_Item_Service.Delete:input_type -> product.DeleteProductItemRequest 30, // 31: product.Product_Item_Service.DeleteByReferenceId:input_type -> product.DeleteProductItemsByReferenceIDReq 31, // 32: product.Product_Item_Service.IncSalesCount:input_type -> product.IncDecSalesCountRequest 31, // 33: product.Product_Item_Service.DecSalesCount:input_type -> product.IncDecSalesCountRequest 32, // 34: product.Product_Item_Service.Update:input_type -> product.UpdateProductItemRequest 33, // 35: product.Product_Item_Service.UpdateStatus:input_type -> product.UpdateStatusRequest 0, // 36: product.Category_Service.Create:output_type -> product.OKResp 0, // 37: product.Category_Service.Modify:output_type -> product.OKResp 0, // 38: product.Category_Service.Delete:output_type -> product.OKResp 5, // 39: product.Category_Service.Get:output_type -> product.Category 7, // 40: product.Category_Service.List:output_type -> product.ListCategoryResp 0, // 41: product.Tag_Service.Create:output_type -> product.OKResp 0, // 42: product.Tag_Service.Modify:output_type -> product.OKResp 0, // 43: product.Tag_Service.Delete:output_type -> product.OKResp 11, // 44: product.Tag_Service.Get:output_type -> product.Tags 13, // 45: product.Tag_Service.List:output_type -> product.ListTagsResp 0, // 46: product.Kyc_Service.Create:output_type -> product.OKResp 14, // 47: product.Kyc_Service.FindLatestByUid:output_type -> product.Kyc 14, // 48: product.Kyc_Service.FindById:output_type -> product.Kyc 19, // 49: product.Kyc_Service.List:output_type -> product.ListKycResp 0, // 50: product.Kyc_Service.UpdateStatus:output_type -> product.OKResp 0, // 51: product.Kyc_Service.Update:output_type -> product.OKResp 0, // 52: product.Product_Item_Service.Create:output_type -> product.OKResp 22, // 53: product.Product_Item_Service.Get:output_type -> product.ProductItem 28, // 54: product.Product_Item_Service.ListByProductId:output_type -> product.ListProductItemResponse 0, // 55: product.Product_Item_Service.Delete:output_type -> product.OKResp 0, // 56: product.Product_Item_Service.DeleteByReferenceId:output_type -> product.OKResp 0, // 57: product.Product_Item_Service.IncSalesCount:output_type -> product.OKResp 0, // 58: product.Product_Item_Service.DecSalesCount:output_type -> product.OKResp 0, // 59: product.Product_Item_Service.Update:output_type -> product.OKResp 0, // 60: product.Product_Item_Service.UpdateStatus:output_type -> product.OKResp 36, // [36:61] is the sub-list for method output_type 11, // [11:36] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension extendee 0, // [0:11] is the sub-list for field type_name } func init() { file_generate_protobuf_product_proto_init() } func file_generate_protobuf_product_proto_init() { if File_generate_protobuf_product_proto != nil { return } file_generate_protobuf_product_proto_msgTypes[8].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[9].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[12].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[18].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[20].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[21].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[22].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[23].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[27].OneofWrappers = []any{} file_generate_protobuf_product_proto_msgTypes[32].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_generate_protobuf_product_proto_rawDesc, NumEnums: 0, NumMessages: 34, NumExtensions: 0, NumServices: 4, }, GoTypes: file_generate_protobuf_product_proto_goTypes, DependencyIndexes: file_generate_protobuf_product_proto_depIdxs, MessageInfos: file_generate_protobuf_product_proto_msgTypes, }.Build() File_generate_protobuf_product_proto = out.File file_generate_protobuf_product_proto_rawDesc = nil file_generate_protobuf_product_proto_goTypes = nil file_generate_protobuf_product_proto_depIdxs = nil }