diff --git a/docs/en/api_reference/README.md b/docs/en/api_reference/README.md index 0731db1cef..d5f2127614 100644 --- a/docs/en/api_reference/README.md +++ b/docs/en/api_reference/README.md @@ -13,6 +13,8 @@ In addition to this, Layotto also provides some extension APIs, including: + + email: [spec/proto/extension/v1/email](https://mosn.io/layotto/api/v1/email.html) phone: [spec/proto/extension/v1/phone](https://mosn.io/layotto/api/v1/phone.html) diff --git a/docs/zh/api_reference/README.md b/docs/zh/api_reference/README.md index f0c3815cf3..1ece49f9b7 100644 --- a/docs/zh/api_reference/README.md +++ b/docs/zh/api_reference/README.md @@ -13,6 +13,8 @@ Layotto 有多个 gRPC proto 文件, 对应的接口文档在: + + email: [spec/proto/extension/v1/email](https://mosn.io/layotto/api/v1/email.html) phone: [spec/proto/extension/v1/phone](https://mosn.io/layotto/api/v1/phone.html) diff --git a/etc/script/test-quickstart.sh b/etc/script/test-quickstart.sh index 67d0cd93db..3112958f10 100755 --- a/etc/script/test-quickstart.sh +++ b/etc/script/test-quickstart.sh @@ -11,7 +11,11 @@ GO_VERSION=${1:-"default"} # By default,we test these docs with golang 1.14 quickstarts_in_default="docs/en/start/configuration/start.md -docs/zh/start/lifecycle/start.md + docs/zh/start/phone/start.md + docs/en/start/phone/start.md + docs/zh/start/email/start.md + docs/en/start/email/start.md + docs/zh/start/lifecycle/start.md docs/en/start/lifecycle/start.md docs/zh/start/configuration/start.md docs/en/start/state/start.md diff --git a/pkg/runtime/options_generated.go b/pkg/runtime/options_generated.go index df973bd898..4070d4c1e1 100644 --- a/pkg/runtime/options_generated.go +++ b/pkg/runtime/options_generated.go @@ -18,9 +18,6 @@ package runtime import ( email "mosn.io/layotto/components/email" phone "mosn.io/layotto/components/phone" - email1 "mosn.io/layotto/pkg/grpc/email" - s3 "mosn.io/layotto/pkg/grpc/extension/s3" - phone1 "mosn.io/layotto/pkg/grpc/phone" ) type extensionComponentFactorys struct { @@ -44,11 +41,3 @@ func WithPhoneCallServiceFactory(phone ...*phone.Factory) Option { o.services.phone = append(o.services.phone, phone...) } } - -func WithExtensionGrpcAPI() Option { - return WithGrpcAPI( - s3.NewS3Server, - email1.NewAPI, - phone1.NewAPI, - ) -} diff --git a/spec/proto/extension/v1/email/email.pb.go b/spec/proto/extension/v1/email/email.pb.go index d3d3a1d185..50e1644796 100644 --- a/spec/proto/extension/v1/email/email.pb.go +++ b/spec/proto/extension/v1/email/email.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.14.0 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: spec/proto/extension/v1/email/email.proto package email diff --git a/spec/proto/extension/v1/email/email_grpc.pb.go b/spec/proto/extension/v1/email/email_grpc.pb.go index 94b039b2a6..96b4d6c8a3 100644 --- a/spec/proto/extension/v1/email/email_grpc.pb.go +++ b/spec/proto/extension/v1/email/email_grpc.pb.go @@ -1,4 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.2 +// source: spec/proto/extension/v1/email/email.proto package email diff --git a/spec/proto/extension/v1/phone/phone.pb.go b/spec/proto/extension/v1/phone/phone.pb.go index 28fd57368a..1b4640dda2 100644 --- a/spec/proto/extension/v1/phone/phone.pb.go +++ b/spec/proto/extension/v1/phone/phone.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.14.0 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: spec/proto/extension/v1/phone/phone.proto package phone diff --git a/spec/proto/extension/v1/phone/phone_grpc.pb.go b/spec/proto/extension/v1/phone/phone_grpc.pb.go index b43fecf4f1..3c8009545d 100644 --- a/spec/proto/extension/v1/phone/phone_grpc.pb.go +++ b/spec/proto/extension/v1/phone/phone_grpc.pb.go @@ -1,4 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.2 +// source: spec/proto/extension/v1/phone/phone.proto package phone diff --git a/spec/proto/extension/v1/s3/oss.pb.go b/spec/proto/extension/v1/s3/oss.pb.go index e6a55c6a19..c73c2abeb7 100644 --- a/spec/proto/extension/v1/s3/oss.pb.go +++ b/spec/proto/extension/v1/s3/oss.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc v3.17.3 // source: oss.proto @@ -550,6 +550,8 @@ type PutObjectInput struct { Meta map[string]string `protobuf:"bytes,13,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The tag-set for the object. The tag-set must be encoded as URL Query parameters. Tagging map[string]string `protobuf:"bytes,14,rep,name=tagging,proto3" json:"tagging,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Storage class options. + StorageClass string `protobuf:"bytes,15,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` } func (x *PutObjectInput) Reset() { @@ -682,6 +684,13 @@ func (x *PutObjectInput) GetTagging() map[string]string { return nil } +func (x *PutObjectInput) GetStorageClass() string { + if x != nil { + return x.StorageClass + } + return "" +} + // PutObjectOutput type PutObjectOutput struct { state protoimpl.MessageState @@ -2720,26 +2729,19 @@ func (x *PutObjectCannedAclOutput) GetRequestCharged() string { return "" } -// RestoreObjectInput -type RestoreObjectInput struct { +// GlacierJobParameters +type GlacierJobParameters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. + // Retrieval tier at which the restore will be processed. // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // VersionId used to reference a specific version of the object. - VersionId string `protobuf:"bytes,5,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + Tier string `protobuf:"bytes,1,opt,name=tier,proto3" json:"tier,omitempty"` } -func (x *RestoreObjectInput) Reset() { - *x = RestoreObjectInput{} +func (x *GlacierJobParameters) Reset() { + *x = GlacierJobParameters{} if protoimpl.UnsafeEnabled { mi := &file_oss_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2747,13 +2749,13 @@ func (x *RestoreObjectInput) Reset() { } } -func (x *RestoreObjectInput) String() string { +func (x *GlacierJobParameters) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RestoreObjectInput) ProtoMessage() {} +func (*GlacierJobParameters) ProtoMessage() {} -func (x *RestoreObjectInput) ProtoReflect() protoreflect.Message { +func (x *GlacierJobParameters) ProtoReflect() protoreflect.Message { mi := &file_oss_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2765,55 +2767,34 @@ func (x *RestoreObjectInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RestoreObjectInput.ProtoReflect.Descriptor instead. -func (*RestoreObjectInput) Descriptor() ([]byte, []int) { +// Deprecated: Use GlacierJobParameters.ProtoReflect.Descriptor instead. +func (*GlacierJobParameters) Descriptor() ([]byte, []int) { return file_oss_proto_rawDescGZIP(), []int{29} } -func (x *RestoreObjectInput) GetStoreName() string { - if x != nil { - return x.StoreName - } - return "" -} - -func (x *RestoreObjectInput) GetBucket() string { - if x != nil { - return x.Bucket - } - return "" -} - -func (x *RestoreObjectInput) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *RestoreObjectInput) GetVersionId() string { +func (x *GlacierJobParameters) GetTier() string { if x != nil { - return x.VersionId + return x.Tier } return "" } -// RestoreObjectOutput -type RestoreObjectOutput struct { +// OutPutLocation +type OutputLocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If present, indicates that the requester was successfully charged for the - // request. - RequestCharged string `protobuf:"bytes,1,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` - // Indicates the path in the provided S3 output location where Select results will - // be restored to. - RestoreOutputPath string `protobuf:"bytes,2,opt,name=restore_output_path,json=restoreOutputPath,proto3" json:"restore_output_path,omitempty"` + // The name of the bucket where the restore results will be placed. + // This member is required. + BucketName string `protobuf:"bytes,1,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + // The prefix that is prepended to the restore results for this request. + // This member is required. + Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` } -func (x *RestoreObjectOutput) Reset() { - *x = RestoreObjectOutput{} +func (x *OutputLocation) Reset() { + *x = OutputLocation{} if protoimpl.UnsafeEnabled { mi := &file_oss_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2821,13 +2802,13 @@ func (x *RestoreObjectOutput) Reset() { } } -func (x *RestoreObjectOutput) String() string { +func (x *OutputLocation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RestoreObjectOutput) ProtoMessage() {} +func (*OutputLocation) ProtoMessage() {} -func (x *RestoreObjectOutput) ProtoReflect() protoreflect.Message { +func (x *OutputLocation) ProtoReflect() protoreflect.Message { mi := &file_oss_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2839,112 +2820,70 @@ func (x *RestoreObjectOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RestoreObjectOutput.ProtoReflect.Descriptor instead. -func (*RestoreObjectOutput) Descriptor() ([]byte, []int) { +// Deprecated: Use OutputLocation.ProtoReflect.Descriptor instead. +func (*OutputLocation) Descriptor() ([]byte, []int) { return file_oss_proto_rawDescGZIP(), []int{30} } -func (x *RestoreObjectOutput) GetRequestCharged() string { +func (x *OutputLocation) GetBucketName() string { if x != nil { - return x.RequestCharged + return x.BucketName } return "" } -func (x *RestoreObjectOutput) GetRestoreOutputPath() string { +func (x *OutputLocation) GetPrefix() string { if x != nil { - return x.RestoreOutputPath + return x.Prefix } return "" } -// CreateMultipartUploadInput -type CreateMultipartUploadInput struct { +// CSVInput +type CSVInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // The canned ACL to apply to the object. This action is not supported by Amazon S3 - // on Outposts. - Acl string `protobuf:"bytes,4,opt,name=acl,proto3" json:"acl,omitempty"` - // Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption - // with server-side encryption using AWS KMS (SSE-KMS). Setting this header to true - // causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. - // Specifying this header with a PUT action doesn’t affect bucket-level settings - // for S3 Bucket Key. - BucketKeyEnabled bool `protobuf:"varint,5,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` - // Specifies caching behavior along the request/reply chain - CacheControl string `protobuf:"bytes,6,opt,name=cache_control,json=cacheControl,proto3" json:"cache_control,omitempty"` - // Specifies presentational information for the object - ContentDisposition string `protobuf:"bytes,7,opt,name=content_disposition,json=contentDisposition,proto3" json:"content_disposition,omitempty"` - // Specifies what content encodings have been applied to the object and thus what - // decoding mechanisms must be applied to obtain the media-type referenced by the - // Content-Type header field. - ContentEncoding string `protobuf:"bytes,8,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` - // The language the content is in. - ContentLanguage string `protobuf:"bytes,9,opt,name=content_language,json=contentLanguage,proto3" json:"content_language,omitempty"` - // A standard MIME type describing the format of the object data. - ContentType string `protobuf:"bytes,10,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` - // The account ID of the expected bucket owner. If the bucket is owned by a - // different account, the request fails with the HTTP status code 403 Forbidden - // (access denied). - ExpectedBucketOwner string `protobuf:"bytes,11,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // The date and time at which the object is no longer cacheable. - Expires int64 `protobuf:"varint,12,opt,name=expires,proto3" json:"expires,omitempty"` - // Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. This - // action is not supported by Amazon S3 on Outposts. - GrantFullControl string `protobuf:"bytes,13,opt,name=grant_full_control,json=grantFullControl,proto3" json:"grant_full_control,omitempty"` - // Allows grantee to read the object data and its metadata. This action is not - // supported by Amazon S3 on Outposts. - GrantRead string `protobuf:"bytes,14,opt,name=grant_read,json=grantRead,proto3" json:"grant_read,omitempty"` - // Allows grantee to read the object ACL. This action is not supported by Amazon S3 - // on Outposts. - GrantReadAcp string `protobuf:"bytes,15,opt,name=grant_read_acp,json=grantReadAcp,proto3" json:"grant_read_acp,omitempty"` - // Allows grantee to write the ACL for the applicable object. This action is not - // supported by Amazon S3 on Outposts. - GrantWriteAcp string `protobuf:"bytes,16,opt,name=grant_write_acp,json=grantWriteAcp,proto3" json:"grant_write_acp,omitempty"` - // A map of metadata to store with the object - MetaData map[string]string `protobuf:"bytes,17,rep,name=meta_data,json=metaData,proto3" json:"meta_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Specifies whether you want to apply a legal hold to the uploaded object - ObjectLockLegalHoldStatus string `protobuf:"bytes,18,opt,name=object_lock_legal_hold_status,json=objectLockLegalHoldStatus,proto3" json:"object_lock_legal_hold_status,omitempty"` - // Specifies the Object Lock mode that you want to apply to the uploaded object - ObjectLockMode string `protobuf:"bytes,19,opt,name=object_lock_mode,json=objectLockMode,proto3" json:"object_lock_mode,omitempty"` - // Specifies the date and time when you want the Object Lock to expire - ObjectLockRetainUntilDate int64 `protobuf:"varint,20,opt,name=object_lock_retain_until_date,json=objectLockRetainUntilDate,proto3" json:"object_lock_retain_until_date,omitempty"` - // Confirms that the requester knows that they will be charged for the request - RequestPayer string `protobuf:"bytes,21,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` - // Specifies the algorithm to use to when encrypting the object (for example, - // AES256). - SseCustomerAlgorithm string `protobuf:"bytes,22,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` - // Specifies the customer-provided encryption key to use in encrypting data - SseCustomerKey string `protobuf:"bytes,23,opt,name=sse_customer_key,json=sseCustomerKey,proto3" json:"sse_customer_key,omitempty"` - // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321 - SseCustomerKeyMd5 string `protobuf:"bytes,24,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` - // Specifies the Amazon Web Services KMS Encryption Context to use for object encryption - SseKmsEncryptionContext string `protobuf:"bytes,25,opt,name=sse_kms_encryption_context,json=sseKmsEncryptionContext,proto3" json:"sse_kms_encryption_context,omitempty"` - // Specifies the ID of the symmetric customer managed key to use for object encryption - SseKmsKeyId string `protobuf:"bytes,26,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` - // The server-side encryption algorithm used when storing this object - ServerSideEncryption string `protobuf:"bytes,27,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` - // By default, oss store uses the STANDARD Storage Class to store newly created objects - StorageClass string `protobuf:"bytes,28,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` - // The tag-set for the object. The tag-set must be encoded as URL Query parameters. - Tagging map[string]string `protobuf:"bytes,29,rep,name=tagging,proto3" json:"tagging,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // If the bucket is configured as a website, redirects requests for this object to - // another object in the same bucket or to an external URL. - WebsiteRedirectLocation string `protobuf:"bytes,30,opt,name=website_redirect_location,json=websiteRedirectLocation,proto3" json:"website_redirect_location,omitempty"` -} - -func (x *CreateMultipartUploadInput) Reset() { - *x = CreateMultipartUploadInput{} + // Specifies that CSV field values may contain quoted record delimiters and such + // records should be allowed. Default value is FALSE. Setting this value to TRUE + // may lower performance. + AllowQuotedRecordDelimiter bool `protobuf:"varint,1,opt,name=allow_quoted_record_delimiter,json=allowQuotedRecordDelimiter,proto3" json:"allow_quoted_record_delimiter,omitempty"` + // A single character used to indicate that a row should be ignored when the + // character is present at the start of that row. You can specify any character to + // indicate a comment line. + Comments string `protobuf:"bytes,2,opt,name=comments,proto3" json:"comments,omitempty"` + // A single character used to separate individual fields in a record. You can + // specify an arbitrary delimiter. + FieldDelimiter string `protobuf:"bytes,3,opt,name=field_delimiter,json=fieldDelimiter,proto3" json:"field_delimiter,omitempty"` + // Describes the first line of input. Valid values are: + // + // * NONE: First line is not + // a header. + // + // * IGNORE: First line is a header, but you can't use the header values + // to indicate the column in an expression. You can use column position (such as + // _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s). + // + // * Use: First + // line is a header, and you can use the header value to identify a column in an + // expression (SELECT "name" FROM OBJECT). + FileHeaderInfo string `protobuf:"bytes,4,opt,name=file_header_info,json=fileHeaderInfo,proto3" json:"file_header_info,omitempty"` + // A single character used for escaping when the field delimiter is part of the + // value. For example, if the value is a, b, Amazon S3 wraps this field value in + // quotation marks, as follows: " a , b ". Type: String Default: " Ancestors: CSV + QuoteCharacter string `protobuf:"bytes,5,opt,name=quote_character,json=quoteCharacter,proto3" json:"quote_character,omitempty"` + // A single character used for escaping the quotation mark character inside an + // already escaped value. For example, the value """ a , b """ is parsed as " a , b + // ". + QuoteEscapeCharacter string `protobuf:"bytes,6,opt,name=quote_escape_character,json=quoteEscapeCharacter,proto3" json:"quote_escape_character,omitempty"` + // A single character used to separate individual records in the input. Instead of + // the default value, you can specify an arbitrary delimiter. + RecordDelimiter string `protobuf:"bytes,7,opt,name=record_delimiter,json=recordDelimiter,proto3" json:"record_delimiter,omitempty"` +} + +func (x *CSVInput) Reset() { + *x = CSVInput{} if protoimpl.UnsafeEnabled { mi := &file_oss_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2952,13 +2891,13 @@ func (x *CreateMultipartUploadInput) Reset() { } } -func (x *CreateMultipartUploadInput) String() string { +func (x *CSVInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateMultipartUploadInput) ProtoMessage() {} +func (*CSVInput) ProtoMessage() {} -func (x *CreateMultipartUploadInput) ProtoReflect() protoreflect.Message { +func (x *CSVInput) ProtoReflect() protoreflect.Message { mi := &file_oss_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2970,285 +2909,319 @@ func (x *CreateMultipartUploadInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateMultipartUploadInput.ProtoReflect.Descriptor instead. -func (*CreateMultipartUploadInput) Descriptor() ([]byte, []int) { +// Deprecated: Use CSVInput.ProtoReflect.Descriptor instead. +func (*CSVInput) Descriptor() ([]byte, []int) { return file_oss_proto_rawDescGZIP(), []int{31} } -func (x *CreateMultipartUploadInput) GetStoreName() string { +func (x *CSVInput) GetAllowQuotedRecordDelimiter() bool { if x != nil { - return x.StoreName + return x.AllowQuotedRecordDelimiter } - return "" + return false } -func (x *CreateMultipartUploadInput) GetBucket() string { +func (x *CSVInput) GetComments() string { if x != nil { - return x.Bucket + return x.Comments } return "" } -func (x *CreateMultipartUploadInput) GetKey() string { +func (x *CSVInput) GetFieldDelimiter() string { if x != nil { - return x.Key + return x.FieldDelimiter } return "" } -func (x *CreateMultipartUploadInput) GetAcl() string { +func (x *CSVInput) GetFileHeaderInfo() string { if x != nil { - return x.Acl + return x.FileHeaderInfo } return "" } -func (x *CreateMultipartUploadInput) GetBucketKeyEnabled() bool { +func (x *CSVInput) GetQuoteCharacter() string { if x != nil { - return x.BucketKeyEnabled + return x.QuoteCharacter } - return false + return "" } -func (x *CreateMultipartUploadInput) GetCacheControl() string { +func (x *CSVInput) GetQuoteEscapeCharacter() string { if x != nil { - return x.CacheControl + return x.QuoteEscapeCharacter } return "" } -func (x *CreateMultipartUploadInput) GetContentDisposition() string { +func (x *CSVInput) GetRecordDelimiter() string { if x != nil { - return x.ContentDisposition + return x.RecordDelimiter } return "" } -func (x *CreateMultipartUploadInput) GetContentEncoding() string { - if x != nil { - return x.ContentEncoding +// InputSerialization +type InputSerialization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Describes the serialization of a CSV-encoded object. + Csv *CSVInput `protobuf:"bytes,1,opt,name=csv,proto3" json:"csv,omitempty"` + // Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default + // Value: NONE. + CompressionType string `protobuf:"bytes,2,opt,name=compression_type,json=compressionType,proto3" json:"compression_type,omitempty"` + // Specifies JSON as object's input serialization format. + Json string `protobuf:"bytes,3,opt,name=json,proto3" json:"json,omitempty"` +} + +func (x *InputSerialization) Reset() { + *x = InputSerialization{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *CreateMultipartUploadInput) GetContentLanguage() string { +func (x *InputSerialization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InputSerialization) ProtoMessage() {} + +func (x *InputSerialization) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InputSerialization.ProtoReflect.Descriptor instead. +func (*InputSerialization) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{32} +} + +func (x *InputSerialization) GetCsv() *CSVInput { if x != nil { - return x.ContentLanguage + return x.Csv } - return "" + return nil } -func (x *CreateMultipartUploadInput) GetContentType() string { +func (x *InputSerialization) GetCompressionType() string { if x != nil { - return x.ContentType + return x.CompressionType } return "" } -func (x *CreateMultipartUploadInput) GetExpectedBucketOwner() string { +func (x *InputSerialization) GetJson() string { if x != nil { - return x.ExpectedBucketOwner + return x.Json } return "" } -func (x *CreateMultipartUploadInput) GetExpires() int64 { - if x != nil { - return x.Expires +// CSVOutput +type CSVOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The value used to separate individual fields in a record. You can specify an + // arbitrary delimiter. + FieldDelimiter string `protobuf:"bytes,1,opt,name=field_delimiter,json=fieldDelimiter,proto3" json:"field_delimiter,omitempty"` + // A single character used for escaping when the field delimiter is part of the + // value. For example, if the value is a, b, Amazon S3 wraps this field value in + // quotation marks, as follows: " a , b ". + QuoteCharacter string `protobuf:"bytes,2,opt,name=quote_character,json=quoteCharacter,proto3" json:"quote_character,omitempty"` + // The single character used for escaping the quote character inside an already + // escaped value. + QuoteEscapeCharacter string `protobuf:"bytes,3,opt,name=quote_escape_character,json=quoteEscapeCharacter,proto3" json:"quote_escape_character,omitempty"` + // Indicates whether to use quotation marks around output fields. + // + // * ALWAYS: Always + // use quotation marks for output fields. + // + // * ASNEEDED: Use quotation marks for + // output fields when needed. + QuoteFields string `protobuf:"bytes,4,opt,name=quote_fields,json=quoteFields,proto3" json:"quote_fields,omitempty"` + // A single character used to separate individual records in the output. Instead of + // the default value, you can specify an arbitrary delimiter. + RecordDelimiter string `protobuf:"bytes,5,opt,name=record_delimiter,json=recordDelimiter,proto3" json:"record_delimiter,omitempty"` +} + +func (x *CSVOutput) Reset() { + *x = CSVOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *CreateMultipartUploadInput) GetGrantFullControl() string { - if x != nil { - return x.GrantFullControl +func (x *CSVOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSVOutput) ProtoMessage() {} + +func (x *CSVOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *CreateMultipartUploadInput) GetGrantRead() string { +// Deprecated: Use CSVOutput.ProtoReflect.Descriptor instead. +func (*CSVOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{33} +} + +func (x *CSVOutput) GetFieldDelimiter() string { if x != nil { - return x.GrantRead + return x.FieldDelimiter } return "" } -func (x *CreateMultipartUploadInput) GetGrantReadAcp() string { +func (x *CSVOutput) GetQuoteCharacter() string { if x != nil { - return x.GrantReadAcp + return x.QuoteCharacter } return "" } -func (x *CreateMultipartUploadInput) GetGrantWriteAcp() string { +func (x *CSVOutput) GetQuoteEscapeCharacter() string { if x != nil { - return x.GrantWriteAcp + return x.QuoteEscapeCharacter } return "" } -func (x *CreateMultipartUploadInput) GetMetaData() map[string]string { +func (x *CSVOutput) GetQuoteFields() string { if x != nil { - return x.MetaData + return x.QuoteFields } - return nil + return "" } -func (x *CreateMultipartUploadInput) GetObjectLockLegalHoldStatus() string { - if x != nil { - return x.ObjectLockLegalHoldStatus - } - return "" -} - -func (x *CreateMultipartUploadInput) GetObjectLockMode() string { - if x != nil { - return x.ObjectLockMode - } - return "" -} - -func (x *CreateMultipartUploadInput) GetObjectLockRetainUntilDate() int64 { - if x != nil { - return x.ObjectLockRetainUntilDate - } - return 0 -} - -func (x *CreateMultipartUploadInput) GetRequestPayer() string { +func (x *CSVOutput) GetRecordDelimiter() string { if x != nil { - return x.RequestPayer + return x.RecordDelimiter } return "" } -func (x *CreateMultipartUploadInput) GetSseCustomerAlgorithm() string { - if x != nil { - return x.SseCustomerAlgorithm - } - return "" -} +// OutputSerialization +type OutputSerialization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *CreateMultipartUploadInput) GetSseCustomerKey() string { - if x != nil { - return x.SseCustomerKey - } - return "" + // Describes the serialization of CSV-encoded Select results. + Csv *CSVOutput `protobuf:"bytes,1,opt,name=csv,proto3" json:"csv,omitempty"` + // Specifies JSON as request's output serialization format. + Json string `protobuf:"bytes,2,opt,name=json,proto3" json:"json,omitempty"` } -func (x *CreateMultipartUploadInput) GetSseCustomerKeyMd5() string { - if x != nil { - return x.SseCustomerKeyMd5 +func (x *OutputSerialization) Reset() { + *x = OutputSerialization{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *CreateMultipartUploadInput) GetSseKmsEncryptionContext() string { - if x != nil { - return x.SseKmsEncryptionContext - } - return "" +func (x *OutputSerialization) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *CreateMultipartUploadInput) GetSseKmsKeyId() string { - if x != nil { - return x.SseKmsKeyId - } - return "" -} +func (*OutputSerialization) ProtoMessage() {} -func (x *CreateMultipartUploadInput) GetServerSideEncryption() string { - if x != nil { - return x.ServerSideEncryption +func (x *OutputSerialization) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *CreateMultipartUploadInput) GetStorageClass() string { - if x != nil { - return x.StorageClass - } - return "" +// Deprecated: Use OutputSerialization.ProtoReflect.Descriptor instead. +func (*OutputSerialization) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{34} } -func (x *CreateMultipartUploadInput) GetTagging() map[string]string { +func (x *OutputSerialization) GetCsv() *CSVOutput { if x != nil { - return x.Tagging + return x.Csv } return nil } -func (x *CreateMultipartUploadInput) GetWebsiteRedirectLocation() string { +func (x *OutputSerialization) GetJson() string { if x != nil { - return x.WebsiteRedirectLocation + return x.Json } return "" } -// CreateMultipartUploadOutput -type CreateMultipartUploadOutput struct { +// SelectParameters +type SelectParameters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. + // The expression that is used to query the object. // This member is required. - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - // If the bucket has a lifecycle rule configured with an action to abort incomplete - // multipart uploads and the prefix in the lifecycle rule matches the object name - // in the request, the response includes this header - AbortDate int64 `protobuf:"varint,3,opt,name=abort_date,json=abortDate,proto3" json:"abort_date,omitempty"` - // It identifies the applicable lifecycle configuration rule that defines the action to abort - // incomplete multipart uploads. - AbortRuleId string `protobuf:"bytes,4,opt,name=abort_rule_id,json=abortRuleId,proto3" json:"abort_rule_id,omitempty"` - // Indicates whether the multipart upload uses an S3 Bucket Key for server-side - // encryption with Amazon Web Services KMS (SSE-KMS). - BucketKeyEnabled bool `protobuf:"varint,5,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` - // If present, indicates that the requester was successfully charged for the - // request. - RequestCharged string `protobuf:"bytes,6,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` - // If server-side encryption with a customer-provided encryption key was requested, - // the response will include this header confirming the encryption algorithm used. - SseCustomerAlgorithm string `protobuf:"bytes,7,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` - // If server-side encryption with a customer-provided encryption key was requested, - // the response will include this header to provide round-trip message integrity - // verification of the customer-provided encryption key. - SseCustomerKeyMd5 string `protobuf:"bytes,8,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` - // If present, specifies the Amazon Web Services KMS Encryption Context to use for - // object encryption. The value of this header is a base64-encoded UTF-8 string - // holding JSON with the encryption context key-value pairs. - SseKmsEncryptionContext string `protobuf:"bytes,9,opt,name=sse_kms_encryption_context,json=sseKmsEncryptionContext,proto3" json:"sse_kms_encryption_context,omitempty"` - // If present, specifies the ID of the Amazon Web Services Key Management Service - // (Amazon Web Services KMS) symmetric customer managed key that was used for the - // object. - SseKmsKeyId string `protobuf:"bytes,10,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` - // The server-side encryption algorithm used when storing this object in Amazon S3 - // (for example, AES256, aws:kms). - ServerSideEncryption string `protobuf:"bytes,11,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` - // ID for the initiated multipart upload. - UploadId string `protobuf:"bytes,12,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` + // The type of the provided expression (for example, SQL). + // This member is required. + ExpressionType string `protobuf:"bytes,2,opt,name=expression_type,json=expressionType,proto3" json:"expression_type,omitempty"` + // Describes the serialization format of the object. + // This member is required. + InputSerialization *InputSerialization `protobuf:"bytes,3,opt,name=input_serialization,json=inputSerialization,proto3" json:"input_serialization,omitempty"` + // Describes how the results of the Select job are serialized. + // This member is required. + OutputSerialization *OutputSerialization `protobuf:"bytes,4,opt,name=output_serialization,json=outputSerialization,proto3" json:"output_serialization,omitempty"` } -func (x *CreateMultipartUploadOutput) Reset() { - *x = CreateMultipartUploadOutput{} +func (x *SelectParameters) Reset() { + *x = SelectParameters{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[32] + mi := &file_oss_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateMultipartUploadOutput) String() string { +func (x *SelectParameters) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateMultipartUploadOutput) ProtoMessage() {} +func (*SelectParameters) ProtoMessage() {} -func (x *CreateMultipartUploadOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[32] +func (x *SelectParameters) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3259,97 +3232,144 @@ func (x *CreateMultipartUploadOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateMultipartUploadOutput.ProtoReflect.Descriptor instead. -func (*CreateMultipartUploadOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{32} +// Deprecated: Use SelectParameters.ProtoReflect.Descriptor instead. +func (*SelectParameters) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{35} } -func (x *CreateMultipartUploadOutput) GetBucket() string { +func (x *SelectParameters) GetExpression() string { if x != nil { - return x.Bucket + return x.Expression } return "" } -func (x *CreateMultipartUploadOutput) GetKey() string { +func (x *SelectParameters) GetExpressionType() string { if x != nil { - return x.Key + return x.ExpressionType } return "" } -func (x *CreateMultipartUploadOutput) GetAbortDate() int64 { +func (x *SelectParameters) GetInputSerialization() *InputSerialization { if x != nil { - return x.AbortDate + return x.InputSerialization } - return 0 + return nil } -func (x *CreateMultipartUploadOutput) GetAbortRuleId() string { +func (x *SelectParameters) GetOutputSerialization() *OutputSerialization { if x != nil { - return x.AbortRuleId + return x.OutputSerialization } - return "" + return nil } -func (x *CreateMultipartUploadOutput) GetBucketKeyEnabled() bool { - if x != nil { - return x.BucketKeyEnabled +// RestoreRequest +type RestoreRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Lifetime of the active copy in days. + Days int32 `protobuf:"varint,1,opt,name=days,proto3" json:"days,omitempty"` + // The optional description for the job. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // S3 Glacier related parameters pertaining to this job. + GlacierJobParameters *GlacierJobParameters `protobuf:"bytes,3,opt,name=glacier_job_parameters,json=glacierJobParameters,proto3" json:"glacier_job_parameters,omitempty"` + // Describes the location where the restore job's output is stored. + OutputLocation *OutputLocation `protobuf:"bytes,4,opt,name=output_location,json=outputLocation,proto3" json:"output_location,omitempty"` + // Describes the parameters for Select job types. + SelectParameters *SelectParameters `protobuf:"bytes,5,opt,name=select_parameters,json=selectParameters,proto3" json:"select_parameters,omitempty"` + // Retrieval tier at which the restore will be processed. + Tier string `protobuf:"bytes,6,opt,name=tier,proto3" json:"tier,omitempty"` + // Type of restore request. + Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *RestoreRequest) Reset() { + *x = RestoreRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *CreateMultipartUploadOutput) GetRequestCharged() string { +func (x *RestoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RestoreRequest) ProtoMessage() {} + +func (x *RestoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RestoreRequest.ProtoReflect.Descriptor instead. +func (*RestoreRequest) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{36} +} + +func (x *RestoreRequest) GetDays() int32 { if x != nil { - return x.RequestCharged + return x.Days } - return "" + return 0 } -func (x *CreateMultipartUploadOutput) GetSseCustomerAlgorithm() string { +func (x *RestoreRequest) GetDescription() string { if x != nil { - return x.SseCustomerAlgorithm + return x.Description } return "" } -func (x *CreateMultipartUploadOutput) GetSseCustomerKeyMd5() string { +func (x *RestoreRequest) GetGlacierJobParameters() *GlacierJobParameters { if x != nil { - return x.SseCustomerKeyMd5 + return x.GlacierJobParameters } - return "" + return nil } -func (x *CreateMultipartUploadOutput) GetSseKmsEncryptionContext() string { +func (x *RestoreRequest) GetOutputLocation() *OutputLocation { if x != nil { - return x.SseKmsEncryptionContext + return x.OutputLocation } - return "" + return nil } -func (x *CreateMultipartUploadOutput) GetSseKmsKeyId() string { +func (x *RestoreRequest) GetSelectParameters() *SelectParameters { if x != nil { - return x.SseKmsKeyId + return x.SelectParameters } - return "" + return nil } -func (x *CreateMultipartUploadOutput) GetServerSideEncryption() string { +func (x *RestoreRequest) GetTier() string { if x != nil { - return x.ServerSideEncryption + return x.Tier } return "" } -func (x *CreateMultipartUploadOutput) GetUploadId() string { +func (x *RestoreRequest) GetType() string { if x != nil { - return x.UploadId + return x.Type } return "" } -// UploadPartInput -type UploadPartInput struct { +// RestoreObjectInput +type RestoreObjectInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -3362,50 +3382,29 @@ type UploadPartInput struct { // Name of the object key. // This member is required. Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // Object data. - Body []byte `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` - // Size of the body in bytes. This parameter is useful when the size of the body - // cannot be determined automatically. - ContentLength int64 `protobuf:"varint,5,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` - // The base64-encoded 128-bit MD5 digest of the part data. - ContentMd5 string `protobuf:"bytes,6,opt,name=content_md5,json=contentMd5,proto3" json:"content_md5,omitempty"` - // The account ID of the expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,7,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // Part number of part being uploaded. This is a positive integer between 1 and 10,000. - // This member is required. - PartNumber int32 `protobuf:"varint,8,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` - // Confirms that the requester knows that they will be charged for the request. - RequestPayer string `protobuf:"bytes,9,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` - // Specifies the algorithm to use to when encrypting the object (for example, - // AES256). - SseCustomerAlgorithm string `protobuf:"bytes,10,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` - // Specifies the customer-provided encryption key for Amazon S3 to use in - // encrypting data - SseCustomerKey string `protobuf:"bytes,11,opt,name=sse_customer_key,json=sseCustomerKey,proto3" json:"sse_customer_key,omitempty"` - // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. - SseCustomerKeyMd5 string `protobuf:"bytes,12,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` - // Upload ID identifying the multipart upload whose part is being uploaded. - // This member is required. - UploadId string `protobuf:"bytes,13,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + // The information of restoring request. + RestoreRequest *RestoreRequest `protobuf:"bytes,4,opt,name=restore_request,json=restoreRequest,proto3" json:"restore_request,omitempty"` + // VersionId used to reference a specific version of the object. + VersionId string `protobuf:"bytes,5,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } -func (x *UploadPartInput) Reset() { - *x = UploadPartInput{} +func (x *RestoreObjectInput) Reset() { + *x = RestoreObjectInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[33] + mi := &file_oss_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UploadPartInput) String() string { +func (x *RestoreObjectInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UploadPartInput) ProtoMessage() {} +func (*RestoreObjectInput) ProtoMessage() {} -func (x *UploadPartInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[33] +func (x *RestoreObjectInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3416,145 +3415,208 @@ func (x *UploadPartInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UploadPartInput.ProtoReflect.Descriptor instead. -func (*UploadPartInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{33} +// Deprecated: Use RestoreObjectInput.ProtoReflect.Descriptor instead. +func (*RestoreObjectInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{37} } -func (x *UploadPartInput) GetStoreName() string { +func (x *RestoreObjectInput) GetStoreName() string { if x != nil { return x.StoreName } return "" } -func (x *UploadPartInput) GetBucket() string { +func (x *RestoreObjectInput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *UploadPartInput) GetKey() string { +func (x *RestoreObjectInput) GetKey() string { if x != nil { return x.Key } return "" } -func (x *UploadPartInput) GetBody() []byte { +func (x *RestoreObjectInput) GetRestoreRequest() *RestoreRequest { if x != nil { - return x.Body + return x.RestoreRequest } return nil } -func (x *UploadPartInput) GetContentLength() int64 { - if x != nil { - return x.ContentLength - } - return 0 -} - -func (x *UploadPartInput) GetContentMd5() string { +func (x *RestoreObjectInput) GetVersionId() string { if x != nil { - return x.ContentMd5 + return x.VersionId } return "" } -func (x *UploadPartInput) GetExpectedBucketOwner() string { - if x != nil { - return x.ExpectedBucketOwner - } - return "" +// RestoreObjectOutput +type RestoreObjectOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged string `protobuf:"bytes,1,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` + // Indicates the path in the provided S3 output location where Select results will + // be restored to. + RestoreOutputPath string `protobuf:"bytes,2,opt,name=restore_output_path,json=restoreOutputPath,proto3" json:"restore_output_path,omitempty"` } -func (x *UploadPartInput) GetPartNumber() int32 { - if x != nil { - return x.PartNumber +func (x *RestoreObjectOutput) Reset() { + *x = RestoreObjectOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *UploadPartInput) GetRequestPayer() string { - if x != nil { - return x.RequestPayer - } - return "" +func (x *RestoreObjectOutput) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *UploadPartInput) GetSseCustomerAlgorithm() string { - if x != nil { - return x.SseCustomerAlgorithm +func (*RestoreObjectOutput) ProtoMessage() {} + +func (x *RestoreObjectOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *UploadPartInput) GetSseCustomerKey() string { - if x != nil { - return x.SseCustomerKey - } - return "" +// Deprecated: Use RestoreObjectOutput.ProtoReflect.Descriptor instead. +func (*RestoreObjectOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{38} } -func (x *UploadPartInput) GetSseCustomerKeyMd5() string { +func (x *RestoreObjectOutput) GetRequestCharged() string { if x != nil { - return x.SseCustomerKeyMd5 + return x.RequestCharged } return "" } -func (x *UploadPartInput) GetUploadId() string { +func (x *RestoreObjectOutput) GetRestoreOutputPath() string { if x != nil { - return x.UploadId + return x.RestoreOutputPath } return "" } -// UploadPartOutput -type UploadPartOutput struct { +// CreateMultipartUploadInput +type CreateMultipartUploadInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Indicates whether the multipart upload uses an S3 Bucket Key for server-side - // encryption with Amazon Web Services KMS (SSE-KMS). - BucketKeyEnabled bool `protobuf:"varint,1,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` - // Entity tag for the uploaded object. - Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` - // If present, indicates that the requester was successfully charged for the - // request. - RequestCharged string `protobuf:"bytes,3,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // The canned ACL to apply to the object. This action is not supported by Amazon S3 + // on Outposts. + Acl string `protobuf:"bytes,4,opt,name=acl,proto3" json:"acl,omitempty"` + // Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption + // with server-side encryption using AWS KMS (SSE-KMS). Setting this header to true + // causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. + // Specifying this header with a PUT action doesn’t affect bucket-level settings + // for S3 Bucket Key. + BucketKeyEnabled bool `protobuf:"varint,5,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` + // Specifies caching behavior along the request/reply chain + CacheControl string `protobuf:"bytes,6,opt,name=cache_control,json=cacheControl,proto3" json:"cache_control,omitempty"` + // Specifies presentational information for the object + ContentDisposition string `protobuf:"bytes,7,opt,name=content_disposition,json=contentDisposition,proto3" json:"content_disposition,omitempty"` + // Specifies what content encodings have been applied to the object and thus what + // decoding mechanisms must be applied to obtain the media-type referenced by the + // Content-Type header field. + ContentEncoding string `protobuf:"bytes,8,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + // The language the content is in. + ContentLanguage string `protobuf:"bytes,9,opt,name=content_language,json=contentLanguage,proto3" json:"content_language,omitempty"` + // A standard MIME type describing the format of the object data. + ContentType string `protobuf:"bytes,10,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` + // The account ID of the expected bucket owner. If the bucket is owned by a + // different account, the request fails with the HTTP status code 403 Forbidden + // (access denied). + ExpectedBucketOwner string `protobuf:"bytes,11,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // The date and time at which the object is no longer cacheable. + Expires int64 `protobuf:"varint,12,opt,name=expires,proto3" json:"expires,omitempty"` + // Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. This + // action is not supported by Amazon S3 on Outposts. + GrantFullControl string `protobuf:"bytes,13,opt,name=grant_full_control,json=grantFullControl,proto3" json:"grant_full_control,omitempty"` + // Allows grantee to read the object data and its metadata. This action is not + // supported by Amazon S3 on Outposts. + GrantRead string `protobuf:"bytes,14,opt,name=grant_read,json=grantRead,proto3" json:"grant_read,omitempty"` + // Allows grantee to read the object ACL. This action is not supported by Amazon S3 + // on Outposts. + GrantReadAcp string `protobuf:"bytes,15,opt,name=grant_read_acp,json=grantReadAcp,proto3" json:"grant_read_acp,omitempty"` + // Allows grantee to write the ACL for the applicable object. This action is not + // supported by Amazon S3 on Outposts. + GrantWriteAcp string `protobuf:"bytes,16,opt,name=grant_write_acp,json=grantWriteAcp,proto3" json:"grant_write_acp,omitempty"` + // A map of metadata to store with the object + MetaData map[string]string `protobuf:"bytes,17,rep,name=meta_data,json=metaData,proto3" json:"meta_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Specifies whether you want to apply a legal hold to the uploaded object + ObjectLockLegalHoldStatus string `protobuf:"bytes,18,opt,name=object_lock_legal_hold_status,json=objectLockLegalHoldStatus,proto3" json:"object_lock_legal_hold_status,omitempty"` + // Specifies the Object Lock mode that you want to apply to the uploaded object + ObjectLockMode string `protobuf:"bytes,19,opt,name=object_lock_mode,json=objectLockMode,proto3" json:"object_lock_mode,omitempty"` + // Specifies the date and time when you want the Object Lock to expire + ObjectLockRetainUntilDate int64 `protobuf:"varint,20,opt,name=object_lock_retain_until_date,json=objectLockRetainUntilDate,proto3" json:"object_lock_retain_until_date,omitempty"` + // Confirms that the requester knows that they will be charged for the request + RequestPayer string `protobuf:"bytes,21,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` // Specifies the algorithm to use to when encrypting the object (for example, // AES256). - SseCustomerAlgorithm string `protobuf:"bytes,4,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` - // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. - SseCustomerKeyMd5 string `protobuf:"bytes,5,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + SseCustomerAlgorithm string `protobuf:"bytes,22,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` + // Specifies the customer-provided encryption key to use in encrypting data + SseCustomerKey string `protobuf:"bytes,23,opt,name=sse_customer_key,json=sseCustomerKey,proto3" json:"sse_customer_key,omitempty"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321 + SseCustomerKeyMd5 string `protobuf:"bytes,24,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + // Specifies the Amazon Web Services KMS Encryption Context to use for object encryption + SseKmsEncryptionContext string `protobuf:"bytes,25,opt,name=sse_kms_encryption_context,json=sseKmsEncryptionContext,proto3" json:"sse_kms_encryption_context,omitempty"` // Specifies the ID of the symmetric customer managed key to use for object encryption - SseKmsKeyId string `protobuf:"bytes,6,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` - // The server-side encryption algorithm used when storing this object in Amazon S3 - // (for example, AES256, aws:kms). - ServerSideEncryption string `protobuf:"bytes,7,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + SseKmsKeyId string `protobuf:"bytes,26,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` + // The server-side encryption algorithm used when storing this object + ServerSideEncryption string `protobuf:"bytes,27,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + // By default, oss store uses the STANDARD Storage Class to store newly created objects + StorageClass string `protobuf:"bytes,28,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` + // The tag-set for the object. The tag-set must be encoded as URL Query parameters. + Tagging map[string]string `protobuf:"bytes,29,rep,name=tagging,proto3" json:"tagging,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // If the bucket is configured as a website, redirects requests for this object to + // another object in the same bucket or to an external URL. + WebsiteRedirectLocation string `protobuf:"bytes,30,opt,name=website_redirect_location,json=websiteRedirectLocation,proto3" json:"website_redirect_location,omitempty"` } -func (x *UploadPartOutput) Reset() { - *x = UploadPartOutput{} +func (x *CreateMultipartUploadInput) Reset() { + *x = CreateMultipartUploadInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[34] + mi := &file_oss_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UploadPartOutput) String() string { +func (x *CreateMultipartUploadInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UploadPartOutput) ProtoMessage() {} +func (*CreateMultipartUploadInput) ProtoMessage() {} -func (x *UploadPartOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[34] +func (x *CreateMultipartUploadInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3565,284 +3627,285 @@ func (x *UploadPartOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UploadPartOutput.ProtoReflect.Descriptor instead. -func (*UploadPartOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{34} +// Deprecated: Use CreateMultipartUploadInput.ProtoReflect.Descriptor instead. +func (*CreateMultipartUploadInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{39} } -func (x *UploadPartOutput) GetBucketKeyEnabled() bool { +func (x *CreateMultipartUploadInput) GetStoreName() string { + if x != nil { + return x.StoreName + } + return "" +} + +func (x *CreateMultipartUploadInput) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *CreateMultipartUploadInput) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *CreateMultipartUploadInput) GetAcl() string { + if x != nil { + return x.Acl + } + return "" +} + +func (x *CreateMultipartUploadInput) GetBucketKeyEnabled() bool { if x != nil { return x.BucketKeyEnabled } return false } -func (x *UploadPartOutput) GetEtag() string { +func (x *CreateMultipartUploadInput) GetCacheControl() string { if x != nil { - return x.Etag + return x.CacheControl } return "" } -func (x *UploadPartOutput) GetRequestCharged() string { +func (x *CreateMultipartUploadInput) GetContentDisposition() string { if x != nil { - return x.RequestCharged + return x.ContentDisposition } return "" } -func (x *UploadPartOutput) GetSseCustomerAlgorithm() string { +func (x *CreateMultipartUploadInput) GetContentEncoding() string { if x != nil { - return x.SseCustomerAlgorithm + return x.ContentEncoding } return "" } -func (x *UploadPartOutput) GetSseCustomerKeyMd5() string { +func (x *CreateMultipartUploadInput) GetContentLanguage() string { if x != nil { - return x.SseCustomerKeyMd5 + return x.ContentLanguage } return "" } -func (x *UploadPartOutput) GetSseKmsKeyId() string { +func (x *CreateMultipartUploadInput) GetContentType() string { if x != nil { - return x.SseKmsKeyId + return x.ContentType } return "" } -func (x *UploadPartOutput) GetServerSideEncryption() string { +func (x *CreateMultipartUploadInput) GetExpectedBucketOwner() string { if x != nil { - return x.ServerSideEncryption + return x.ExpectedBucketOwner } return "" } -// UploadPartCopyInput -type UploadPartCopyInput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *CreateMultipartUploadInput) GetExpires() int64 { + if x != nil { + return x.Expires + } + return 0 +} - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // CopySource - CopySource *CopySource `protobuf:"bytes,4,opt,name=copy_source,json=copySource,proto3" json:"copy_source,omitempty"` - // Part number of part being copied. This is a positive integer between 1 and 10,000. - // This member is required. - PartNumber int32 `protobuf:"varint,5,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` - // Upload ID identifying the multipart upload whose part is being copied. - // This member is required. - UploadId string `protobuf:"bytes,6,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` - // The range of bytes to copy from the source object.bytes=start_position-part_size - StartPosition int64 `protobuf:"varint,7,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` - // Part size - PartSize int64 `protobuf:"varint,8,opt,name=part_size,json=partSize,proto3" json:"part_size,omitempty"` -} - -func (x *UploadPartCopyInput) Reset() { - *x = UploadPartCopyInput{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *CreateMultipartUploadInput) GetGrantFullControl() string { + if x != nil { + return x.GrantFullControl } + return "" } -func (x *UploadPartCopyInput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UploadPartCopyInput) ProtoMessage() {} - -func (x *UploadPartCopyInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CreateMultipartUploadInput) GetGrantRead() string { + if x != nil { + return x.GrantRead } - return mi.MessageOf(x) + return "" } -// Deprecated: Use UploadPartCopyInput.ProtoReflect.Descriptor instead. -func (*UploadPartCopyInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{35} +func (x *CreateMultipartUploadInput) GetGrantReadAcp() string { + if x != nil { + return x.GrantReadAcp + } + return "" } -func (x *UploadPartCopyInput) GetStoreName() string { +func (x *CreateMultipartUploadInput) GetGrantWriteAcp() string { if x != nil { - return x.StoreName + return x.GrantWriteAcp } return "" } -func (x *UploadPartCopyInput) GetBucket() string { +func (x *CreateMultipartUploadInput) GetMetaData() map[string]string { if x != nil { - return x.Bucket + return x.MetaData } - return "" + return nil } -func (x *UploadPartCopyInput) GetKey() string { +func (x *CreateMultipartUploadInput) GetObjectLockLegalHoldStatus() string { if x != nil { - return x.Key + return x.ObjectLockLegalHoldStatus } return "" } -func (x *UploadPartCopyInput) GetCopySource() *CopySource { +func (x *CreateMultipartUploadInput) GetObjectLockMode() string { if x != nil { - return x.CopySource + return x.ObjectLockMode } - return nil + return "" } -func (x *UploadPartCopyInput) GetPartNumber() int32 { +func (x *CreateMultipartUploadInput) GetObjectLockRetainUntilDate() int64 { if x != nil { - return x.PartNumber + return x.ObjectLockRetainUntilDate } return 0 } -func (x *UploadPartCopyInput) GetUploadId() string { +func (x *CreateMultipartUploadInput) GetRequestPayer() string { if x != nil { - return x.UploadId + return x.RequestPayer } return "" } -func (x *UploadPartCopyInput) GetStartPosition() int64 { +func (x *CreateMultipartUploadInput) GetSseCustomerAlgorithm() string { if x != nil { - return x.StartPosition + return x.SseCustomerAlgorithm } - return 0 + return "" } -func (x *UploadPartCopyInput) GetPartSize() int64 { +func (x *CreateMultipartUploadInput) GetSseCustomerKey() string { if x != nil { - return x.PartSize + return x.SseCustomerKey } - return 0 + return "" } -// CopyPartResult -type CopyPartResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Entity tag of the object. - Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` - // Last modified time - LastModified int64 `protobuf:"varint,2,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` +func (x *CreateMultipartUploadInput) GetSseCustomerKeyMd5() string { + if x != nil { + return x.SseCustomerKeyMd5 + } + return "" } -func (x *CopyPartResult) Reset() { - *x = CopyPartResult{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *CreateMultipartUploadInput) GetSseKmsEncryptionContext() string { + if x != nil { + return x.SseKmsEncryptionContext } + return "" } -func (x *CopyPartResult) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *CreateMultipartUploadInput) GetSseKmsKeyId() string { + if x != nil { + return x.SseKmsKeyId + } + return "" } -func (*CopyPartResult) ProtoMessage() {} - -func (x *CopyPartResult) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CreateMultipartUploadInput) GetServerSideEncryption() string { + if x != nil { + return x.ServerSideEncryption } - return mi.MessageOf(x) + return "" } -// Deprecated: Use CopyPartResult.ProtoReflect.Descriptor instead. -func (*CopyPartResult) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{36} +func (x *CreateMultipartUploadInput) GetStorageClass() string { + if x != nil { + return x.StorageClass + } + return "" } -func (x *CopyPartResult) GetEtag() string { +func (x *CreateMultipartUploadInput) GetTagging() map[string]string { if x != nil { - return x.Etag + return x.Tagging } - return "" + return nil } -func (x *CopyPartResult) GetLastModified() int64 { +func (x *CreateMultipartUploadInput) GetWebsiteRedirectLocation() string { if x != nil { - return x.LastModified + return x.WebsiteRedirectLocation } - return 0 + return "" } -// UploadPartCopyOutput -type UploadPartCopyOutput struct { +// CreateMultipartUploadOutput +type CreateMultipartUploadOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // If the bucket has a lifecycle rule configured with an action to abort incomplete + // multipart uploads and the prefix in the lifecycle rule matches the object name + // in the request, the response includes this header + AbortDate int64 `protobuf:"varint,3,opt,name=abort_date,json=abortDate,proto3" json:"abort_date,omitempty"` + // It identifies the applicable lifecycle configuration rule that defines the action to abort + // incomplete multipart uploads. + AbortRuleId string `protobuf:"bytes,4,opt,name=abort_rule_id,json=abortRuleId,proto3" json:"abort_rule_id,omitempty"` // Indicates whether the multipart upload uses an S3 Bucket Key for server-side // encryption with Amazon Web Services KMS (SSE-KMS). - BucketKeyEnabled bool `protobuf:"varint,1,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` - // Container for all response elements. - CopyPartResult *CopyPartResult `protobuf:"bytes,2,opt,name=copy_part_result,json=copyPartResult,proto3" json:"copy_part_result,omitempty"` - // The version of the source object that was copied, if you have enabled versioning - // on the source bucket. - CopySourceVersionId string `protobuf:"bytes,3,opt,name=copy_source_version_id,json=copySourceVersionId,proto3" json:"copy_source_version_id,omitempty"` + BucketKeyEnabled bool `protobuf:"varint,5,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` // If present, indicates that the requester was successfully charged for the // request. - RequestCharged string `protobuf:"bytes,4,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` + RequestCharged string `protobuf:"bytes,6,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` // If server-side encryption with a customer-provided encryption key was requested, // the response will include this header confirming the encryption algorithm used. - SseCustomerAlgorithm string `protobuf:"bytes,5,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` + SseCustomerAlgorithm string `protobuf:"bytes,7,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` // If server-side encryption with a customer-provided encryption key was requested, // the response will include this header to provide round-trip message integrity // verification of the customer-provided encryption key. - SseCustomerKeyMd5 string `protobuf:"bytes,6,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + SseCustomerKeyMd5 string `protobuf:"bytes,8,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + // If present, specifies the Amazon Web Services KMS Encryption Context to use for + // object encryption. The value of this header is a base64-encoded UTF-8 string + // holding JSON with the encryption context key-value pairs. + SseKmsEncryptionContext string `protobuf:"bytes,9,opt,name=sse_kms_encryption_context,json=sseKmsEncryptionContext,proto3" json:"sse_kms_encryption_context,omitempty"` // If present, specifies the ID of the Amazon Web Services Key Management Service // (Amazon Web Services KMS) symmetric customer managed key that was used for the // object. - SseKmsKeyId string `protobuf:"bytes,7,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` + SseKmsKeyId string `protobuf:"bytes,10,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` // The server-side encryption algorithm used when storing this object in Amazon S3 // (for example, AES256, aws:kms). - ServerSideEncryption string `protobuf:"bytes,8,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + ServerSideEncryption string `protobuf:"bytes,11,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + // ID for the initiated multipart upload. + UploadId string `protobuf:"bytes,12,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` } -func (x *UploadPartCopyOutput) Reset() { - *x = UploadPartCopyOutput{} +func (x *CreateMultipartUploadOutput) Reset() { + *x = CreateMultipartUploadOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[37] + mi := &file_oss_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UploadPartCopyOutput) String() string { +func (x *CreateMultipartUploadOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UploadPartCopyOutput) ProtoMessage() {} +func (*CreateMultipartUploadOutput) ProtoMessage() {} -func (x *UploadPartCopyOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[37] +func (x *CreateMultipartUploadOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3853,177 +3916,97 @@ func (x *UploadPartCopyOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UploadPartCopyOutput.ProtoReflect.Descriptor instead. -func (*UploadPartCopyOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{37} +// Deprecated: Use CreateMultipartUploadOutput.ProtoReflect.Descriptor instead. +func (*CreateMultipartUploadOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{40} } -func (x *UploadPartCopyOutput) GetBucketKeyEnabled() bool { +func (x *CreateMultipartUploadOutput) GetBucket() string { if x != nil { - return x.BucketKeyEnabled + return x.Bucket } - return false + return "" } -func (x *UploadPartCopyOutput) GetCopyPartResult() *CopyPartResult { +func (x *CreateMultipartUploadOutput) GetKey() string { if x != nil { - return x.CopyPartResult + return x.Key } - return nil + return "" } -func (x *UploadPartCopyOutput) GetCopySourceVersionId() string { +func (x *CreateMultipartUploadOutput) GetAbortDate() int64 { if x != nil { - return x.CopySourceVersionId + return x.AbortDate } - return "" + return 0 } -func (x *UploadPartCopyOutput) GetRequestCharged() string { +func (x *CreateMultipartUploadOutput) GetAbortRuleId() string { if x != nil { - return x.RequestCharged + return x.AbortRuleId } return "" } -func (x *UploadPartCopyOutput) GetSseCustomerAlgorithm() string { +func (x *CreateMultipartUploadOutput) GetBucketKeyEnabled() bool { if x != nil { - return x.SseCustomerAlgorithm + return x.BucketKeyEnabled } - return "" + return false } -func (x *UploadPartCopyOutput) GetSseCustomerKeyMd5() string { +func (x *CreateMultipartUploadOutput) GetRequestCharged() string { if x != nil { - return x.SseCustomerKeyMd5 + return x.RequestCharged } return "" } -func (x *UploadPartCopyOutput) GetSseKmsKeyId() string { +func (x *CreateMultipartUploadOutput) GetSseCustomerAlgorithm() string { if x != nil { - return x.SseKmsKeyId + return x.SseCustomerAlgorithm } return "" } -func (x *UploadPartCopyOutput) GetServerSideEncryption() string { +func (x *CreateMultipartUploadOutput) GetSseCustomerKeyMd5() string { if x != nil { - return x.ServerSideEncryption + return x.SseCustomerKeyMd5 } return "" } -// CompletedPart -type CompletedPart struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Entity tag returned when the part was uploaded. - Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` - // Part number that identifies the part. This is a positive integer between 1 and - // 10,000. - PartNumber int32 `protobuf:"varint,2,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` -} - -func (x *CompletedPart) Reset() { - *x = CompletedPart{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CompletedPart) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CompletedPart) ProtoMessage() {} - -func (x *CompletedPart) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CompletedPart.ProtoReflect.Descriptor instead. -func (*CompletedPart) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{38} -} - -func (x *CompletedPart) GetEtag() string { +func (x *CreateMultipartUploadOutput) GetSseKmsEncryptionContext() string { if x != nil { - return x.Etag + return x.SseKmsEncryptionContext } return "" } -func (x *CompletedPart) GetPartNumber() int32 { +func (x *CreateMultipartUploadOutput) GetSseKmsKeyId() string { if x != nil { - return x.PartNumber - } - return 0 -} - -// CompletedMultipartUpload -type CompletedMultipartUpload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Array of CompletedPart data types. - Parts []*CompletedPart `protobuf:"bytes,1,rep,name=parts,proto3" json:"parts,omitempty"` -} - -func (x *CompletedMultipartUpload) Reset() { - *x = CompletedMultipartUpload{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + return x.SseKmsKeyId } + return "" } -func (x *CompletedMultipartUpload) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CompletedMultipartUpload) ProtoMessage() {} - -func (x *CompletedMultipartUpload) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CreateMultipartUploadOutput) GetServerSideEncryption() string { + if x != nil { + return x.ServerSideEncryption } - return mi.MessageOf(x) -} - -// Deprecated: Use CompletedMultipartUpload.ProtoReflect.Descriptor instead. -func (*CompletedMultipartUpload) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{39} + return "" } -func (x *CompletedMultipartUpload) GetParts() []*CompletedPart { +func (x *CreateMultipartUploadOutput) GetUploadId() string { if x != nil { - return x.Parts + return x.UploadId } - return nil + return "" } -// CompleteMultipartUploadInput -type CompleteMultipartUploadInput struct { +// UploadPartInput +type UploadPartInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4036,34 +4019,50 @@ type CompleteMultipartUploadInput struct { // Name of the object key. // This member is required. Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // ID for the initiated multipart upload. + // Object data. + Body []byte `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` + // Size of the body in bytes. This parameter is useful when the size of the body + // cannot be determined automatically. + ContentLength int64 `protobuf:"varint,5,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` + // The base64-encoded 128-bit MD5 digest of the part data. + ContentMd5 string `protobuf:"bytes,6,opt,name=content_md5,json=contentMd5,proto3" json:"content_md5,omitempty"` + // The account ID of the expected bucket owner + ExpectedBucketOwner string `protobuf:"bytes,7,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // Part number of part being uploaded. This is a positive integer between 1 and 10,000. // This member is required. - UploadId string `protobuf:"bytes,4,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + PartNumber int32 `protobuf:"varint,8,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` // Confirms that the requester knows that they will be charged for the request. - RequestPayer string `protobuf:"bytes,5,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` - // Expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,6,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // The container for the multipart upload request information. - MultipartUpload *CompletedMultipartUpload `protobuf:"bytes,7,opt,name=multipart_upload,json=multipartUpload,proto3" json:"multipart_upload,omitempty"` + RequestPayer string `protobuf:"bytes,9,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` + // Specifies the algorithm to use to when encrypting the object (for example, + // AES256). + SseCustomerAlgorithm string `protobuf:"bytes,10,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` + // Specifies the customer-provided encryption key for Amazon S3 to use in + // encrypting data + SseCustomerKey string `protobuf:"bytes,11,opt,name=sse_customer_key,json=sseCustomerKey,proto3" json:"sse_customer_key,omitempty"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + SseCustomerKeyMd5 string `protobuf:"bytes,12,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + // Upload ID identifying the multipart upload whose part is being uploaded. + // This member is required. + UploadId string `protobuf:"bytes,13,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` } -func (x *CompleteMultipartUploadInput) Reset() { - *x = CompleteMultipartUploadInput{} +func (x *UploadPartInput) Reset() { + *x = UploadPartInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[40] + mi := &file_oss_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CompleteMultipartUploadInput) String() string { +func (x *UploadPartInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CompleteMultipartUploadInput) ProtoMessage() {} +func (*UploadPartInput) ProtoMessage() {} -func (x *CompleteMultipartUploadInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[40] +func (x *UploadPartInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4074,114 +4073,145 @@ func (x *CompleteMultipartUploadInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CompleteMultipartUploadInput.ProtoReflect.Descriptor instead. -func (*CompleteMultipartUploadInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{40} +// Deprecated: Use UploadPartInput.ProtoReflect.Descriptor instead. +func (*UploadPartInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{41} } -func (x *CompleteMultipartUploadInput) GetStoreName() string { +func (x *UploadPartInput) GetStoreName() string { if x != nil { return x.StoreName } return "" } -func (x *CompleteMultipartUploadInput) GetBucket() string { +func (x *UploadPartInput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *CompleteMultipartUploadInput) GetKey() string { +func (x *UploadPartInput) GetKey() string { if x != nil { return x.Key } return "" } -func (x *CompleteMultipartUploadInput) GetUploadId() string { +func (x *UploadPartInput) GetBody() []byte { if x != nil { - return x.UploadId + return x.Body + } + return nil +} + +func (x *UploadPartInput) GetContentLength() int64 { + if x != nil { + return x.ContentLength + } + return 0 +} + +func (x *UploadPartInput) GetContentMd5() string { + if x != nil { + return x.ContentMd5 } return "" } -func (x *CompleteMultipartUploadInput) GetRequestPayer() string { +func (x *UploadPartInput) GetExpectedBucketOwner() string { + if x != nil { + return x.ExpectedBucketOwner + } + return "" +} + +func (x *UploadPartInput) GetPartNumber() int32 { + if x != nil { + return x.PartNumber + } + return 0 +} + +func (x *UploadPartInput) GetRequestPayer() string { if x != nil { return x.RequestPayer } return "" } -func (x *CompleteMultipartUploadInput) GetExpectedBucketOwner() string { +func (x *UploadPartInput) GetSseCustomerAlgorithm() string { if x != nil { - return x.ExpectedBucketOwner + return x.SseCustomerAlgorithm } return "" } -func (x *CompleteMultipartUploadInput) GetMultipartUpload() *CompletedMultipartUpload { +func (x *UploadPartInput) GetSseCustomerKey() string { if x != nil { - return x.MultipartUpload + return x.SseCustomerKey } - return nil + return "" } -// CompleteMultipartUploadOutput -type CompleteMultipartUploadOutput struct { +func (x *UploadPartInput) GetSseCustomerKeyMd5() string { + if x != nil { + return x.SseCustomerKeyMd5 + } + return "" +} + +func (x *UploadPartInput) GetUploadId() string { + if x != nil { + return x.UploadId + } + return "" +} + +// UploadPartOutput +type UploadPartOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` // Indicates whether the multipart upload uses an S3 Bucket Key for server-side // encryption with Amazon Web Services KMS (SSE-KMS). - BucketKeyEnabled bool `protobuf:"varint,3,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` - // Entity tag that identifies the newly created object's data - Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"` - // If the object expiration is configured, this will contain the expiration date - // (expiry-date) and rule ID (rule-id). The value of rule-id is URL-encoded. - Expiration string `protobuf:"bytes,5,opt,name=expiration,proto3" json:"expiration,omitempty"` - // The URI that identifies the newly created object. - Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + BucketKeyEnabled bool `protobuf:"varint,1,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` + // Entity tag for the uploaded object. + Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` // If present, indicates that the requester was successfully charged for the // request. - RequestCharged string `protobuf:"bytes,7,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` - // If present, specifies the ID of the Amazon Web Services Key Management Service - // (Amazon Web Services KMS) symmetric customer managed key that was used for the - // object. - SseKmsKeyId string `protobuf:"bytes,8,opt,name=sse_kms_keyId,json=sseKmsKeyId,proto3" json:"sse_kms_keyId,omitempty"` + RequestCharged string `protobuf:"bytes,3,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` + // Specifies the algorithm to use to when encrypting the object (for example, + // AES256). + SseCustomerAlgorithm string `protobuf:"bytes,4,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + SseCustomerKeyMd5 string `protobuf:"bytes,5,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + // Specifies the ID of the symmetric customer managed key to use for object encryption + SseKmsKeyId string `protobuf:"bytes,6,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` // The server-side encryption algorithm used when storing this object in Amazon S3 // (for example, AES256, aws:kms). - ServerSideEncryption string `protobuf:"bytes,9,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` - // Version ID of the newly created object, in case the bucket has versioning turned - // on. - VersionId string `protobuf:"bytes,10,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + ServerSideEncryption string `protobuf:"bytes,7,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` } -func (x *CompleteMultipartUploadOutput) Reset() { - *x = CompleteMultipartUploadOutput{} +func (x *UploadPartOutput) Reset() { + *x = UploadPartOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[41] + mi := &file_oss_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CompleteMultipartUploadOutput) String() string { +func (x *UploadPartOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CompleteMultipartUploadOutput) ProtoMessage() {} +func (*UploadPartOutput) ProtoMessage() {} -func (x *CompleteMultipartUploadOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[41] +func (x *UploadPartOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4192,83 +4222,62 @@ func (x *CompleteMultipartUploadOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CompleteMultipartUploadOutput.ProtoReflect.Descriptor instead. -func (*CompleteMultipartUploadOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{41} -} - -func (x *CompleteMultipartUploadOutput) GetBucket() string { - if x != nil { - return x.Bucket - } - return "" -} - -func (x *CompleteMultipartUploadOutput) GetKey() string { - if x != nil { - return x.Key - } - return "" +// Deprecated: Use UploadPartOutput.ProtoReflect.Descriptor instead. +func (*UploadPartOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{42} } -func (x *CompleteMultipartUploadOutput) GetBucketKeyEnabled() bool { +func (x *UploadPartOutput) GetBucketKeyEnabled() bool { if x != nil { return x.BucketKeyEnabled } return false } -func (x *CompleteMultipartUploadOutput) GetEtag() string { +func (x *UploadPartOutput) GetEtag() string { if x != nil { return x.Etag } return "" } -func (x *CompleteMultipartUploadOutput) GetExpiration() string { +func (x *UploadPartOutput) GetRequestCharged() string { if x != nil { - return x.Expiration + return x.RequestCharged } return "" } -func (x *CompleteMultipartUploadOutput) GetLocation() string { +func (x *UploadPartOutput) GetSseCustomerAlgorithm() string { if x != nil { - return x.Location + return x.SseCustomerAlgorithm } return "" } -func (x *CompleteMultipartUploadOutput) GetRequestCharged() string { +func (x *UploadPartOutput) GetSseCustomerKeyMd5() string { if x != nil { - return x.RequestCharged + return x.SseCustomerKeyMd5 } return "" } -func (x *CompleteMultipartUploadOutput) GetSseKmsKeyId() string { +func (x *UploadPartOutput) GetSseKmsKeyId() string { if x != nil { return x.SseKmsKeyId } return "" } -func (x *CompleteMultipartUploadOutput) GetServerSideEncryption() string { +func (x *UploadPartOutput) GetServerSideEncryption() string { if x != nil { return x.ServerSideEncryption } return "" } -func (x *CompleteMultipartUploadOutput) GetVersionId() string { - if x != nil { - return x.VersionId - } - return "" -} - -// AbortMultipartUploadInput -type AbortMultipartUploadInput struct { +// UploadPartCopyInput +type UploadPartCopyInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4281,32 +4290,37 @@ type AbortMultipartUploadInput struct { // Name of the object key. // This member is required. Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // The account ID of the expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,4,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // Confirms that the requester knows that they will be charged for the request. - RequestPayer string `protobuf:"bytes,5,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` - // Upload ID that identifies the multipart upload. + // CopySource + CopySource *CopySource `protobuf:"bytes,4,opt,name=copy_source,json=copySource,proto3" json:"copy_source,omitempty"` + // Part number of part being copied. This is a positive integer between 1 and 10,000. + // This member is required. + PartNumber int32 `protobuf:"varint,5,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` + // Upload ID identifying the multipart upload whose part is being copied. // This member is required. UploadId string `protobuf:"bytes,6,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + // The range of bytes to copy from the source object.bytes=start_position-part_size + StartPosition int64 `protobuf:"varint,7,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` + // Part size + PartSize int64 `protobuf:"varint,8,opt,name=part_size,json=partSize,proto3" json:"part_size,omitempty"` } -func (x *AbortMultipartUploadInput) Reset() { - *x = AbortMultipartUploadInput{} +func (x *UploadPartCopyInput) Reset() { + *x = UploadPartCopyInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[42] + mi := &file_oss_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AbortMultipartUploadInput) String() string { +func (x *UploadPartCopyInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortMultipartUploadInput) ProtoMessage() {} +func (*UploadPartCopyInput) ProtoMessage() {} -func (x *AbortMultipartUploadInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[42] +func (x *UploadPartCopyInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4317,151 +4331,81 @@ func (x *AbortMultipartUploadInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortMultipartUploadInput.ProtoReflect.Descriptor instead. -func (*AbortMultipartUploadInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{42} +// Deprecated: Use UploadPartCopyInput.ProtoReflect.Descriptor instead. +func (*UploadPartCopyInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{43} } -func (x *AbortMultipartUploadInput) GetStoreName() string { +func (x *UploadPartCopyInput) GetStoreName() string { if x != nil { return x.StoreName } return "" } -func (x *AbortMultipartUploadInput) GetBucket() string { +func (x *UploadPartCopyInput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *AbortMultipartUploadInput) GetKey() string { +func (x *UploadPartCopyInput) GetKey() string { if x != nil { return x.Key } return "" } -func (x *AbortMultipartUploadInput) GetExpectedBucketOwner() string { +func (x *UploadPartCopyInput) GetCopySource() *CopySource { if x != nil { - return x.ExpectedBucketOwner + return x.CopySource } - return "" + return nil } -func (x *AbortMultipartUploadInput) GetRequestPayer() string { +func (x *UploadPartCopyInput) GetPartNumber() int32 { if x != nil { - return x.RequestPayer + return x.PartNumber } - return "" + return 0 } -func (x *AbortMultipartUploadInput) GetUploadId() string { +func (x *UploadPartCopyInput) GetUploadId() string { if x != nil { return x.UploadId } return "" } -// AbortMultipartUploadOutput -type AbortMultipartUploadOutput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // If present, indicates that the requester was successfully charged for the request. - RequestCharged string `protobuf:"bytes,1,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` -} - -func (x *AbortMultipartUploadOutput) Reset() { - *x = AbortMultipartUploadOutput{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AbortMultipartUploadOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AbortMultipartUploadOutput) ProtoMessage() {} - -func (x *AbortMultipartUploadOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *UploadPartCopyInput) GetStartPosition() int64 { + if x != nil { + return x.StartPosition } - return mi.MessageOf(x) -} - -// Deprecated: Use AbortMultipartUploadOutput.ProtoReflect.Descriptor instead. -func (*AbortMultipartUploadOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{43} + return 0 } -func (x *AbortMultipartUploadOutput) GetRequestCharged() string { +func (x *UploadPartCopyInput) GetPartSize() int64 { if x != nil { - return x.RequestCharged + return x.PartSize } - return "" + return 0 } -// ListMultipartUploadsInput -type ListMultipartUploadsInput struct { +// CopyPartResult +type CopyPartResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Character you use to group keys. All keys that contain the same string between - // the prefix, if specified, and the first occurrence of the delimiter after the - // prefix are grouped under a single result element, CommonPrefixes. If you don't - // specify the prefix parameter, then the substring starts at the beginning of the - // key. The keys that are grouped under CommonPrefixes result element are not - // returned elsewhere in the response. - Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` - // Requests Amazon S3 to encode the object keys in the response and specifies the - // encoding method to use. An object key may contain any Unicode character; - EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` - // The account ID of the expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,5,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // Together with upload-id-marker, this parameter specifies the multipart upload - // after which listing should begin. If upload-id-marker is not specified, only the - // keys lexicographically greater than the specified key-marker will be included in - // the list. If upload-id-marker is specified, any multipart uploads for a key - // equal to the key-marker might also be included, provided those multipart uploads - // have upload IDs lexicographically greater than the specified upload-id-marker. - KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` - // Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the - // response body. 1,000 is the maximum number of uploads that can be returned in a - // response. - MaxUploads int64 `protobuf:"varint,7,opt,name=max_uploads,json=maxUploads,proto3" json:"max_uploads,omitempty"` - // Lists in-progress uploads only for those keys that begin with the specified - // prefix. You can use prefixes to separate a bucket into different grouping of - // keys. (You can think of using prefix to make groups in the same way you'd use a - // folder in a file system.) - Prefix string `protobuf:"bytes,8,opt,name=prefix,proto3" json:"prefix,omitempty"` - // Together with key-marker, specifies the multipart upload after which listing - // should begin. If key-marker is not specified, the upload-id-marker parameter is - // ignored. Otherwise, any multipart uploads for a key equal to the key-marker - // might be included in the list only if they have an upload ID lexicographically - // greater than the specified upload-id-marker. - UploadIdMarker string `protobuf:"bytes,9,opt,name=upload_id_marker,json=uploadIdMarker,proto3" json:"upload_id_marker,omitempty"` + // Entity tag of the object. + Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` + // Last modified time + LastModified int64 `protobuf:"varint,2,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` } -func (x *ListMultipartUploadsInput) Reset() { - *x = ListMultipartUploadsInput{} +func (x *CopyPartResult) Reset() { + *x = CopyPartResult{} if protoimpl.UnsafeEnabled { mi := &file_oss_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4469,13 +4413,13 @@ func (x *ListMultipartUploadsInput) Reset() { } } -func (x *ListMultipartUploadsInput) String() string { +func (x *CopyPartResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListMultipartUploadsInput) ProtoMessage() {} +func (*CopyPartResult) ProtoMessage() {} -func (x *ListMultipartUploadsInput) ProtoReflect() protoreflect.Message { +func (x *CopyPartResult) ProtoReflect() protoreflect.Message { mi := &file_oss_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4487,103 +4431,176 @@ func (x *ListMultipartUploadsInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListMultipartUploadsInput.ProtoReflect.Descriptor instead. -func (*ListMultipartUploadsInput) Descriptor() ([]byte, []int) { +// Deprecated: Use CopyPartResult.ProtoReflect.Descriptor instead. +func (*CopyPartResult) Descriptor() ([]byte, []int) { return file_oss_proto_rawDescGZIP(), []int{44} } -func (x *ListMultipartUploadsInput) GetStoreName() string { +func (x *CopyPartResult) GetEtag() string { if x != nil { - return x.StoreName + return x.Etag } return "" } -func (x *ListMultipartUploadsInput) GetBucket() string { +func (x *CopyPartResult) GetLastModified() int64 { if x != nil { - return x.Bucket + return x.LastModified } - return "" + return 0 } -func (x *ListMultipartUploadsInput) GetDelimiter() string { +// UploadPartCopyOutput +type UploadPartCopyOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Indicates whether the multipart upload uses an S3 Bucket Key for server-side + // encryption with Amazon Web Services KMS (SSE-KMS). + BucketKeyEnabled bool `protobuf:"varint,1,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` + // Container for all response elements. + CopyPartResult *CopyPartResult `protobuf:"bytes,2,opt,name=copy_part_result,json=copyPartResult,proto3" json:"copy_part_result,omitempty"` + // The version of the source object that was copied, if you have enabled versioning + // on the source bucket. + CopySourceVersionId string `protobuf:"bytes,3,opt,name=copy_source_version_id,json=copySourceVersionId,proto3" json:"copy_source_version_id,omitempty"` + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged string `protobuf:"bytes,4,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm used. + SseCustomerAlgorithm string `protobuf:"bytes,5,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round-trip message integrity + // verification of the customer-provided encryption key. + SseCustomerKeyMd5 string `protobuf:"bytes,6,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + // If present, specifies the ID of the Amazon Web Services Key Management Service + // (Amazon Web Services KMS) symmetric customer managed key that was used for the + // object. + SseKmsKeyId string `protobuf:"bytes,7,opt,name=sse_kms_key_id,json=sseKmsKeyId,proto3" json:"sse_kms_key_id,omitempty"` + // The server-side encryption algorithm used when storing this object in Amazon S3 + // (for example, AES256, aws:kms). + ServerSideEncryption string `protobuf:"bytes,8,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` +} + +func (x *UploadPartCopyOutput) Reset() { + *x = UploadPartCopyOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadPartCopyOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadPartCopyOutput) ProtoMessage() {} + +func (x *UploadPartCopyOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadPartCopyOutput.ProtoReflect.Descriptor instead. +func (*UploadPartCopyOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{45} +} + +func (x *UploadPartCopyOutput) GetBucketKeyEnabled() bool { if x != nil { - return x.Delimiter + return x.BucketKeyEnabled } - return "" + return false } -func (x *ListMultipartUploadsInput) GetEncodingType() string { +func (x *UploadPartCopyOutput) GetCopyPartResult() *CopyPartResult { if x != nil { - return x.EncodingType + return x.CopyPartResult + } + return nil +} + +func (x *UploadPartCopyOutput) GetCopySourceVersionId() string { + if x != nil { + return x.CopySourceVersionId } return "" } -func (x *ListMultipartUploadsInput) GetExpectedBucketOwner() string { +func (x *UploadPartCopyOutput) GetRequestCharged() string { if x != nil { - return x.ExpectedBucketOwner + return x.RequestCharged } return "" } -func (x *ListMultipartUploadsInput) GetKeyMarker() string { +func (x *UploadPartCopyOutput) GetSseCustomerAlgorithm() string { if x != nil { - return x.KeyMarker + return x.SseCustomerAlgorithm } return "" } -func (x *ListMultipartUploadsInput) GetMaxUploads() int64 { +func (x *UploadPartCopyOutput) GetSseCustomerKeyMd5() string { if x != nil { - return x.MaxUploads + return x.SseCustomerKeyMd5 } - return 0 + return "" } -func (x *ListMultipartUploadsInput) GetPrefix() string { +func (x *UploadPartCopyOutput) GetSseKmsKeyId() string { if x != nil { - return x.Prefix + return x.SseKmsKeyId } return "" } -func (x *ListMultipartUploadsInput) GetUploadIdMarker() string { +func (x *UploadPartCopyOutput) GetServerSideEncryption() string { if x != nil { - return x.UploadIdMarker + return x.ServerSideEncryption } return "" } -// Initiator -type Initiator struct { +// CompletedPart +type CompletedPart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Initiator name - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Initiator id - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + // Entity tag returned when the part was uploaded. + Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` + // Part number that identifies the part. This is a positive integer between 1 and + // 10,000. + PartNumber int32 `protobuf:"varint,2,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` } -func (x *Initiator) Reset() { - *x = Initiator{} +func (x *CompletedPart) Reset() { + *x = CompletedPart{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[45] + mi := &file_oss_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Initiator) String() string { +func (x *CompletedPart) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Initiator) ProtoMessage() {} +func (*CompletedPart) ProtoMessage() {} -func (x *Initiator) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[45] +func (x *CompletedPart) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4594,63 +4611,52 @@ func (x *Initiator) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Initiator.ProtoReflect.Descriptor instead. -func (*Initiator) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{45} +// Deprecated: Use CompletedPart.ProtoReflect.Descriptor instead. +func (*CompletedPart) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{46} } -func (x *Initiator) GetDisplayName() string { +func (x *CompletedPart) GetEtag() string { if x != nil { - return x.DisplayName + return x.Etag } return "" } -func (x *Initiator) GetId() string { +func (x *CompletedPart) GetPartNumber() int32 { if x != nil { - return x.Id + return x.PartNumber } - return "" + return 0 } -// MultipartUpload -type MultipartUpload struct { +// CompletedMultipartUpload +type CompletedMultipartUpload struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Date and time at which the multipart upload was initiated. - Initiated int64 `protobuf:"varint,1,opt,name=initiated,proto3" json:"initiated,omitempty"` - // Identifies who initiated the multipart upload. - Initiator *Initiator `protobuf:"bytes,2,opt,name=initiator,proto3" json:"initiator,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // Specifies the owner of the object that is part of the multipart upload. - Owner *Owner `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - // The class of storage used to store the object. - StorageClass string `protobuf:"bytes,5,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` - // Upload ID that identifies the multipart upload. - UploadId string `protobuf:"bytes,6,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + // Array of CompletedPart data types. + Parts []*CompletedPart `protobuf:"bytes,1,rep,name=parts,proto3" json:"parts,omitempty"` } -func (x *MultipartUpload) Reset() { - *x = MultipartUpload{} +func (x *CompletedMultipartUpload) Reset() { + *x = CompletedMultipartUpload{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[46] + mi := &file_oss_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MultipartUpload) String() string { +func (x *CompletedMultipartUpload) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MultipartUpload) ProtoMessage() {} +func (*CompletedMultipartUpload) ProtoMessage() {} -func (x *MultipartUpload) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[46] +func (x *CompletedMultipartUpload) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4661,55 +4667,126 @@ func (x *MultipartUpload) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MultipartUpload.ProtoReflect.Descriptor instead. -func (*MultipartUpload) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{46} -} - -func (x *MultipartUpload) GetInitiated() int64 { - if x != nil { - return x.Initiated - } - return 0 +// Deprecated: Use CompletedMultipartUpload.ProtoReflect.Descriptor instead. +func (*CompletedMultipartUpload) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{47} } -func (x *MultipartUpload) GetInitiator() *Initiator { +func (x *CompletedMultipartUpload) GetParts() []*CompletedPart { if x != nil { - return x.Initiator + return x.Parts } return nil } -func (x *MultipartUpload) GetKey() string { - if x != nil { - return x.Key - } - return "" +// CompleteMultipartUploadInput +type CompleteMultipartUploadInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // ID for the initiated multipart upload. + // This member is required. + UploadId string `protobuf:"bytes,4,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + // Confirms that the requester knows that they will be charged for the request. + RequestPayer string `protobuf:"bytes,5,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` + // Expected bucket owner + ExpectedBucketOwner string `protobuf:"bytes,6,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // The container for the multipart upload request information. + MultipartUpload *CompletedMultipartUpload `protobuf:"bytes,7,opt,name=multipart_upload,json=multipartUpload,proto3" json:"multipart_upload,omitempty"` } -func (x *MultipartUpload) GetOwner() *Owner { - if x != nil { - return x.Owner +func (x *CompleteMultipartUploadInput) Reset() { + *x = CompleteMultipartUploadInput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *MultipartUpload) GetStorageClass() string { - if x != nil { - return x.StorageClass - } - return "" +func (x *CompleteMultipartUploadInput) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *MultipartUpload) GetUploadId() string { - if x != nil { - return x.UploadId +func (*CompleteMultipartUploadInput) ProtoMessage() {} + +func (x *CompleteMultipartUploadInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -// ListMultipartUploadsOutput -type ListMultipartUploadsOutput struct { +// Deprecated: Use CompleteMultipartUploadInput.ProtoReflect.Descriptor instead. +func (*CompleteMultipartUploadInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{48} +} + +func (x *CompleteMultipartUploadInput) GetStoreName() string { + if x != nil { + return x.StoreName + } + return "" +} + +func (x *CompleteMultipartUploadInput) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *CompleteMultipartUploadInput) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *CompleteMultipartUploadInput) GetUploadId() string { + if x != nil { + return x.UploadId + } + return "" +} + +func (x *CompleteMultipartUploadInput) GetRequestPayer() string { + if x != nil { + return x.RequestPayer + } + return "" +} + +func (x *CompleteMultipartUploadInput) GetExpectedBucketOwner() string { + if x != nil { + return x.ExpectedBucketOwner + } + return "" +} + +func (x *CompleteMultipartUploadInput) GetMultipartUpload() *CompletedMultipartUpload { + if x != nil { + return x.MultipartUpload + } + return nil +} + +// CompleteMultipartUploadOutput +type CompleteMultipartUploadOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4717,57 +4794,51 @@ type ListMultipartUploadsOutput struct { // The bucket name containing the object // This member is required Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` - // If you specify a delimiter in the request, then the result returns each distinct - // key prefix containing the delimiter in a CommonPrefixes element. - CommonPrefixes []string `protobuf:"bytes,2,rep,name=common_prefixes,json=commonPrefixes,proto3" json:"common_prefixes,omitempty"` - // Contains the delimiter you specified in the request. If you don't specify a - // delimiter in your request, this element is absent from the response. - Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` - // Encoding type used by Amazon S3 to encode object keys in the response. - EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` - // Indicates whether the returned list of multipart uploads is truncated. A value - // of true indicates that the list was truncated. The list can be truncated if the - // number of multipart uploads exceeds the limit allowed or specified by max - // uploads. - IsTruncated bool `protobuf:"varint,5,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` - // The key at or after which the listing began. - KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` - // Maximum number of multipart uploads that could have been included in the - // response. - MaxUploads int32 `protobuf:"varint,7,opt,name=max_uploads,json=maxUploads,proto3" json:"max_uploads,omitempty"` - // When a list is truncated, this element specifies the value that should be used - // for the key-marker request parameter in a subsequent request. - NextKeyMarker string `protobuf:"bytes,8,opt,name=next_key_marker,json=nextKeyMarker,proto3" json:"next_key_marker,omitempty"` - // When a list is truncated, this element specifies the value that should be used - // for the upload-id-marker request parameter in a subsequent request. - NextUploadIdMarker string `protobuf:"bytes,9,opt,name=next_upload_id_marker,json=nextUploadIdMarker,proto3" json:"next_upload_id_marker,omitempty"` - // When a prefix is provided in the request, this field contains the specified - // prefix. The result contains only keys starting with the specified prefix. - Prefix string `protobuf:"bytes,10,opt,name=prefix,proto3" json:"prefix,omitempty"` - // Upload ID after which listing began. - UploadIdMarker string `protobuf:"bytes,11,opt,name=upload_id_marker,json=uploadIdMarker,proto3" json:"upload_id_marker,omitempty"` - // Container for elements related to a particular multipart upload. A response can - // contain zero or more Upload elements. - Uploads []*MultipartUpload `protobuf:"bytes,12,rep,name=uploads,proto3" json:"uploads,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // Indicates whether the multipart upload uses an S3 Bucket Key for server-side + // encryption with Amazon Web Services KMS (SSE-KMS). + BucketKeyEnabled bool `protobuf:"varint,3,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` + // Entity tag that identifies the newly created object's data + Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"` + // If the object expiration is configured, this will contain the expiration date + // (expiry-date) and rule ID (rule-id). The value of rule-id is URL-encoded. + Expiration string `protobuf:"bytes,5,opt,name=expiration,proto3" json:"expiration,omitempty"` + // The URI that identifies the newly created object. + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged string `protobuf:"bytes,7,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` + // If present, specifies the ID of the Amazon Web Services Key Management Service + // (Amazon Web Services KMS) symmetric customer managed key that was used for the + // object. + SseKmsKeyId string `protobuf:"bytes,8,opt,name=sse_kms_keyId,json=sseKmsKeyId,proto3" json:"sse_kms_keyId,omitempty"` + // The server-side encryption algorithm used when storing this object in Amazon S3 + // (for example, AES256, aws:kms). + ServerSideEncryption string `protobuf:"bytes,9,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + // Version ID of the newly created object, in case the bucket has versioning turned + // on. + VersionId string `protobuf:"bytes,10,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } -func (x *ListMultipartUploadsOutput) Reset() { - *x = ListMultipartUploadsOutput{} +func (x *CompleteMultipartUploadOutput) Reset() { + *x = CompleteMultipartUploadOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[47] + mi := &file_oss_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListMultipartUploadsOutput) String() string { +func (x *CompleteMultipartUploadOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListMultipartUploadsOutput) ProtoMessage() {} +func (*CompleteMultipartUploadOutput) ProtoMessage() {} -func (x *ListMultipartUploadsOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[47] +func (x *CompleteMultipartUploadOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4778,97 +4849,83 @@ func (x *ListMultipartUploadsOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListMultipartUploadsOutput.ProtoReflect.Descriptor instead. -func (*ListMultipartUploadsOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{47} +// Deprecated: Use CompleteMultipartUploadOutput.ProtoReflect.Descriptor instead. +func (*CompleteMultipartUploadOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{49} } -func (x *ListMultipartUploadsOutput) GetBucket() string { +func (x *CompleteMultipartUploadOutput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *ListMultipartUploadsOutput) GetCommonPrefixes() []string { - if x != nil { - return x.CommonPrefixes - } - return nil -} - -func (x *ListMultipartUploadsOutput) GetDelimiter() string { - if x != nil { - return x.Delimiter - } - return "" -} - -func (x *ListMultipartUploadsOutput) GetEncodingType() string { +func (x *CompleteMultipartUploadOutput) GetKey() string { if x != nil { - return x.EncodingType + return x.Key } return "" } -func (x *ListMultipartUploadsOutput) GetIsTruncated() bool { +func (x *CompleteMultipartUploadOutput) GetBucketKeyEnabled() bool { if x != nil { - return x.IsTruncated + return x.BucketKeyEnabled } return false } -func (x *ListMultipartUploadsOutput) GetKeyMarker() string { +func (x *CompleteMultipartUploadOutput) GetEtag() string { if x != nil { - return x.KeyMarker + return x.Etag } return "" } -func (x *ListMultipartUploadsOutput) GetMaxUploads() int32 { +func (x *CompleteMultipartUploadOutput) GetExpiration() string { if x != nil { - return x.MaxUploads + return x.Expiration } - return 0 + return "" } -func (x *ListMultipartUploadsOutput) GetNextKeyMarker() string { +func (x *CompleteMultipartUploadOutput) GetLocation() string { if x != nil { - return x.NextKeyMarker + return x.Location } return "" } -func (x *ListMultipartUploadsOutput) GetNextUploadIdMarker() string { +func (x *CompleteMultipartUploadOutput) GetRequestCharged() string { if x != nil { - return x.NextUploadIdMarker + return x.RequestCharged } return "" } -func (x *ListMultipartUploadsOutput) GetPrefix() string { +func (x *CompleteMultipartUploadOutput) GetSseKmsKeyId() string { if x != nil { - return x.Prefix + return x.SseKmsKeyId } return "" } -func (x *ListMultipartUploadsOutput) GetUploadIdMarker() string { +func (x *CompleteMultipartUploadOutput) GetServerSideEncryption() string { if x != nil { - return x.UploadIdMarker + return x.ServerSideEncryption } return "" } -func (x *ListMultipartUploadsOutput) GetUploads() []*MultipartUpload { +func (x *CompleteMultipartUploadOutput) GetVersionId() string { if x != nil { - return x.Uploads + return x.VersionId } - return nil + return "" } -// ListObjectVersionsInput -type ListObjectVersionsInput struct { +// AbortMultipartUploadInput +type AbortMultipartUploadInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4878,52 +4935,35 @@ type ListObjectVersionsInput struct { // The bucket name containing the object // This member is required Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // A delimiter is a character that you specify to group keys. All keys that contain - // the same string between the prefix and the first occurrence of the delimiter are - // grouped under a single result element in CommonPrefixes. These groups are - // counted as one result against the max-keys limitation. These keys are not - // returned elsewhere in the response. - Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` - // Requests Amazon S3 to encode the object keys in the response and specifies the - // encoding method to use. An object key may contain any Unicode character; - EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` // The account ID of the expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,5,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // Specifies the key to start with when listing objects in a bucket. - KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` - // Sets the maximum number of keys returned in the response. By default the action - // returns up to 1,000 key names. The response might contain fewer keys but will - // never contain more. If additional keys satisfy the search criteria, but were not - // returned because max-keys was exceeded, the response contains true. To return - // the additional keys, see key-marker and version-id-marker. - MaxKeys int64 `protobuf:"varint,7,opt,name=max_keys,json=maxKeys,proto3" json:"max_keys,omitempty"` - // Use this parameter to select only those keys that begin with the specified - // prefix. You can use prefixes to separate a bucket into different groupings of - // keys. (You can think of using prefix to make groups in the same way you'd use a - // folder in a file system.) You can use prefix with delimiter to roll up numerous - // objects into a single result under CommonPrefixes. - Prefix string `protobuf:"bytes,8,opt,name=prefix,proto3" json:"prefix,omitempty"` - // Specifies the object version you want to start listing from. - VersionIdMarker string `protobuf:"bytes,9,opt,name=version_id_marker,json=versionIdMarker,proto3" json:"version_id_marker,omitempty"` + ExpectedBucketOwner string `protobuf:"bytes,4,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // Confirms that the requester knows that they will be charged for the request. + RequestPayer string `protobuf:"bytes,5,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` + // Upload ID that identifies the multipart upload. + // This member is required. + UploadId string `protobuf:"bytes,6,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` } -func (x *ListObjectVersionsInput) Reset() { - *x = ListObjectVersionsInput{} +func (x *AbortMultipartUploadInput) Reset() { + *x = AbortMultipartUploadInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[48] + mi := &file_oss_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListObjectVersionsInput) String() string { +func (x *AbortMultipartUploadInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListObjectVersionsInput) ProtoMessage() {} +func (*AbortMultipartUploadInput) ProtoMessage() {} -func (x *ListObjectVersionsInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[48] +func (x *AbortMultipartUploadInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4934,111 +4974,80 @@ func (x *ListObjectVersionsInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListObjectVersionsInput.ProtoReflect.Descriptor instead. -func (*ListObjectVersionsInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{48} +// Deprecated: Use AbortMultipartUploadInput.ProtoReflect.Descriptor instead. +func (*AbortMultipartUploadInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{50} } -func (x *ListObjectVersionsInput) GetStoreName() string { +func (x *AbortMultipartUploadInput) GetStoreName() string { if x != nil { return x.StoreName } return "" } -func (x *ListObjectVersionsInput) GetBucket() string { +func (x *AbortMultipartUploadInput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *ListObjectVersionsInput) GetDelimiter() string { - if x != nil { - return x.Delimiter - } - return "" -} - -func (x *ListObjectVersionsInput) GetEncodingType() string { +func (x *AbortMultipartUploadInput) GetKey() string { if x != nil { - return x.EncodingType + return x.Key } return "" } -func (x *ListObjectVersionsInput) GetExpectedBucketOwner() string { +func (x *AbortMultipartUploadInput) GetExpectedBucketOwner() string { if x != nil { return x.ExpectedBucketOwner } return "" } -func (x *ListObjectVersionsInput) GetKeyMarker() string { - if x != nil { - return x.KeyMarker - } - return "" -} - -func (x *ListObjectVersionsInput) GetMaxKeys() int64 { - if x != nil { - return x.MaxKeys - } - return 0 -} - -func (x *ListObjectVersionsInput) GetPrefix() string { +func (x *AbortMultipartUploadInput) GetRequestPayer() string { if x != nil { - return x.Prefix + return x.RequestPayer } return "" } -func (x *ListObjectVersionsInput) GetVersionIdMarker() string { +func (x *AbortMultipartUploadInput) GetUploadId() string { if x != nil { - return x.VersionIdMarker + return x.UploadId } return "" } -// DeleteMarkerEntry -type DeleteMarkerEntry struct { +// AbortMultipartUploadOutput +type AbortMultipartUploadOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Specifies whether the object is (true) or is not (false) the latest version of - // an object. - IsLatest bool `protobuf:"varint,1,opt,name=is_latest,json=isLatest,proto3" json:"is_latest,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - // Date and time the object was last modified. - LastModified int64 `protobuf:"varint,3,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` - // Owner - Owner *Owner `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - // Version ID of an object. - VersionId string `protobuf:"bytes,5,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + // If present, indicates that the requester was successfully charged for the request. + RequestCharged string `protobuf:"bytes,1,opt,name=request_charged,json=requestCharged,proto3" json:"request_charged,omitempty"` } -func (x *DeleteMarkerEntry) Reset() { - *x = DeleteMarkerEntry{} +func (x *AbortMultipartUploadOutput) Reset() { + *x = AbortMultipartUploadOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[49] + mi := &file_oss_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteMarkerEntry) String() string { +func (x *AbortMultipartUploadOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteMarkerEntry) ProtoMessage() {} +func (*AbortMultipartUploadOutput) ProtoMessage() {} -func (x *DeleteMarkerEntry) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[49] +func (x *AbortMultipartUploadOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5049,89 +5058,82 @@ func (x *DeleteMarkerEntry) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteMarkerEntry.ProtoReflect.Descriptor instead. -func (*DeleteMarkerEntry) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{49} -} - -func (x *DeleteMarkerEntry) GetIsLatest() bool { - if x != nil { - return x.IsLatest - } - return false -} - -func (x *DeleteMarkerEntry) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *DeleteMarkerEntry) GetLastModified() int64 { - if x != nil { - return x.LastModified - } - return 0 -} - -func (x *DeleteMarkerEntry) GetOwner() *Owner { - if x != nil { - return x.Owner - } - return nil +// Deprecated: Use AbortMultipartUploadOutput.ProtoReflect.Descriptor instead. +func (*AbortMultipartUploadOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{51} } -func (x *DeleteMarkerEntry) GetVersionId() string { +func (x *AbortMultipartUploadOutput) GetRequestCharged() string { if x != nil { - return x.VersionId + return x.RequestCharged } return "" } -// ObjectVersion -type ObjectVersion struct { +// ListMultipartUploadsInput +type ListMultipartUploadsInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The entity tag is an MD5 hash of that version of the object. - Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` - // Specifies whether the object is (true) or is not (false) the latest version of - // an object. - IsLatest bool `protobuf:"varint,2,opt,name=is_latest,json=isLatest,proto3" json:"is_latest,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // Date and time the object was last modified. - LastModified int64 `protobuf:"varint,4,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` - // Specifies the owner of the object. - Owner *Owner `protobuf:"bytes,5,opt,name=owner,proto3" json:"owner,omitempty"` - // Size in bytes of the object. - Size int64 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` - // The class of storage used to store the object. - StorageClass string `protobuf:"bytes,7,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` - // Version ID of an object. - VersionId string `protobuf:"bytes,8,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Character you use to group keys. All keys that contain the same string between + // the prefix, if specified, and the first occurrence of the delimiter after the + // prefix are grouped under a single result element, CommonPrefixes. If you don't + // specify the prefix parameter, then the substring starts at the beginning of the + // key. The keys that are grouped under CommonPrefixes result element are not + // returned elsewhere in the response. + Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` + // Requests Amazon S3 to encode the object keys in the response and specifies the + // encoding method to use. An object key may contain any Unicode character; + EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` + // The account ID of the expected bucket owner + ExpectedBucketOwner string `protobuf:"bytes,5,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // Together with upload-id-marker, this parameter specifies the multipart upload + // after which listing should begin. If upload-id-marker is not specified, only the + // keys lexicographically greater than the specified key-marker will be included in + // the list. If upload-id-marker is specified, any multipart uploads for a key + // equal to the key-marker might also be included, provided those multipart uploads + // have upload IDs lexicographically greater than the specified upload-id-marker. + KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` + // Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the + // response body. 1,000 is the maximum number of uploads that can be returned in a + // response. + MaxUploads int64 `protobuf:"varint,7,opt,name=max_uploads,json=maxUploads,proto3" json:"max_uploads,omitempty"` + // Lists in-progress uploads only for those keys that begin with the specified + // prefix. You can use prefixes to separate a bucket into different grouping of + // keys. (You can think of using prefix to make groups in the same way you'd use a + // folder in a file system.) + Prefix string `protobuf:"bytes,8,opt,name=prefix,proto3" json:"prefix,omitempty"` + // Together with key-marker, specifies the multipart upload after which listing + // should begin. If key-marker is not specified, the upload-id-marker parameter is + // ignored. Otherwise, any multipart uploads for a key equal to the key-marker + // might be included in the list only if they have an upload ID lexicographically + // greater than the specified upload-id-marker. + UploadIdMarker string `protobuf:"bytes,9,opt,name=upload_id_marker,json=uploadIdMarker,proto3" json:"upload_id_marker,omitempty"` } -func (x *ObjectVersion) Reset() { - *x = ObjectVersion{} +func (x *ListMultipartUploadsInput) Reset() { + *x = ListMultipartUploadsInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[50] + mi := &file_oss_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ObjectVersion) String() string { +func (x *ListMultipartUploadsInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObjectVersion) ProtoMessage() {} +func (*ListMultipartUploadsInput) ProtoMessage() {} -func (x *ObjectVersion) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[50] +func (x *ListMultipartUploadsInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5142,123 +5144,103 @@ func (x *ObjectVersion) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObjectVersion.ProtoReflect.Descriptor instead. -func (*ObjectVersion) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{50} +// Deprecated: Use ListMultipartUploadsInput.ProtoReflect.Descriptor instead. +func (*ListMultipartUploadsInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{52} } -func (x *ObjectVersion) GetEtag() string { +func (x *ListMultipartUploadsInput) GetStoreName() string { if x != nil { - return x.Etag + return x.StoreName } return "" } -func (x *ObjectVersion) GetIsLatest() bool { +func (x *ListMultipartUploadsInput) GetBucket() string { if x != nil { - return x.IsLatest + return x.Bucket } - return false + return "" } -func (x *ObjectVersion) GetKey() string { +func (x *ListMultipartUploadsInput) GetDelimiter() string { if x != nil { - return x.Key + return x.Delimiter } return "" } -func (x *ObjectVersion) GetLastModified() int64 { +func (x *ListMultipartUploadsInput) GetEncodingType() string { if x != nil { - return x.LastModified + return x.EncodingType } - return 0 + return "" } -func (x *ObjectVersion) GetOwner() *Owner { +func (x *ListMultipartUploadsInput) GetExpectedBucketOwner() string { if x != nil { - return x.Owner + return x.ExpectedBucketOwner } - return nil + return "" } -func (x *ObjectVersion) GetSize() int64 { +func (x *ListMultipartUploadsInput) GetKeyMarker() string { if x != nil { - return x.Size + return x.KeyMarker + } + return "" +} + +func (x *ListMultipartUploadsInput) GetMaxUploads() int64 { + if x != nil { + return x.MaxUploads } return 0 } -func (x *ObjectVersion) GetStorageClass() string { +func (x *ListMultipartUploadsInput) GetPrefix() string { if x != nil { - return x.StorageClass + return x.Prefix } return "" } -func (x *ObjectVersion) GetVersionId() string { +func (x *ListMultipartUploadsInput) GetUploadIdMarker() string { if x != nil { - return x.VersionId + return x.UploadIdMarker } return "" } -// ListObjectVersionsOutput -type ListObjectVersionsOutput struct { +// Initiator +type Initiator struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // All of the keys rolled up into a common prefix count as a single return when - // calculating the number of returns. - CommonPrefixes []string `protobuf:"bytes,1,rep,name=common_prefixes,json=commonPrefixes,proto3" json:"common_prefixes,omitempty"` - // Container for an object that is a delete marker. - DeleteMarkers []*DeleteMarkerEntry `protobuf:"bytes,2,rep,name=delete_markers,json=deleteMarkers,proto3" json:"delete_markers,omitempty"` - // The delimiter grouping the included keys. - Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` - // Encoding type used by Amazon S3 to encode object key names in the XML response. - EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` - // A flag that indicates whether Amazon S3 returned all of the results that - // satisfied the search criteria - IsTruncated bool `protobuf:"varint,5,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` - // Marks the last key returned in a truncated response. - KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` - // Specifies the maximum number of objects to return - MaxKeys int64 `protobuf:"varint,7,opt,name=max_keys,json=maxKeys,proto3" json:"max_keys,omitempty"` - // The bucket name. - Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` - // When the number of responses exceeds the value of MaxKeys, NextKeyMarker - // specifies the first key not returned that satisfies the search criteria - NextKeyMarker string `protobuf:"bytes,9,opt,name=next_key_marker,json=nextKeyMarker,proto3" json:"next_key_marker,omitempty"` - // When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker - // specifies the first object version not returned that satisfies the search - // criteria. - NextVersionIdMarker string `protobuf:"bytes,10,opt,name=next_version_id_marker,json=nextVersionIdMarker,proto3" json:"next_version_id_marker,omitempty"` - // Selects objects that start with the value supplied by this parameter. - Prefix string `protobuf:"bytes,11,opt,name=prefix,proto3" json:"prefix,omitempty"` - // Marks the last version of the key returned in a truncated response. - VersionIdMarker string `protobuf:"bytes,12,opt,name=version_id_marker,json=versionIdMarker,proto3" json:"version_id_marker,omitempty"` - // Container for version information. - Versions []*ObjectVersion `protobuf:"bytes,13,rep,name=versions,proto3" json:"versions,omitempty"` + // Initiator name + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Initiator id + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (x *ListObjectVersionsOutput) Reset() { - *x = ListObjectVersionsOutput{} +func (x *Initiator) Reset() { + *x = Initiator{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[51] + mi := &file_oss_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListObjectVersionsOutput) String() string { +func (x *Initiator) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListObjectVersionsOutput) ProtoMessage() {} +func (*Initiator) ProtoMessage() {} -func (x *ListObjectVersionsOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[51] +func (x *Initiator) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5269,169 +5251,180 @@ func (x *ListObjectVersionsOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListObjectVersionsOutput.ProtoReflect.Descriptor instead. -func (*ListObjectVersionsOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{51} +// Deprecated: Use Initiator.ProtoReflect.Descriptor instead. +func (*Initiator) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{53} } -func (x *ListObjectVersionsOutput) GetCommonPrefixes() []string { +func (x *Initiator) GetDisplayName() string { if x != nil { - return x.CommonPrefixes + return x.DisplayName } - return nil + return "" } -func (x *ListObjectVersionsOutput) GetDeleteMarkers() []*DeleteMarkerEntry { +func (x *Initiator) GetId() string { if x != nil { - return x.DeleteMarkers + return x.Id } - return nil + return "" } -func (x *ListObjectVersionsOutput) GetDelimiter() string { - if x != nil { - return x.Delimiter - } - return "" +// MultipartUpload +type MultipartUpload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Date and time at which the multipart upload was initiated. + Initiated int64 `protobuf:"varint,1,opt,name=initiated,proto3" json:"initiated,omitempty"` + // Identifies who initiated the multipart upload. + Initiator *Initiator `protobuf:"bytes,2,opt,name=initiator,proto3" json:"initiator,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // Specifies the owner of the object that is part of the multipart upload. + Owner *Owner `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` + // The class of storage used to store the object. + StorageClass string `protobuf:"bytes,5,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` + // Upload ID that identifies the multipart upload. + UploadId string `protobuf:"bytes,6,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` } -func (x *ListObjectVersionsOutput) GetEncodingType() string { - if x != nil { - return x.EncodingType +func (x *MultipartUpload) Reset() { + *x = MultipartUpload{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ListObjectVersionsOutput) GetIsTruncated() bool { - if x != nil { - return x.IsTruncated - } - return false +func (x *MultipartUpload) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ListObjectVersionsOutput) GetKeyMarker() string { - if x != nil { - return x.KeyMarker +func (*MultipartUpload) ProtoMessage() {} + +func (x *MultipartUpload) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ListObjectVersionsOutput) GetMaxKeys() int64 { - if x != nil { - return x.MaxKeys - } - return 0 +// Deprecated: Use MultipartUpload.ProtoReflect.Descriptor instead. +func (*MultipartUpload) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{54} } -func (x *ListObjectVersionsOutput) GetName() string { +func (x *MultipartUpload) GetInitiated() int64 { if x != nil { - return x.Name + return x.Initiated } - return "" + return 0 } -func (x *ListObjectVersionsOutput) GetNextKeyMarker() string { +func (x *MultipartUpload) GetInitiator() *Initiator { if x != nil { - return x.NextKeyMarker + return x.Initiator } - return "" + return nil } -func (x *ListObjectVersionsOutput) GetNextVersionIdMarker() string { +func (x *MultipartUpload) GetKey() string { if x != nil { - return x.NextVersionIdMarker + return x.Key } return "" } -func (x *ListObjectVersionsOutput) GetPrefix() string { +func (x *MultipartUpload) GetOwner() *Owner { if x != nil { - return x.Prefix + return x.Owner } - return "" + return nil } -func (x *ListObjectVersionsOutput) GetVersionIdMarker() string { +func (x *MultipartUpload) GetStorageClass() string { if x != nil { - return x.VersionIdMarker + return x.StorageClass } return "" } -func (x *ListObjectVersionsOutput) GetVersions() []*ObjectVersion { +func (x *MultipartUpload) GetUploadId() string { if x != nil { - return x.Versions + return x.UploadId } - return nil + return "" } -// HeadObjectInput -type HeadObjectInput struct { +// ListMultipartUploadsOutput +type ListMultipartUploadsOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` // The bucket name containing the object // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // To retrieve the checksum, this parameter must be enabled - ChecksumMode string `protobuf:"bytes,4,opt,name=checksum_mode,json=checksumMode,proto3" json:"checksum_mode,omitempty"` - // The account ID of the expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,5,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // Return the object only if its entity tag (ETag) is the same as the one - // specified; otherwise, return a 412 (precondition failed) error. - IfMatch string `protobuf:"bytes,6,opt,name=if_match,json=ifMatch,proto3" json:"if_match,omitempty"` - // Return the object only if it has been modified since the specified time; - // otherwise, return a 304 (not modified) error. - IfModifiedSince int64 `protobuf:"varint,7,opt,name=if_modified_since,json=ifModifiedSince,proto3" json:"if_modified_since,omitempty"` - // Return the object only if its entity tag (ETag) is different from the one - // specified - IfNoneMatch string `protobuf:"bytes,8,opt,name=if_none_match,json=ifNoneMatch,proto3" json:"if_none_match,omitempty"` - // Return the object only if it has not been modified since the specified time; - IfUnmodifiedSince int64 `protobuf:"varint,9,opt,name=if_unmodified_since,json=ifUnmodifiedSince,proto3" json:"if_unmodified_since,omitempty"` - // Part number of the object being read. This is a positive integer between 1 and - // 10,000. Effectively performs a 'ranged' HEAD request for the part specified. - // Useful querying about the size of the part and the number of parts in this - // object. - PartNumber int32 `protobuf:"varint,10,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` - // Confirms that the requester knows that they will be charged for the request. - RequestPayer string `protobuf:"bytes,11,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` - // Specifies the algorithm to use to when encrypting the object (for example, - // AES256). - SseCustomerAlgorithm string `protobuf:"bytes,12,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` - // Specifies the customer-provided encryption key for Amazon S3 to use in - // encrypting data - SseCustomerKey string `protobuf:"bytes,13,opt,name=sse_customer_key,json=sseCustomerKey,proto3" json:"sse_customer_key,omitempty"` - // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. - SseCustomerKeyMd5 string `protobuf:"bytes,14,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` - // VersionId used to reference a specific version of the object. - VersionId string `protobuf:"bytes,15,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` - // Return object details meta - WithDetails bool `protobuf:"varint,16,opt,name=with_details,json=withDetails,proto3" json:"with_details,omitempty"` + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` + // If you specify a delimiter in the request, then the result returns each distinct + // key prefix containing the delimiter in a CommonPrefixes element. + CommonPrefixes []string `protobuf:"bytes,2,rep,name=common_prefixes,json=commonPrefixes,proto3" json:"common_prefixes,omitempty"` + // Contains the delimiter you specified in the request. If you don't specify a + // delimiter in your request, this element is absent from the response. + Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` + // Encoding type used by Amazon S3 to encode object keys in the response. + EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` + // Indicates whether the returned list of multipart uploads is truncated. A value + // of true indicates that the list was truncated. The list can be truncated if the + // number of multipart uploads exceeds the limit allowed or specified by max + // uploads. + IsTruncated bool `protobuf:"varint,5,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` + // The key at or after which the listing began. + KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` + // Maximum number of multipart uploads that could have been included in the + // response. + MaxUploads int32 `protobuf:"varint,7,opt,name=max_uploads,json=maxUploads,proto3" json:"max_uploads,omitempty"` + // When a list is truncated, this element specifies the value that should be used + // for the key-marker request parameter in a subsequent request. + NextKeyMarker string `protobuf:"bytes,8,opt,name=next_key_marker,json=nextKeyMarker,proto3" json:"next_key_marker,omitempty"` + // When a list is truncated, this element specifies the value that should be used + // for the upload-id-marker request parameter in a subsequent request. + NextUploadIdMarker string `protobuf:"bytes,9,opt,name=next_upload_id_marker,json=nextUploadIdMarker,proto3" json:"next_upload_id_marker,omitempty"` + // When a prefix is provided in the request, this field contains the specified + // prefix. The result contains only keys starting with the specified prefix. + Prefix string `protobuf:"bytes,10,opt,name=prefix,proto3" json:"prefix,omitempty"` + // Upload ID after which listing began. + UploadIdMarker string `protobuf:"bytes,11,opt,name=upload_id_marker,json=uploadIdMarker,proto3" json:"upload_id_marker,omitempty"` + // Container for elements related to a particular multipart upload. A response can + // contain zero or more Upload elements. + Uploads []*MultipartUpload `protobuf:"bytes,12,rep,name=uploads,proto3" json:"uploads,omitempty"` } -func (x *HeadObjectInput) Reset() { - *x = HeadObjectInput{} +func (x *ListMultipartUploadsOutput) Reset() { + *x = ListMultipartUploadsOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[52] + mi := &file_oss_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HeadObjectInput) String() string { +func (x *ListMultipartUploadsOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HeadObjectInput) ProtoMessage() {} +func (*ListMultipartUploadsOutput) ProtoMessage() {} -func (x *HeadObjectInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[52] +func (x *ListMultipartUploadsOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5442,150 +5435,152 @@ func (x *HeadObjectInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HeadObjectInput.ProtoReflect.Descriptor instead. -func (*HeadObjectInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{52} +// Deprecated: Use ListMultipartUploadsOutput.ProtoReflect.Descriptor instead. +func (*ListMultipartUploadsOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{55} } -func (x *HeadObjectInput) GetStoreName() string { +func (x *ListMultipartUploadsOutput) GetBucket() string { if x != nil { - return x.StoreName + return x.Bucket } return "" } -func (x *HeadObjectInput) GetBucket() string { +func (x *ListMultipartUploadsOutput) GetCommonPrefixes() []string { if x != nil { - return x.Bucket + return x.CommonPrefixes } - return "" + return nil } -func (x *HeadObjectInput) GetKey() string { +func (x *ListMultipartUploadsOutput) GetDelimiter() string { if x != nil { - return x.Key + return x.Delimiter } return "" } -func (x *HeadObjectInput) GetChecksumMode() string { +func (x *ListMultipartUploadsOutput) GetEncodingType() string { if x != nil { - return x.ChecksumMode + return x.EncodingType } return "" } -func (x *HeadObjectInput) GetExpectedBucketOwner() string { - if x != nil { - return x.ExpectedBucketOwner - } - return "" -} - -func (x *HeadObjectInput) GetIfMatch() string { - if x != nil { - return x.IfMatch - } - return "" -} - -func (x *HeadObjectInput) GetIfModifiedSince() int64 { +func (x *ListMultipartUploadsOutput) GetIsTruncated() bool { if x != nil { - return x.IfModifiedSince + return x.IsTruncated } - return 0 + return false } -func (x *HeadObjectInput) GetIfNoneMatch() string { +func (x *ListMultipartUploadsOutput) GetKeyMarker() string { if x != nil { - return x.IfNoneMatch + return x.KeyMarker } return "" } -func (x *HeadObjectInput) GetIfUnmodifiedSince() int64 { - if x != nil { - return x.IfUnmodifiedSince - } - return 0 -} - -func (x *HeadObjectInput) GetPartNumber() int32 { +func (x *ListMultipartUploadsOutput) GetMaxUploads() int32 { if x != nil { - return x.PartNumber + return x.MaxUploads } return 0 } -func (x *HeadObjectInput) GetRequestPayer() string { - if x != nil { - return x.RequestPayer - } - return "" -} - -func (x *HeadObjectInput) GetSseCustomerAlgorithm() string { +func (x *ListMultipartUploadsOutput) GetNextKeyMarker() string { if x != nil { - return x.SseCustomerAlgorithm + return x.NextKeyMarker } return "" } -func (x *HeadObjectInput) GetSseCustomerKey() string { +func (x *ListMultipartUploadsOutput) GetNextUploadIdMarker() string { if x != nil { - return x.SseCustomerKey + return x.NextUploadIdMarker } return "" } -func (x *HeadObjectInput) GetSseCustomerKeyMd5() string { +func (x *ListMultipartUploadsOutput) GetPrefix() string { if x != nil { - return x.SseCustomerKeyMd5 + return x.Prefix } return "" } -func (x *HeadObjectInput) GetVersionId() string { +func (x *ListMultipartUploadsOutput) GetUploadIdMarker() string { if x != nil { - return x.VersionId + return x.UploadIdMarker } return "" } -func (x *HeadObjectInput) GetWithDetails() bool { +func (x *ListMultipartUploadsOutput) GetUploads() []*MultipartUpload { if x != nil { - return x.WithDetails + return x.Uploads } - return false + return nil } -// HeadObjectOutput -type HeadObjectOutput struct { +// ListObjectVersionsInput +type ListObjectVersionsInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Metadata pertaining to the operation's result. - ResultMetadata map[string]string `protobuf:"bytes,1,rep,name=result_metadata,json=resultMetadata,proto3" json:"result_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // A delimiter is a character that you specify to group keys. All keys that contain + // the same string between the prefix and the first occurrence of the delimiter are + // grouped under a single result element in CommonPrefixes. These groups are + // counted as one result against the max-keys limitation. These keys are not + // returned elsewhere in the response. + Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` + // Requests Amazon S3 to encode the object keys in the response and specifies the + // encoding method to use. An object key may contain any Unicode character; + EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` + // The account ID of the expected bucket owner + ExpectedBucketOwner string `protobuf:"bytes,5,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // Specifies the key to start with when listing objects in a bucket. + KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` + // Sets the maximum number of keys returned in the response. By default the action + // returns up to 1,000 key names. The response might contain fewer keys but will + // never contain more. If additional keys satisfy the search criteria, but were not + // returned because max-keys was exceeded, the response contains true. To return + // the additional keys, see key-marker and version-id-marker. + MaxKeys int64 `protobuf:"varint,7,opt,name=max_keys,json=maxKeys,proto3" json:"max_keys,omitempty"` + // Use this parameter to select only those keys that begin with the specified + // prefix. You can use prefixes to separate a bucket into different groupings of + // keys. (You can think of using prefix to make groups in the same way you'd use a + // folder in a file system.) You can use prefix with delimiter to roll up numerous + // objects into a single result under CommonPrefixes. + Prefix string `protobuf:"bytes,8,opt,name=prefix,proto3" json:"prefix,omitempty"` + // Specifies the object version you want to start listing from. + VersionIdMarker string `protobuf:"bytes,9,opt,name=version_id_marker,json=versionIdMarker,proto3" json:"version_id_marker,omitempty"` } -func (x *HeadObjectOutput) Reset() { - *x = HeadObjectOutput{} +func (x *ListObjectVersionsInput) Reset() { + *x = ListObjectVersionsInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[53] + mi := &file_oss_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HeadObjectOutput) String() string { +func (x *ListObjectVersionsInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HeadObjectOutput) ProtoMessage() {} +func (*ListObjectVersionsInput) ProtoMessage() {} -func (x *HeadObjectOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[53] +func (x *ListObjectVersionsInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5596,123 +5591,111 @@ func (x *HeadObjectOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HeadObjectOutput.ProtoReflect.Descriptor instead. -func (*HeadObjectOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{53} +// Deprecated: Use ListObjectVersionsInput.ProtoReflect.Descriptor instead. +func (*ListObjectVersionsInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{56} } -func (x *HeadObjectOutput) GetResultMetadata() map[string]string { +func (x *ListObjectVersionsInput) GetStoreName() string { if x != nil { - return x.ResultMetadata + return x.StoreName } - return nil -} - -// IsObjectExistInput -type IsObjectExistInput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // Object version id - VersionId string `protobuf:"bytes,4,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + return "" } -func (x *IsObjectExistInput) Reset() { - *x = IsObjectExistInput{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListObjectVersionsInput) GetBucket() string { + if x != nil { + return x.Bucket } + return "" } -func (x *IsObjectExistInput) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListObjectVersionsInput) GetDelimiter() string { + if x != nil { + return x.Delimiter + } + return "" } -func (*IsObjectExistInput) ProtoMessage() {} - -func (x *IsObjectExistInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ListObjectVersionsInput) GetEncodingType() string { + if x != nil { + return x.EncodingType } - return mi.MessageOf(x) + return "" } -// Deprecated: Use IsObjectExistInput.ProtoReflect.Descriptor instead. -func (*IsObjectExistInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{54} +func (x *ListObjectVersionsInput) GetExpectedBucketOwner() string { + if x != nil { + return x.ExpectedBucketOwner + } + return "" } -func (x *IsObjectExistInput) GetStoreName() string { +func (x *ListObjectVersionsInput) GetKeyMarker() string { if x != nil { - return x.StoreName + return x.KeyMarker } return "" } -func (x *IsObjectExistInput) GetBucket() string { +func (x *ListObjectVersionsInput) GetMaxKeys() int64 { if x != nil { - return x.Bucket + return x.MaxKeys } - return "" + return 0 } -func (x *IsObjectExistInput) GetKey() string { +func (x *ListObjectVersionsInput) GetPrefix() string { if x != nil { - return x.Key + return x.Prefix } return "" } -func (x *IsObjectExistInput) GetVersionId() string { +func (x *ListObjectVersionsInput) GetVersionIdMarker() string { if x != nil { - return x.VersionId + return x.VersionIdMarker } return "" } -// IsObjectExistOutput -type IsObjectExistOutput struct { +// DeleteMarkerEntry +type DeleteMarkerEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Object exist or not - FileExist bool `protobuf:"varint,1,opt,name=file_exist,json=fileExist,proto3" json:"file_exist,omitempty"` + // Specifies whether the object is (true) or is not (false) the latest version of + // an object. + IsLatest bool `protobuf:"varint,1,opt,name=is_latest,json=isLatest,proto3" json:"is_latest,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // Date and time the object was last modified. + LastModified int64 `protobuf:"varint,3,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` + // Owner + Owner *Owner `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` + // Version ID of an object. + VersionId string `protobuf:"bytes,5,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } -func (x *IsObjectExistOutput) Reset() { - *x = IsObjectExistOutput{} +func (x *DeleteMarkerEntry) Reset() { + *x = DeleteMarkerEntry{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[55] + mi := &file_oss_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsObjectExistOutput) String() string { +func (x *DeleteMarkerEntry) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsObjectExistOutput) ProtoMessage() {} +func (*DeleteMarkerEntry) ProtoMessage() {} -func (x *IsObjectExistOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[55] +func (x *DeleteMarkerEntry) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5723,55 +5706,89 @@ func (x *IsObjectExistOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsObjectExistOutput.ProtoReflect.Descriptor instead. -func (*IsObjectExistOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{55} +// Deprecated: Use DeleteMarkerEntry.ProtoReflect.Descriptor instead. +func (*DeleteMarkerEntry) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{57} } -func (x *IsObjectExistOutput) GetFileExist() bool { +func (x *DeleteMarkerEntry) GetIsLatest() bool { if x != nil { - return x.FileExist + return x.IsLatest } return false } -// SignURLInput -type SignURLInput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` +func (x *DeleteMarkerEntry) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *DeleteMarkerEntry) GetLastModified() int64 { + if x != nil { + return x.LastModified + } + return 0 +} + +func (x *DeleteMarkerEntry) GetOwner() *Owner { + if x != nil { + return x.Owner + } + return nil +} + +func (x *DeleteMarkerEntry) GetVersionId() string { + if x != nil { + return x.VersionId + } + return "" +} + +// ObjectVersion +type ObjectVersion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The entity tag is an MD5 hash of that version of the object. + Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` + // Specifies whether the object is (true) or is not (false) the latest version of + // an object. + IsLatest bool `protobuf:"varint,2,opt,name=is_latest,json=isLatest,proto3" json:"is_latest,omitempty"` // Name of the object key. // This member is required. Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // the method for sign url, eg. GET、POST - Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"` - // expire time of the sign url - ExpiredInSec int64 `protobuf:"varint,5,opt,name=expired_in_sec,json=expiredInSec,proto3" json:"expired_in_sec,omitempty"` + // Date and time the object was last modified. + LastModified int64 `protobuf:"varint,4,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` + // Specifies the owner of the object. + Owner *Owner `protobuf:"bytes,5,opt,name=owner,proto3" json:"owner,omitempty"` + // Size in bytes of the object. + Size int64 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` + // The class of storage used to store the object. + StorageClass string `protobuf:"bytes,7,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` + // Version ID of an object. + VersionId string `protobuf:"bytes,8,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } -func (x *SignURLInput) Reset() { - *x = SignURLInput{} +func (x *ObjectVersion) Reset() { + *x = ObjectVersion{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[56] + mi := &file_oss_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SignURLInput) String() string { +func (x *ObjectVersion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SignURLInput) ProtoMessage() {} +func (*ObjectVersion) ProtoMessage() {} -func (x *SignURLInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[56] +func (x *ObjectVersion) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5782,73 +5799,123 @@ func (x *SignURLInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SignURLInput.ProtoReflect.Descriptor instead. -func (*SignURLInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{56} +// Deprecated: Use ObjectVersion.ProtoReflect.Descriptor instead. +func (*ObjectVersion) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{58} } -func (x *SignURLInput) GetStoreName() string { +func (x *ObjectVersion) GetEtag() string { if x != nil { - return x.StoreName + return x.Etag } return "" } -func (x *SignURLInput) GetBucket() string { +func (x *ObjectVersion) GetIsLatest() bool { if x != nil { - return x.Bucket + return x.IsLatest } - return "" + return false } -func (x *SignURLInput) GetKey() string { +func (x *ObjectVersion) GetKey() string { if x != nil { return x.Key } return "" } -func (x *SignURLInput) GetMethod() string { +func (x *ObjectVersion) GetLastModified() int64 { if x != nil { - return x.Method + return x.LastModified } - return "" + return 0 } -func (x *SignURLInput) GetExpiredInSec() int64 { +func (x *ObjectVersion) GetOwner() *Owner { if x != nil { - return x.ExpiredInSec + return x.Owner + } + return nil +} + +func (x *ObjectVersion) GetSize() int64 { + if x != nil { + return x.Size } return 0 } -// SignURLOutput -type SignURLOutput struct { +func (x *ObjectVersion) GetStorageClass() string { + if x != nil { + return x.StorageClass + } + return "" +} + +func (x *ObjectVersion) GetVersionId() string { + if x != nil { + return x.VersionId + } + return "" +} + +// ListObjectVersionsOutput +type ListObjectVersionsOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Object signed url - SignedUrl string `protobuf:"bytes,1,opt,name=signed_url,json=signedUrl,proto3" json:"signed_url,omitempty"` + // All of the keys rolled up into a common prefix count as a single return when + // calculating the number of returns. + CommonPrefixes []string `protobuf:"bytes,1,rep,name=common_prefixes,json=commonPrefixes,proto3" json:"common_prefixes,omitempty"` + // Container for an object that is a delete marker. + DeleteMarkers []*DeleteMarkerEntry `protobuf:"bytes,2,rep,name=delete_markers,json=deleteMarkers,proto3" json:"delete_markers,omitempty"` + // The delimiter grouping the included keys. + Delimiter string `protobuf:"bytes,3,opt,name=delimiter,proto3" json:"delimiter,omitempty"` + // Encoding type used by Amazon S3 to encode object key names in the XML response. + EncodingType string `protobuf:"bytes,4,opt,name=encoding_type,json=encodingType,proto3" json:"encoding_type,omitempty"` + // A flag that indicates whether Amazon S3 returned all of the results that + // satisfied the search criteria + IsTruncated bool `protobuf:"varint,5,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` + // Marks the last key returned in a truncated response. + KeyMarker string `protobuf:"bytes,6,opt,name=key_marker,json=keyMarker,proto3" json:"key_marker,omitempty"` + // Specifies the maximum number of objects to return + MaxKeys int64 `protobuf:"varint,7,opt,name=max_keys,json=maxKeys,proto3" json:"max_keys,omitempty"` + // The bucket name. + Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` + // When the number of responses exceeds the value of MaxKeys, NextKeyMarker + // specifies the first key not returned that satisfies the search criteria + NextKeyMarker string `protobuf:"bytes,9,opt,name=next_key_marker,json=nextKeyMarker,proto3" json:"next_key_marker,omitempty"` + // When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker + // specifies the first object version not returned that satisfies the search + // criteria. + NextVersionIdMarker string `protobuf:"bytes,10,opt,name=next_version_id_marker,json=nextVersionIdMarker,proto3" json:"next_version_id_marker,omitempty"` + // Selects objects that start with the value supplied by this parameter. + Prefix string `protobuf:"bytes,11,opt,name=prefix,proto3" json:"prefix,omitempty"` + // Marks the last version of the key returned in a truncated response. + VersionIdMarker string `protobuf:"bytes,12,opt,name=version_id_marker,json=versionIdMarker,proto3" json:"version_id_marker,omitempty"` + // Container for version information. + Versions []*ObjectVersion `protobuf:"bytes,13,rep,name=versions,proto3" json:"versions,omitempty"` } -func (x *SignURLOutput) Reset() { - *x = SignURLOutput{} +func (x *ListObjectVersionsOutput) Reset() { + *x = ListObjectVersionsOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[57] + mi := &file_oss_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SignURLOutput) String() string { +func (x *ListObjectVersionsOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SignURLOutput) ProtoMessage() {} +func (*ListObjectVersionsOutput) ProtoMessage() {} -func (x *SignURLOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[57] +func (x *ListObjectVersionsOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5859,87 +5926,104 @@ func (x *SignURLOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SignURLOutput.ProtoReflect.Descriptor instead. -func (*SignURLOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{57} +// Deprecated: Use ListObjectVersionsOutput.ProtoReflect.Descriptor instead. +func (*ListObjectVersionsOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{59} } -func (x *SignURLOutput) GetSignedUrl() string { +func (x *ListObjectVersionsOutput) GetCommonPrefixes() []string { if x != nil { - return x.SignedUrl + return x.CommonPrefixes } - return "" + return nil } -// UpdateBandwidthRateLimitInput -type UpdateBandwidthRateLimitInput struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The name of oss store. - StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` - // The average upload/download bandwidth rate limit in bits per second. - AverageRateLimitInBitsPerSec int64 `protobuf:"varint,2,opt,name=average_rate_limit_in_bits_per_sec,json=averageRateLimitInBitsPerSec,proto3" json:"average_rate_limit_in_bits_per_sec,omitempty"` - // Resource name of gateway - GatewayResourceName string `protobuf:"bytes,3,opt,name=gateway_resource_name,json=gatewayResourceName,proto3" json:"gateway_resource_name,omitempty"` +func (x *ListObjectVersionsOutput) GetDeleteMarkers() []*DeleteMarkerEntry { + if x != nil { + return x.DeleteMarkers + } + return nil } -func (x *UpdateBandwidthRateLimitInput) Reset() { - *x = UpdateBandwidthRateLimitInput{} - if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListObjectVersionsOutput) GetDelimiter() string { + if x != nil { + return x.Delimiter } + return "" } -func (x *UpdateBandwidthRateLimitInput) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListObjectVersionsOutput) GetEncodingType() string { + if x != nil { + return x.EncodingType + } + return "" } -func (*UpdateBandwidthRateLimitInput) ProtoMessage() {} +func (x *ListObjectVersionsOutput) GetIsTruncated() bool { + if x != nil { + return x.IsTruncated + } + return false +} -func (x *UpdateBandwidthRateLimitInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ListObjectVersionsOutput) GetKeyMarker() string { + if x != nil { + return x.KeyMarker } - return mi.MessageOf(x) + return "" } -// Deprecated: Use UpdateBandwidthRateLimitInput.ProtoReflect.Descriptor instead. -func (*UpdateBandwidthRateLimitInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{58} +func (x *ListObjectVersionsOutput) GetMaxKeys() int64 { + if x != nil { + return x.MaxKeys + } + return 0 } -func (x *UpdateBandwidthRateLimitInput) GetStoreName() string { +func (x *ListObjectVersionsOutput) GetName() string { if x != nil { - return x.StoreName + return x.Name } return "" } -func (x *UpdateBandwidthRateLimitInput) GetAverageRateLimitInBitsPerSec() int64 { +func (x *ListObjectVersionsOutput) GetNextKeyMarker() string { if x != nil { - return x.AverageRateLimitInBitsPerSec + return x.NextKeyMarker } - return 0 + return "" } -func (x *UpdateBandwidthRateLimitInput) GetGatewayResourceName() string { +func (x *ListObjectVersionsOutput) GetNextVersionIdMarker() string { if x != nil { - return x.GatewayResourceName + return x.NextVersionIdMarker } return "" } -// AppendObjectInput -type AppendObjectInput struct { +func (x *ListObjectVersionsOutput) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *ListObjectVersionsOutput) GetVersionIdMarker() string { + if x != nil { + return x.VersionIdMarker + } + return "" +} + +func (x *ListObjectVersionsOutput) GetVersions() []*ObjectVersion { + if x != nil { + return x.Versions + } + return nil +} + +// HeadObjectInput +type HeadObjectInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -5952,51 +6036,59 @@ type AppendObjectInput struct { // Name of the object key. // This member is required. Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // Object content - Body []byte `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` - // Append start position - Position int64 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` - // Object ACL - Acl string `protobuf:"bytes,6,opt,name=acl,proto3" json:"acl,omitempty"` - // Sets the Cache-Control header of the response. - CacheControl string `protobuf:"bytes,7,opt,name=cache_control,json=cacheControl,proto3" json:"cache_control,omitempty"` - // Sets the Content-Disposition header of the response - ContentDisposition string `protobuf:"bytes,8,opt,name=content_disposition,json=contentDisposition,proto3" json:"content_disposition,omitempty"` - // Sets the Content-Encoding header of the response - ContentEncoding string `protobuf:"bytes,9,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` - // The base64-encoded 128-bit MD5 digest of the part data. - ContentMd5 string `protobuf:"bytes,10,opt,name=content_md5,json=contentMd5,proto3" json:"content_md5,omitempty"` - // Sets the Expires header of the response - Expires int64 `protobuf:"varint,11,opt,name=expires,proto3" json:"expires,omitempty"` - // Provides storage class information of the object. Amazon S3 returns this header - // for all objects except for S3 Standard storage class objects. - StorageClass string `protobuf:"bytes,12,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` - // The server-side encryption algorithm used when storing this object in Amazon S3 - // (for example, AES256, aws:kms). - ServerSideEncryption string `protobuf:"bytes,13,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` - // Object metadata - Meta string `protobuf:"bytes,14,opt,name=meta,proto3" json:"meta,omitempty"` - // Object tags - Tags map[string]string `protobuf:"bytes,15,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // To retrieve the checksum, this parameter must be enabled + ChecksumMode string `protobuf:"bytes,4,opt,name=checksum_mode,json=checksumMode,proto3" json:"checksum_mode,omitempty"` + // The account ID of the expected bucket owner + ExpectedBucketOwner string `protobuf:"bytes,5,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // Return the object only if its entity tag (ETag) is the same as the one + // specified; otherwise, return a 412 (precondition failed) error. + IfMatch string `protobuf:"bytes,6,opt,name=if_match,json=ifMatch,proto3" json:"if_match,omitempty"` + // Return the object only if it has been modified since the specified time; + // otherwise, return a 304 (not modified) error. + IfModifiedSince int64 `protobuf:"varint,7,opt,name=if_modified_since,json=ifModifiedSince,proto3" json:"if_modified_since,omitempty"` + // Return the object only if its entity tag (ETag) is different from the one + // specified + IfNoneMatch string `protobuf:"bytes,8,opt,name=if_none_match,json=ifNoneMatch,proto3" json:"if_none_match,omitempty"` + // Return the object only if it has not been modified since the specified time; + IfUnmodifiedSince int64 `protobuf:"varint,9,opt,name=if_unmodified_since,json=ifUnmodifiedSince,proto3" json:"if_unmodified_since,omitempty"` + // Part number of the object being read. This is a positive integer between 1 and + // 10,000. Effectively performs a 'ranged' HEAD request for the part specified. + // Useful querying about the size of the part and the number of parts in this + // object. + PartNumber int32 `protobuf:"varint,10,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` + // Confirms that the requester knows that they will be charged for the request. + RequestPayer string `protobuf:"bytes,11,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` + // Specifies the algorithm to use to when encrypting the object (for example, + // AES256). + SseCustomerAlgorithm string `protobuf:"bytes,12,opt,name=sse_customer_algorithm,json=sseCustomerAlgorithm,proto3" json:"sse_customer_algorithm,omitempty"` + // Specifies the customer-provided encryption key for Amazon S3 to use in + // encrypting data + SseCustomerKey string `protobuf:"bytes,13,opt,name=sse_customer_key,json=sseCustomerKey,proto3" json:"sse_customer_key,omitempty"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + SseCustomerKeyMd5 string `protobuf:"bytes,14,opt,name=sse_customer_key_md5,json=sseCustomerKeyMd5,proto3" json:"sse_customer_key_md5,omitempty"` + // VersionId used to reference a specific version of the object. + VersionId string `protobuf:"bytes,15,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + // Return object details meta + WithDetails bool `protobuf:"varint,16,opt,name=with_details,json=withDetails,proto3" json:"with_details,omitempty"` } -func (x *AppendObjectInput) Reset() { - *x = AppendObjectInput{} +func (x *HeadObjectInput) Reset() { + *x = HeadObjectInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[59] + mi := &file_oss_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AppendObjectInput) String() string { +func (x *HeadObjectInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AppendObjectInput) ProtoMessage() {} +func (*HeadObjectInput) ProtoMessage() {} -func (x *AppendObjectInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[59] +func (x *HeadObjectInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6007,143 +6099,150 @@ func (x *AppendObjectInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AppendObjectInput.ProtoReflect.Descriptor instead. -func (*AppendObjectInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{59} +// Deprecated: Use HeadObjectInput.ProtoReflect.Descriptor instead. +func (*HeadObjectInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{60} } -func (x *AppendObjectInput) GetStoreName() string { +func (x *HeadObjectInput) GetStoreName() string { if x != nil { return x.StoreName } return "" } -func (x *AppendObjectInput) GetBucket() string { +func (x *HeadObjectInput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *AppendObjectInput) GetKey() string { +func (x *HeadObjectInput) GetKey() string { if x != nil { return x.Key } return "" } -func (x *AppendObjectInput) GetBody() []byte { +func (x *HeadObjectInput) GetChecksumMode() string { if x != nil { - return x.Body + return x.ChecksumMode } - return nil + return "" } -func (x *AppendObjectInput) GetPosition() int64 { +func (x *HeadObjectInput) GetExpectedBucketOwner() string { if x != nil { - return x.Position + return x.ExpectedBucketOwner } - return 0 + return "" } -func (x *AppendObjectInput) GetAcl() string { +func (x *HeadObjectInput) GetIfMatch() string { if x != nil { - return x.Acl + return x.IfMatch } return "" } -func (x *AppendObjectInput) GetCacheControl() string { +func (x *HeadObjectInput) GetIfModifiedSince() int64 { if x != nil { - return x.CacheControl + return x.IfModifiedSince } - return "" + return 0 } -func (x *AppendObjectInput) GetContentDisposition() string { +func (x *HeadObjectInput) GetIfNoneMatch() string { if x != nil { - return x.ContentDisposition + return x.IfNoneMatch } return "" } -func (x *AppendObjectInput) GetContentEncoding() string { +func (x *HeadObjectInput) GetIfUnmodifiedSince() int64 { if x != nil { - return x.ContentEncoding + return x.IfUnmodifiedSince } - return "" + return 0 } -func (x *AppendObjectInput) GetContentMd5() string { +func (x *HeadObjectInput) GetPartNumber() int32 { if x != nil { - return x.ContentMd5 + return x.PartNumber + } + return 0 +} + +func (x *HeadObjectInput) GetRequestPayer() string { + if x != nil { + return x.RequestPayer } return "" } -func (x *AppendObjectInput) GetExpires() int64 { +func (x *HeadObjectInput) GetSseCustomerAlgorithm() string { if x != nil { - return x.Expires + return x.SseCustomerAlgorithm } - return 0 + return "" } -func (x *AppendObjectInput) GetStorageClass() string { +func (x *HeadObjectInput) GetSseCustomerKey() string { if x != nil { - return x.StorageClass + return x.SseCustomerKey } return "" } -func (x *AppendObjectInput) GetServerSideEncryption() string { +func (x *HeadObjectInput) GetSseCustomerKeyMd5() string { if x != nil { - return x.ServerSideEncryption + return x.SseCustomerKeyMd5 } return "" } -func (x *AppendObjectInput) GetMeta() string { +func (x *HeadObjectInput) GetVersionId() string { if x != nil { - return x.Meta + return x.VersionId } return "" } -func (x *AppendObjectInput) GetTags() map[string]string { +func (x *HeadObjectInput) GetWithDetails() bool { if x != nil { - return x.Tags + return x.WithDetails } - return nil + return false } -// AppendObjectOutput -type AppendObjectOutput struct { +// HeadObjectOutput +type HeadObjectOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Next append position - AppendPosition int64 `protobuf:"varint,1,opt,name=append_position,json=appendPosition,proto3" json:"append_position,omitempty"` + // Metadata pertaining to the operation's result. + ResultMetadata map[string]string `protobuf:"bytes,1,rep,name=result_metadata,json=resultMetadata,proto3" json:"result_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *AppendObjectOutput) Reset() { - *x = AppendObjectOutput{} +func (x *HeadObjectOutput) Reset() { + *x = HeadObjectOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[60] + mi := &file_oss_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AppendObjectOutput) String() string { +func (x *HeadObjectOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AppendObjectOutput) ProtoMessage() {} +func (*HeadObjectOutput) ProtoMessage() {} -func (x *AppendObjectOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[60] +func (x *HeadObjectOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6154,20 +6253,20 @@ func (x *AppendObjectOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AppendObjectOutput.ProtoReflect.Descriptor instead. -func (*AppendObjectOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{60} +// Deprecated: Use HeadObjectOutput.ProtoReflect.Descriptor instead. +func (*HeadObjectOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{61} } -func (x *AppendObjectOutput) GetAppendPosition() int64 { +func (x *HeadObjectOutput) GetResultMetadata() map[string]string { if x != nil { - return x.AppendPosition + return x.ResultMetadata } - return 0 + return nil } -// ListPartsInput -type ListPartsInput struct { +// IsObjectExistInput +type IsObjectExistInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -6180,36 +6279,27 @@ type ListPartsInput struct { // Name of the object key. // This member is required. Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - // The account ID of the expected bucket owner - ExpectedBucketOwner string `protobuf:"bytes,4,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` - // Sets the maximum number of parts to return - MaxParts int64 `protobuf:"varint,5,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"` - // Specifies the part after which listing should begin. Only parts with higher part - // numbers will be listed. - PartNumberMarker int64 `protobuf:"varint,6,opt,name=part_number_marker,json=partNumberMarker,proto3" json:"part_number_marker,omitempty"` - // Confirms that the requester knows that they will be charged for the request. - RequestPayer string `protobuf:"bytes,7,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` - // Upload ID identifying the multipart upload whose parts are being listed. - UploadId string `protobuf:"bytes,8,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + // Object version id + VersionId string `protobuf:"bytes,4,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } -func (x *ListPartsInput) Reset() { - *x = ListPartsInput{} +func (x *IsObjectExistInput) Reset() { + *x = IsObjectExistInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[61] + mi := &file_oss_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListPartsInput) String() string { +func (x *IsObjectExistInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartsInput) ProtoMessage() {} +func (*IsObjectExistInput) ProtoMessage() {} -func (x *ListPartsInput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[61] +func (x *IsObjectExistInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6220,100 +6310,125 @@ func (x *ListPartsInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartsInput.ProtoReflect.Descriptor instead. -func (*ListPartsInput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{61} +// Deprecated: Use IsObjectExistInput.ProtoReflect.Descriptor instead. +func (*IsObjectExistInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{62} } -func (x *ListPartsInput) GetStoreName() string { +func (x *IsObjectExistInput) GetStoreName() string { if x != nil { return x.StoreName } return "" } -func (x *ListPartsInput) GetBucket() string { +func (x *IsObjectExistInput) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *ListPartsInput) GetKey() string { +func (x *IsObjectExistInput) GetKey() string { if x != nil { return x.Key } return "" } -func (x *ListPartsInput) GetExpectedBucketOwner() string { +func (x *IsObjectExistInput) GetVersionId() string { if x != nil { - return x.ExpectedBucketOwner + return x.VersionId } return "" } -func (x *ListPartsInput) GetMaxParts() int64 { - if x != nil { - return x.MaxParts - } - return 0 +// IsObjectExistOutput +type IsObjectExistOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Object exist or not + FileExist bool `protobuf:"varint,1,opt,name=file_exist,json=fileExist,proto3" json:"file_exist,omitempty"` } -func (x *ListPartsInput) GetPartNumberMarker() int64 { - if x != nil { - return x.PartNumberMarker +func (x *IsObjectExistOutput) Reset() { + *x = IsObjectExistOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *ListPartsInput) GetRequestPayer() string { - if x != nil { - return x.RequestPayer +func (x *IsObjectExistOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsObjectExistOutput) ProtoMessage() {} + +func (x *IsObjectExistOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ListPartsInput) GetUploadId() string { +// Deprecated: Use IsObjectExistOutput.ProtoReflect.Descriptor instead. +func (*IsObjectExistOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{63} +} + +func (x *IsObjectExistOutput) GetFileExist() bool { if x != nil { - return x.UploadId + return x.FileExist } - return "" + return false } -// Part -type Part struct { +// SignURLInput +type SignURLInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Part Etag - Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` - // Last modified time - LastModified int64 `protobuf:"varint,2,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` - // Part number - PartNumber int64 `protobuf:"varint,3,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` - // Part size - Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // the method for sign url, eg. GET、POST + Method string `protobuf:"bytes,4,opt,name=method,proto3" json:"method,omitempty"` + // expire time of the sign url + ExpiredInSec int64 `protobuf:"varint,5,opt,name=expired_in_sec,json=expiredInSec,proto3" json:"expired_in_sec,omitempty"` } -func (x *Part) Reset() { - *x = Part{} +func (x *SignURLInput) Reset() { + *x = SignURLInput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[62] + mi := &file_oss_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Part) String() string { +func (x *SignURLInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Part) ProtoMessage() {} +func (*SignURLInput) ProtoMessage() {} -func (x *Part) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[62] +func (x *SignURLInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6324,85 +6439,73 @@ func (x *Part) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Part.ProtoReflect.Descriptor instead. -func (*Part) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{62} +// Deprecated: Use SignURLInput.ProtoReflect.Descriptor instead. +func (*SignURLInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{64} } -func (x *Part) GetEtag() string { +func (x *SignURLInput) GetStoreName() string { if x != nil { - return x.Etag + return x.StoreName } return "" } -func (x *Part) GetLastModified() int64 { +func (x *SignURLInput) GetBucket() string { if x != nil { - return x.LastModified + return x.Bucket } - return 0 + return "" } -func (x *Part) GetPartNumber() int64 { +func (x *SignURLInput) GetKey() string { if x != nil { - return x.PartNumber + return x.Key } - return 0 + return "" } -func (x *Part) GetSize() int64 { +func (x *SignURLInput) GetMethod() string { if x != nil { - return x.Size + return x.Method + } + return "" +} + +func (x *SignURLInput) GetExpiredInSec() int64 { + if x != nil { + return x.ExpiredInSec } return 0 } -// ListPartsOutput -type ListPartsOutput struct { +// SignURLOutput +type SignURLOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The bucket name containing the object - // This member is required - Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Name of the object key. - // This member is required. - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - // Upload ID identifying the multipart upload whose parts are being listed. - UploadId string `protobuf:"bytes,3,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` - // When a list is truncated, this element specifies the last part in the list, as - // well as the value to use for the part-number-marker request parameter in a - // subsequent request. - NextPartNumberMarker string `protobuf:"bytes,4,opt,name=next_part_number_marker,json=nextPartNumberMarker,proto3" json:"next_part_number_marker,omitempty"` - // Maximum number of parts that were allowed in the response. - MaxParts int64 `protobuf:"varint,5,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"` - // Indicates whether the returned list of parts is truncated. A true value - // indicates that the list was truncated. A list can be truncated if the number of - // parts exceeds the limit returned in the MaxParts element. - IsTruncated bool `protobuf:"varint,6,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` - // Container for elements related to a particular part. A response can contain zero - // or more Part elements. - Parts []*Part `protobuf:"bytes,7,rep,name=parts,proto3" json:"parts,omitempty"` + // Object signed url + SignedUrl string `protobuf:"bytes,1,opt,name=signed_url,json=signedUrl,proto3" json:"signed_url,omitempty"` } -func (x *ListPartsOutput) Reset() { - *x = ListPartsOutput{} +func (x *SignURLOutput) Reset() { + *x = SignURLOutput{} if protoimpl.UnsafeEnabled { - mi := &file_oss_proto_msgTypes[63] + mi := &file_oss_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListPartsOutput) String() string { +func (x *SignURLOutput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartsOutput) ProtoMessage() {} +func (*SignURLOutput) ProtoMessage() {} -func (x *ListPartsOutput) ProtoReflect() protoreflect.Message { - mi := &file_oss_proto_msgTypes[63] +func (x *SignURLOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6413,74 +6516,628 @@ func (x *ListPartsOutput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartsOutput.ProtoReflect.Descriptor instead. -func (*ListPartsOutput) Descriptor() ([]byte, []int) { - return file_oss_proto_rawDescGZIP(), []int{63} +// Deprecated: Use SignURLOutput.ProtoReflect.Descriptor instead. +func (*SignURLOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{65} } -func (x *ListPartsOutput) GetBucket() string { +func (x *SignURLOutput) GetSignedUrl() string { if x != nil { - return x.Bucket + return x.SignedUrl } return "" } -func (x *ListPartsOutput) GetKey() string { - if x != nil { - return x.Key - } - return "" +// UpdateBandwidthRateLimitInput +type UpdateBandwidthRateLimitInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The average upload/download bandwidth rate limit in bits per second. + AverageRateLimitInBitsPerSec int64 `protobuf:"varint,2,opt,name=average_rate_limit_in_bits_per_sec,json=averageRateLimitInBitsPerSec,proto3" json:"average_rate_limit_in_bits_per_sec,omitempty"` + // Resource name of gateway + GatewayResourceName string `protobuf:"bytes,3,opt,name=gateway_resource_name,json=gatewayResourceName,proto3" json:"gateway_resource_name,omitempty"` } -func (x *ListPartsOutput) GetUploadId() string { - if x != nil { - return x.UploadId +func (x *UpdateBandwidthRateLimitInput) Reset() { + *x = UpdateBandwidthRateLimitInput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ListPartsOutput) GetNextPartNumberMarker() string { - if x != nil { - return x.NextPartNumberMarker +func (x *UpdateBandwidthRateLimitInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateBandwidthRateLimitInput) ProtoMessage() {} + +func (x *UpdateBandwidthRateLimitInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ListPartsOutput) GetMaxParts() int64 { +// Deprecated: Use UpdateBandwidthRateLimitInput.ProtoReflect.Descriptor instead. +func (*UpdateBandwidthRateLimitInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{66} +} + +func (x *UpdateBandwidthRateLimitInput) GetStoreName() string { if x != nil { - return x.MaxParts + return x.StoreName } - return 0 + return "" } -func (x *ListPartsOutput) GetIsTruncated() bool { +func (x *UpdateBandwidthRateLimitInput) GetAverageRateLimitInBitsPerSec() int64 { if x != nil { - return x.IsTruncated + return x.AverageRateLimitInBitsPerSec } - return false + return 0 } -func (x *ListPartsOutput) GetParts() []*Part { +func (x *UpdateBandwidthRateLimitInput) GetGatewayResourceName() string { if x != nil { - return x.Parts + return x.GatewayResourceName } - return nil + return "" } -var File_oss_proto protoreflect.FileDescriptor +// AppendObjectInput +type AppendObjectInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_oss_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x6f, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x07, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // Object content + Body []byte `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` + // Append start position + Position int64 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` + // Object ACL + Acl string `protobuf:"bytes,6,opt,name=acl,proto3" json:"acl,omitempty"` + // Sets the Cache-Control header of the response. + CacheControl string `protobuf:"bytes,7,opt,name=cache_control,json=cacheControl,proto3" json:"cache_control,omitempty"` + // Sets the Content-Disposition header of the response + ContentDisposition string `protobuf:"bytes,8,opt,name=content_disposition,json=contentDisposition,proto3" json:"content_disposition,omitempty"` + // Sets the Content-Encoding header of the response + ContentEncoding string `protobuf:"bytes,9,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + // The base64-encoded 128-bit MD5 digest of the part data. + ContentMd5 string `protobuf:"bytes,10,opt,name=content_md5,json=contentMd5,proto3" json:"content_md5,omitempty"` + // Sets the Expires header of the response + Expires int64 `protobuf:"varint,11,opt,name=expires,proto3" json:"expires,omitempty"` + // Provides storage class information of the object. Amazon S3 returns this header + // for all objects except for S3 Standard storage class objects. + StorageClass string `protobuf:"bytes,12,opt,name=storage_class,json=storageClass,proto3" json:"storage_class,omitempty"` + // The server-side encryption algorithm used when storing this object in Amazon S3 + // (for example, AES256, aws:kms). + ServerSideEncryption string `protobuf:"bytes,13,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + // Object metadata + Meta string `protobuf:"bytes,14,opt,name=meta,proto3" json:"meta,omitempty"` + // Object tags + Tags map[string]string `protobuf:"bytes,15,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *AppendObjectInput) Reset() { + *x = AppendObjectInput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AppendObjectInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AppendObjectInput) ProtoMessage() {} + +func (x *AppendObjectInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AppendObjectInput.ProtoReflect.Descriptor instead. +func (*AppendObjectInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{67} +} + +func (x *AppendObjectInput) GetStoreName() string { + if x != nil { + return x.StoreName + } + return "" +} + +func (x *AppendObjectInput) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *AppendObjectInput) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *AppendObjectInput) GetBody() []byte { + if x != nil { + return x.Body + } + return nil +} + +func (x *AppendObjectInput) GetPosition() int64 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *AppendObjectInput) GetAcl() string { + if x != nil { + return x.Acl + } + return "" +} + +func (x *AppendObjectInput) GetCacheControl() string { + if x != nil { + return x.CacheControl + } + return "" +} + +func (x *AppendObjectInput) GetContentDisposition() string { + if x != nil { + return x.ContentDisposition + } + return "" +} + +func (x *AppendObjectInput) GetContentEncoding() string { + if x != nil { + return x.ContentEncoding + } + return "" +} + +func (x *AppendObjectInput) GetContentMd5() string { + if x != nil { + return x.ContentMd5 + } + return "" +} + +func (x *AppendObjectInput) GetExpires() int64 { + if x != nil { + return x.Expires + } + return 0 +} + +func (x *AppendObjectInput) GetStorageClass() string { + if x != nil { + return x.StorageClass + } + return "" +} + +func (x *AppendObjectInput) GetServerSideEncryption() string { + if x != nil { + return x.ServerSideEncryption + } + return "" +} + +func (x *AppendObjectInput) GetMeta() string { + if x != nil { + return x.Meta + } + return "" +} + +func (x *AppendObjectInput) GetTags() map[string]string { + if x != nil { + return x.Tags + } + return nil +} + +// AppendObjectOutput +type AppendObjectOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Next append position + AppendPosition int64 `protobuf:"varint,1,opt,name=append_position,json=appendPosition,proto3" json:"append_position,omitempty"` +} + +func (x *AppendObjectOutput) Reset() { + *x = AppendObjectOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AppendObjectOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AppendObjectOutput) ProtoMessage() {} + +func (x *AppendObjectOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AppendObjectOutput.ProtoReflect.Descriptor instead. +func (*AppendObjectOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{68} +} + +func (x *AppendObjectOutput) GetAppendPosition() int64 { + if x != nil { + return x.AppendPosition + } + return 0 +} + +// ListPartsInput +type ListPartsInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of oss store. + StoreName string `protobuf:"bytes,1,opt,name=store_name,json=storeName,proto3" json:"store_name,omitempty"` + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // The account ID of the expected bucket owner + ExpectedBucketOwner string `protobuf:"bytes,4,opt,name=expected_bucket_owner,json=expectedBucketOwner,proto3" json:"expected_bucket_owner,omitempty"` + // Sets the maximum number of parts to return + MaxParts int64 `protobuf:"varint,5,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"` + // Specifies the part after which listing should begin. Only parts with higher part + // numbers will be listed. + PartNumberMarker int64 `protobuf:"varint,6,opt,name=part_number_marker,json=partNumberMarker,proto3" json:"part_number_marker,omitempty"` + // Confirms that the requester knows that they will be charged for the request. + RequestPayer string `protobuf:"bytes,7,opt,name=request_payer,json=requestPayer,proto3" json:"request_payer,omitempty"` + // Upload ID identifying the multipart upload whose parts are being listed. + UploadId string `protobuf:"bytes,8,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` +} + +func (x *ListPartsInput) Reset() { + *x = ListPartsInput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPartsInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPartsInput) ProtoMessage() {} + +func (x *ListPartsInput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPartsInput.ProtoReflect.Descriptor instead. +func (*ListPartsInput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{69} +} + +func (x *ListPartsInput) GetStoreName() string { + if x != nil { + return x.StoreName + } + return "" +} + +func (x *ListPartsInput) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *ListPartsInput) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ListPartsInput) GetExpectedBucketOwner() string { + if x != nil { + return x.ExpectedBucketOwner + } + return "" +} + +func (x *ListPartsInput) GetMaxParts() int64 { + if x != nil { + return x.MaxParts + } + return 0 +} + +func (x *ListPartsInput) GetPartNumberMarker() int64 { + if x != nil { + return x.PartNumberMarker + } + return 0 +} + +func (x *ListPartsInput) GetRequestPayer() string { + if x != nil { + return x.RequestPayer + } + return "" +} + +func (x *ListPartsInput) GetUploadId() string { + if x != nil { + return x.UploadId + } + return "" +} + +// Part +type Part struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Part Etag + Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"` + // Last modified time + LastModified int64 `protobuf:"varint,2,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` + // Part number + PartNumber int64 `protobuf:"varint,3,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` + // Part size + Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` +} + +func (x *Part) Reset() { + *x = Part{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Part) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Part) ProtoMessage() {} + +func (x *Part) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Part.ProtoReflect.Descriptor instead. +func (*Part) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{70} +} + +func (x *Part) GetEtag() string { + if x != nil { + return x.Etag + } + return "" +} + +func (x *Part) GetLastModified() int64 { + if x != nil { + return x.LastModified + } + return 0 +} + +func (x *Part) GetPartNumber() int64 { + if x != nil { + return x.PartNumber + } + return 0 +} + +func (x *Part) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +// ListPartsOutput +type ListPartsOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The bucket name containing the object + // This member is required + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Name of the object key. + // This member is required. + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // Upload ID identifying the multipart upload whose parts are being listed. + UploadId string `protobuf:"bytes,3,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` + // When a list is truncated, this element specifies the last part in the list, as + // well as the value to use for the part-number-marker request parameter in a + // subsequent request. + NextPartNumberMarker string `protobuf:"bytes,4,opt,name=next_part_number_marker,json=nextPartNumberMarker,proto3" json:"next_part_number_marker,omitempty"` + // Maximum number of parts that were allowed in the response. + MaxParts int64 `protobuf:"varint,5,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"` + // Indicates whether the returned list of parts is truncated. A true value + // indicates that the list was truncated. A list can be truncated if the number of + // parts exceeds the limit returned in the MaxParts element. + IsTruncated bool `protobuf:"varint,6,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` + // Container for elements related to a particular part. A response can contain zero + // or more Part elements. + Parts []*Part `protobuf:"bytes,7,rep,name=parts,proto3" json:"parts,omitempty"` +} + +func (x *ListPartsOutput) Reset() { + *x = ListPartsOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_oss_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPartsOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPartsOutput) ProtoMessage() {} + +func (x *ListPartsOutput) ProtoReflect() protoreflect.Message { + mi := &file_oss_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPartsOutput.ProtoReflect.Descriptor instead. +func (*ListPartsOutput) Descriptor() ([]byte, []int) { + return file_oss_proto_rawDescGZIP(), []int{71} +} + +func (x *ListPartsOutput) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *ListPartsOutput) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ListPartsOutput) GetUploadId() string { + if x != nil { + return x.UploadId + } + return "" +} + +func (x *ListPartsOutput) GetNextPartNumberMarker() string { + if x != nil { + return x.NextPartNumberMarker + } + return "" +} + +func (x *ListPartsOutput) GetMaxParts() int64 { + if x != nil { + return x.MaxParts + } + return 0 +} + +func (x *ListPartsOutput) GetIsTruncated() bool { + if x != nil { + return x.IsTruncated + } + return false +} + +func (x *ListPartsOutput) GetParts() []*Part { + if x != nil { + return x.Parts + } + return nil +} + +var File_oss_proto protoreflect.FileDescriptor + +var file_oss_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x6f, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x07, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x66, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, @@ -6583,7 +7240,7 @@ var file_oss_proto_rawDesc = []byte{ 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf, 0x05, 0x0a, 0x0e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd4, 0x05, 0x0a, 0x0e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, @@ -6598,1191 +7255,1299 @@ var file_oss_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0d, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, - 0x51, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, - 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x54, - 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x1e, 0x0a, - 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, - 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x89, 0x02, 0x0a, - 0x15, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x4f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, - 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xeb, 0x01, 0x0a, 0x16, 0x50, 0x75, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x6f, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x65, - 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x22, - 0xf1, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x72, 0x0a, 0x0f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, - 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xd8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x22, 0xf6, - 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x04, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x6f, 0x0a, 0x0f, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x54, - 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x70, 0x79, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, - 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x16, - 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, - 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x22, 0x90, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, - 0x0a, 0x0b, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x70, - 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x12, 0x55, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3a, 0x0a, 0x0c, 0x54, - 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x10, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0d, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x5a, 0x0a, 0x12, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x52, 0x10, 0x63, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x66, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x07, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x69, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x71, 0x75, 0x69, 0x65, 0x74, 0x22, 0x43, 0x0a, 0x10, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xac, - 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x06, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x22, 0x9e, 0x01, - 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x18, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5a, - 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xaf, 0x02, 0x0a, 0x10, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x4b, 0x65, 0x79, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4b, 0x65, 0x79, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x22, 0xe2, 0x02, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, - 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, - 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, - 0x65, 0x78, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x22, 0x3a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc5, 0x01, - 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, - 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x6e, - 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x33, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x27, - 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x17, 0x50, 0x75, 0x74, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x63, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x1d, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, + 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, + 0x51, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x3a, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbb, 0x01, 0x0a, + 0x0f, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, + 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, + 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x11, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x43, 0x0a, - 0x18, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x81, 0x01, + 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, - 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, + 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xeb, 0x01, + 0x0a, 0x16, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x6f, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x46, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x01, 0x0a, 0x18, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, + 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x6e, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, - 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, - 0x22, 0xf5, 0x0b, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, - 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, - 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x66, - 0x75, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, - 0x61, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x61, 0x63, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x72, 0x61, 0x6e, - 0x74, 0x52, 0x65, 0x61, 0x64, 0x41, 0x63, 0x70, 0x12, 0x26, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x6e, - 0x74, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x63, 0x70, - 0x12, 0x61, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x1d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x67, 0x61, 0x6c, 0x48, 0x6f, 0x6c, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x40, 0x0a, 0x1d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, - 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, 0x0a, 0x10, - 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, - 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, 0x35, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x73, 0x65, 0x5f, 0x6b, - 0x6d, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x73, 0x65, - 0x4b, 0x6d, 0x73, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x0a, 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, - 0x65, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x12, 0x5d, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, - 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x73, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, - 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x12, 0x3a, 0x0a, 0x19, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, - 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x22, 0xf1, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x72, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x03, 0x0a, 0x1b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x52, - 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, - 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, - 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, - 0x4d, 0x64, 0x35, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, 0x45, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x23, 0x0a, 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, - 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, - 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xde, 0x03, 0x0a, 0x0f, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, - 0x35, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x73, - 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, - 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, - 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x73, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x14, 0x73, - 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x6d, 0x64, 0x35, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, 0x35, 0x12, 0x1b, 0x0a, 0x09, - 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xbf, 0x02, 0x0a, 0x10, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2c, - 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x65, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, - 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, - 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, - 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, - 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, 0x35, - 0x12, 0x23, 0x0a, 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, - 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, - 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa9, 0x02, 0x0a, 0x13, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x0b, - 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, - 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x70, 0x79, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, - 0x72, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, - 0x61, 0x72, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x50, - 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, - 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x22, 0xba, 0x03, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, - 0x74, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x10, 0x63, 0x6f, 0x70, - 0x79, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x0e, 0x63, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x33, 0x0a, 0x16, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x34, 0x0a, - 0x16, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, - 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, - 0x79, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, - 0x65, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x44, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x65, 0x74, 0x61, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0x3f, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x52, 0x05, 0x70, 0x61, 0x72, - 0x74, 0x73, 0x22, 0xbe, 0x02, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, - 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x32, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, + 0x79, 0x65, 0x72, 0x22, 0xf6, 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x50, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x6f, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, + 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, + 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x70, + 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x65, + 0x79, 0x12, 0x33, 0x0a, 0x16, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x90, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x70, 0x79, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x0b, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x0a, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x07, + 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x55, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x3a, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x10, 0x43, 0x6f, 0x70, + 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, + 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x70, 0x79, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x5a, 0x0a, 0x12, 0x63, + 0x6f, 0x70, 0x79, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x63, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x46, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, + 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x69, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x71, 0x75, 0x69, 0x65, 0x74, 0x22, 0x43, + 0x0a, 0x10, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, + 0x65, 0x72, 0x22, 0x9e, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x18, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, + 0xaf, 0x02, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, + 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x5f, - 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x0f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x22, 0xe9, 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, - 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, - 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, - 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x73, 0x65, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0xda, 0x01, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, - 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x1a, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x64, 0x22, 0xcb, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, - 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1f, - 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x72, 0x22, 0x3e, 0x0a, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x33, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xe7, 0x03, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, - 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x69, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, - 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x15, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x28, - 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x07, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, - 0xc5, 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, - 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, - 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, - 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, - 0x6b, 0x65, 0x79, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4b, - 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1b, 0x0a, - 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x0d, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x65, - 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, - 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, - 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb5, 0x04, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, + 0x78, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, + 0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, + 0x72, 0x22, 0xe2, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, + 0x12, 0x3e, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x73, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, 0x72, 0x75, - 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x6b, 0x65, 0x79, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4b, 0x65, 0x79, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x16, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x65, - 0x78, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, + 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, + 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x04, 0x0a, - 0x0f, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, + 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x9b, + 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x22, 0x93, 0x01, 0x0a, + 0x17, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x41, 0x63, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x61, 0x63, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x6c, 0x61, 0x63, 0x69, + 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x69, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x0e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0xc6, + 0x02, 0x0a, 0x08, 0x43, 0x53, 0x56, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x41, 0x0a, 0x1d, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, + 0x69, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, + 0x0f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, + 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x45, 0x73, 0x63, + 0x61, 0x70, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x22, 0x8b, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, + 0x0a, 0x03, 0x63, 0x73, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x53, 0x56, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x52, 0x03, 0x63, 0x73, 0x76, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xe1, 0x01, 0x0a, 0x09, 0x43, 0x53, 0x56, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, + 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x65, + 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x45, 0x73, 0x63, 0x61, + 0x70, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x71, + 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x29, + 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x22, 0x62, 0x0a, 0x13, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x37, 0x0a, 0x03, 0x63, 0x73, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x53, 0x56, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x52, 0x03, 0x63, 0x73, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x6a, 0x73, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xa0, 0x02, + 0x0a, 0x10, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x13, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x14, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x86, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x16, 0x67, 0x6c, 0x61, + 0x63, 0x69, 0x65, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x6c, 0x61, 0x63, 0x69, 0x65, 0x72, 0x4a, 0x6f, + 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x14, 0x67, 0x6c, 0x61, + 0x63, 0x69, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x11, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, + 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x32, - 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, - 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x66, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2a, 0x0a, - 0x11, 0x69, 0x66, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, - 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x66, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x66, 0x5f, - 0x6e, 0x6f, 0x6e, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x66, 0x4e, 0x6f, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2e, 0x0a, - 0x13, 0x69, 0x66, 0x5f, 0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, - 0x69, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x69, 0x66, 0x55, 0x6e, - 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x23, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x0f, 0x72, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, + 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6e, 0x0a, + 0x13, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x2e, 0x0a, + 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0xf5, 0x0b, + 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, + 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x67, 0x72, 0x61, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, + 0x24, 0x0a, 0x0e, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x63, + 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, + 0x61, 0x64, 0x41, 0x63, 0x70, 0x12, 0x26, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x67, 0x72, 0x61, 0x6e, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x63, 0x70, 0x12, 0x61, 0x0a, + 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x40, 0x0a, 0x1d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, + 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x67, 0x61, 0x6c, 0x48, 0x6f, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x1d, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x74, 0x61, + 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x19, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x52, + 0x65, 0x74, 0x61, 0x69, 0x6e, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, + 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0c, 0x20, + 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x73, 0x65, - 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, + 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, - 0x79, 0x4d, 0x64, 0x35, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x69, 0x0a, 0x0f, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x79, 0x4d, 0x64, 0x35, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, + 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x23, 0x0a, 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, 0x6d, + 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, + 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x12, 0x5d, 0x0a, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x1d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x12, 0x3a, 0x0a, 0x19, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x17, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, + 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x73, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x13, 0x49, 0x73, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x22, 0x95, 0x01, - 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, - 0x24, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, - 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, - 0x49, 0x6e, 0x53, 0x65, 0x63, 0x22, 0x2e, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x55, 0x72, 0x6c, 0x22, 0xbc, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x22, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x5f, - 0x62, 0x69, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x1c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x42, 0x69, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, - 0x12, 0x32, 0x0a, 0x15, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcf, 0x04, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x54, 0x61, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x03, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, + 0x0a, 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, + 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, + 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, + 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, + 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, 0x35, + 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x0a, + 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, + 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xde, 0x03, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x50, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1f, 0x0a, + 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x12, 0x32, + 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, + 0x61, 0x79, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, + 0x0a, 0x10, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, 0x35, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xbf, 0x02, 0x0a, 0x10, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x61, 0x72, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, + 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x27, 0x0a, + 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x2f, 0x0a, 0x14, + 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x73, 0x65, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, + 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, 0x6d, 0x73, 0x4b, 0x65, 0x79, + 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, + 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa9, 0x02, 0x0a, 0x13, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x0b, 0x63, 0x6f, 0x70, + 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, + 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, + 0x53, 0x69, 0x7a, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, + 0xba, 0x03, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, + 0x70, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x10, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, + 0x70, 0x79, 0x50, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x63, 0x6f, + 0x70, 0x79, 0x50, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x16, + 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, + 0x70, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x67, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, + 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, + 0x35, 0x12, 0x23, 0x0a, 0x0e, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, 0x6d, + 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, + 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x0d, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, + 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3f, + 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x22, + 0xbe, 0x02, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, + 0x5f, 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x0f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x22, 0xe9, 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x12, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, + 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x1e, + 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x73, 0x65, 0x5f, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, + 0x65, 0x79, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x65, 0x4b, + 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, + 0x69, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xda, 0x01, 0x0a, + 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, - 0x64, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, - 0x12, 0x4b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, - 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x65, - 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, - 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x72, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, + 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x1a, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x64, + 0x22, 0xcb, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, + 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, + 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, + 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x22, 0x3e, + 0x0a, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x81, + 0x02, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, + 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x64, 0x22, 0xe7, 0x03, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, + 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, + 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x12, 0x31, 0x0a, 0x15, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x07, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x33, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x52, 0x07, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0xc5, 0x02, 0x0a, + 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, - 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, - 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, - 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x64, 0x22, 0x74, 0x0a, 0x04, 0x50, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, - 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x78, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, - 0x61, 0x78, 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x61, - 0x72, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x52, 0x05, 0x70, 0x61, 0x72, - 0x74, 0x73, 0x32, 0xcd, 0x18, 0x0a, 0x14, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x09, 0x50, - 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x22, 0x00, 0x28, 0x01, 0x12, 0x68, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2b, - 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x6f, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4b, 0x65, 0x79, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x72, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, + 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, + 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x37, + 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, + 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x1b, 0x0a, 0x09, + 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0xb5, 0x04, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2e, - 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, - 0x12, 0x69, 0x0a, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, - 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x70, + 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x65, 0x78, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x12, 0x45, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x33, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x04, 0x0a, 0x0f, 0x48, 0x65, + 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x08, 0x69, 0x66, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x69, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x66, + 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x66, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x6e, + 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, + 0x66, 0x4e, 0x6f, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x66, + 0x5f, 0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x69, 0x66, 0x55, 0x6e, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, + 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x65, 0x72, + 0x12, 0x34, 0x0a, 0x16, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x14, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x41, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, + 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x73, 0x73, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x64, + 0x35, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x69, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x40, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x13, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x45, 0x78, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x0c, 0x53, + 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x24, 0x0a, 0x0e, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x53, + 0x65, 0x63, 0x22, 0x2e, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, + 0x72, 0x6c, 0x22, 0xbc, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x6e, + 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x22, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x69, 0x74, + 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x1c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x49, 0x6e, 0x42, 0x69, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x12, 0x32, 0x0a, + 0x15, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0xcf, 0x04, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, + 0x63, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, + 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, + 0x64, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x4d, 0x64, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, + 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x74, + 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x4b, 0x0a, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2f, 0x2e, 0x73, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x70, 0x70, + 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x9a, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, + 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, + 0x2c, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x61, 0x72, + 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, + 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, + 0x74, 0x0a, 0x04, 0x50, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, + 0x12, 0x35, 0x0a, 0x17, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x50, + 0x61, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, 0x72, + 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x32, + 0xcd, 0x18, 0x0a, 0x14, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x09, 0x50, 0x75, 0x74, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, + 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, + 0x28, 0x01, 0x12, 0x68, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6f, 0x0a, 0x0c, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, - 0x6c, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2c, - 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2d, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x69, 0x0a, - 0x0a, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x2e, 0x73, 0x70, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x69, 0x0a, + 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0d, 0x49, 0x73, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, - 0x78, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2f, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, - 0x78, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x10, - 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x12, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, - 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x12, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x35, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, - 0x12, 0x7b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x81, 0x01, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x41, 0x63, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, - 0x00, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0a, 0x48, 0x65, + 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x34, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0d, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x33, 0x2e, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x73, 0x33, 0x2e, 0x49, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x10, 0x50, 0x75, 0x74, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x36, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x37, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, - 0x12, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2c, 0x2e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x50, 0x61, 0x72, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x28, 0x01, 0x12, - 0x75, 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, - 0x79, 0x12, 0x2f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x1a, 0x30, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x38, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, - 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x39, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x41, 0x62, - 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x35, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x35, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x66, 0x0a, - 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, - 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x1a, 0x32, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x34, + 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x35, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x7b, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x12, 0x31, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, + 0x6c, 0x12, 0x33, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, + 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x73, + 0x2e, 0x73, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, + 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x81, + 0x01, 0x0a, 0x12, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x41, 0x63, 0x6c, 0x12, 0x33, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x34, 0x2e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x36, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x1a, 0x34, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x07, 0x53, 0x69, 0x67, - 0x6e, 0x55, 0x52, 0x4c, 0x12, 0x28, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x37, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x33, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x29, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, + 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, + 0x6b, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x12, 0x2b, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, + 0x72, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x28, 0x01, 0x12, 0x75, 0x0a, 0x0e, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x12, 0x2f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x53, 0x69, 0x67, 0x6e, - 0x55, 0x52, 0x4c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x20, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6e, - 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x39, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x39, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, + 0x30, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x38, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x39, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x35, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x0c, 0x41, - 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x73, 0x70, + 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, + 0x12, 0x87, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x35, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x1a, 0x36, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x09, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x34, + 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x52, + 0x4c, 0x12, 0x28, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x28, 0x01, 0x12, 0x72, - 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, - 0x2f, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x22, 0x00, 0x42, 0x5f, 0x0a, 0x1a, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x52, 0x4c, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x39, 0x2e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x39, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, - 0x42, 0x12, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x2d, 0x6d, 0x6f, 0x73, 0x6e, 0x2e, 0x69, 0x6f, 0x2f, 0x6c, 0x61, - 0x79, 0x6f, 0x74, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, - 0x3b, 0x73, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x65, + 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x28, 0x01, 0x12, 0x72, 0x0a, 0x0d, 0x52, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2e, 0x2e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x2f, 0x2e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x00, 0x42, + 0x5f, 0x0a, 0x1a, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x33, 0x42, 0x12, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x5a, 0x2d, 0x6d, 0x6f, 0x73, 0x6e, 0x2e, 0x69, 0x6f, 0x2f, 0x6c, 0x61, 0x79, 0x6f, 0x74, + 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x33, 0x3b, 0x73, 0x33, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7797,7 +8562,7 @@ func file_oss_proto_rawDescGZIP() []byte { return file_oss_proto_rawDescData } -var file_oss_proto_msgTypes = make([]protoimpl.MessageInfo, 78) +var file_oss_proto_msgTypes = make([]protoimpl.MessageInfo, 86) var file_oss_proto_goTypes = []interface{}{ (*GetObjectInput)(nil), // 0: spec.proto.extension.v1.s3.GetObjectInput (*GetObjectOutput)(nil), // 1: spec.proto.extension.v1.s3.GetObjectOutput @@ -7828,69 +8593,77 @@ var file_oss_proto_goTypes = []interface{}{ (*GetObjectCannedAclOutput)(nil), // 26: spec.proto.extension.v1.s3.GetObjectCannedAclOutput (*PutObjectCannedAclInput)(nil), // 27: spec.proto.extension.v1.s3.PutObjectCannedAclInput (*PutObjectCannedAclOutput)(nil), // 28: spec.proto.extension.v1.s3.PutObjectCannedAclOutput - (*RestoreObjectInput)(nil), // 29: spec.proto.extension.v1.s3.RestoreObjectInput - (*RestoreObjectOutput)(nil), // 30: spec.proto.extension.v1.s3.RestoreObjectOutput - (*CreateMultipartUploadInput)(nil), // 31: spec.proto.extension.v1.s3.CreateMultipartUploadInput - (*CreateMultipartUploadOutput)(nil), // 32: spec.proto.extension.v1.s3.CreateMultipartUploadOutput - (*UploadPartInput)(nil), // 33: spec.proto.extension.v1.s3.UploadPartInput - (*UploadPartOutput)(nil), // 34: spec.proto.extension.v1.s3.UploadPartOutput - (*UploadPartCopyInput)(nil), // 35: spec.proto.extension.v1.s3.UploadPartCopyInput - (*CopyPartResult)(nil), // 36: spec.proto.extension.v1.s3.CopyPartResult - (*UploadPartCopyOutput)(nil), // 37: spec.proto.extension.v1.s3.UploadPartCopyOutput - (*CompletedPart)(nil), // 38: spec.proto.extension.v1.s3.CompletedPart - (*CompletedMultipartUpload)(nil), // 39: spec.proto.extension.v1.s3.CompletedMultipartUpload - (*CompleteMultipartUploadInput)(nil), // 40: spec.proto.extension.v1.s3.CompleteMultipartUploadInput - (*CompleteMultipartUploadOutput)(nil), // 41: spec.proto.extension.v1.s3.CompleteMultipartUploadOutput - (*AbortMultipartUploadInput)(nil), // 42: spec.proto.extension.v1.s3.AbortMultipartUploadInput - (*AbortMultipartUploadOutput)(nil), // 43: spec.proto.extension.v1.s3.AbortMultipartUploadOutput - (*ListMultipartUploadsInput)(nil), // 44: spec.proto.extension.v1.s3.ListMultipartUploadsInput - (*Initiator)(nil), // 45: spec.proto.extension.v1.s3.Initiator - (*MultipartUpload)(nil), // 46: spec.proto.extension.v1.s3.MultipartUpload - (*ListMultipartUploadsOutput)(nil), // 47: spec.proto.extension.v1.s3.ListMultipartUploadsOutput - (*ListObjectVersionsInput)(nil), // 48: spec.proto.extension.v1.s3.ListObjectVersionsInput - (*DeleteMarkerEntry)(nil), // 49: spec.proto.extension.v1.s3.DeleteMarkerEntry - (*ObjectVersion)(nil), // 50: spec.proto.extension.v1.s3.ObjectVersion - (*ListObjectVersionsOutput)(nil), // 51: spec.proto.extension.v1.s3.ListObjectVersionsOutput - (*HeadObjectInput)(nil), // 52: spec.proto.extension.v1.s3.HeadObjectInput - (*HeadObjectOutput)(nil), // 53: spec.proto.extension.v1.s3.HeadObjectOutput - (*IsObjectExistInput)(nil), // 54: spec.proto.extension.v1.s3.IsObjectExistInput - (*IsObjectExistOutput)(nil), // 55: spec.proto.extension.v1.s3.IsObjectExistOutput - (*SignURLInput)(nil), // 56: spec.proto.extension.v1.s3.SignURLInput - (*SignURLOutput)(nil), // 57: spec.proto.extension.v1.s3.SignURLOutput - (*UpdateBandwidthRateLimitInput)(nil), // 58: spec.proto.extension.v1.s3.UpdateBandwidthRateLimitInput - (*AppendObjectInput)(nil), // 59: spec.proto.extension.v1.s3.AppendObjectInput - (*AppendObjectOutput)(nil), // 60: spec.proto.extension.v1.s3.AppendObjectOutput - (*ListPartsInput)(nil), // 61: spec.proto.extension.v1.s3.ListPartsInput - (*Part)(nil), // 62: spec.proto.extension.v1.s3.Part - (*ListPartsOutput)(nil), // 63: spec.proto.extension.v1.s3.ListPartsOutput - nil, // 64: spec.proto.extension.v1.s3.GetObjectOutput.MetadataEntry - nil, // 65: spec.proto.extension.v1.s3.PutObjectInput.MetaEntry - nil, // 66: spec.proto.extension.v1.s3.PutObjectInput.TaggingEntry - nil, // 67: spec.proto.extension.v1.s3.PutObjectTaggingInput.TagsEntry - nil, // 68: spec.proto.extension.v1.s3.PutObjectTaggingOutput.ResultMetadataEntry - nil, // 69: spec.proto.extension.v1.s3.DeleteObjectTaggingOutput.ResultMetadataEntry - nil, // 70: spec.proto.extension.v1.s3.GetObjectTaggingOutput.TagsEntry - nil, // 71: spec.proto.extension.v1.s3.GetObjectTaggingOutput.ResultMetadataEntry - nil, // 72: spec.proto.extension.v1.s3.CopyObjectInput.TaggingEntry - nil, // 73: spec.proto.extension.v1.s3.CopyObjectInput.MetadataEntry - nil, // 74: spec.proto.extension.v1.s3.CreateMultipartUploadInput.MetaDataEntry - nil, // 75: spec.proto.extension.v1.s3.CreateMultipartUploadInput.TaggingEntry - nil, // 76: spec.proto.extension.v1.s3.HeadObjectOutput.ResultMetadataEntry - nil, // 77: spec.proto.extension.v1.s3.AppendObjectInput.TagsEntry - (*emptypb.Empty)(nil), // 78: google.protobuf.Empty + (*GlacierJobParameters)(nil), // 29: spec.proto.extension.v1.s3.GlacierJobParameters + (*OutputLocation)(nil), // 30: spec.proto.extension.v1.s3.OutputLocation + (*CSVInput)(nil), // 31: spec.proto.extension.v1.s3.CSVInput + (*InputSerialization)(nil), // 32: spec.proto.extension.v1.s3.InputSerialization + (*CSVOutput)(nil), // 33: spec.proto.extension.v1.s3.CSVOutput + (*OutputSerialization)(nil), // 34: spec.proto.extension.v1.s3.OutputSerialization + (*SelectParameters)(nil), // 35: spec.proto.extension.v1.s3.SelectParameters + (*RestoreRequest)(nil), // 36: spec.proto.extension.v1.s3.RestoreRequest + (*RestoreObjectInput)(nil), // 37: spec.proto.extension.v1.s3.RestoreObjectInput + (*RestoreObjectOutput)(nil), // 38: spec.proto.extension.v1.s3.RestoreObjectOutput + (*CreateMultipartUploadInput)(nil), // 39: spec.proto.extension.v1.s3.CreateMultipartUploadInput + (*CreateMultipartUploadOutput)(nil), // 40: spec.proto.extension.v1.s3.CreateMultipartUploadOutput + (*UploadPartInput)(nil), // 41: spec.proto.extension.v1.s3.UploadPartInput + (*UploadPartOutput)(nil), // 42: spec.proto.extension.v1.s3.UploadPartOutput + (*UploadPartCopyInput)(nil), // 43: spec.proto.extension.v1.s3.UploadPartCopyInput + (*CopyPartResult)(nil), // 44: spec.proto.extension.v1.s3.CopyPartResult + (*UploadPartCopyOutput)(nil), // 45: spec.proto.extension.v1.s3.UploadPartCopyOutput + (*CompletedPart)(nil), // 46: spec.proto.extension.v1.s3.CompletedPart + (*CompletedMultipartUpload)(nil), // 47: spec.proto.extension.v1.s3.CompletedMultipartUpload + (*CompleteMultipartUploadInput)(nil), // 48: spec.proto.extension.v1.s3.CompleteMultipartUploadInput + (*CompleteMultipartUploadOutput)(nil), // 49: spec.proto.extension.v1.s3.CompleteMultipartUploadOutput + (*AbortMultipartUploadInput)(nil), // 50: spec.proto.extension.v1.s3.AbortMultipartUploadInput + (*AbortMultipartUploadOutput)(nil), // 51: spec.proto.extension.v1.s3.AbortMultipartUploadOutput + (*ListMultipartUploadsInput)(nil), // 52: spec.proto.extension.v1.s3.ListMultipartUploadsInput + (*Initiator)(nil), // 53: spec.proto.extension.v1.s3.Initiator + (*MultipartUpload)(nil), // 54: spec.proto.extension.v1.s3.MultipartUpload + (*ListMultipartUploadsOutput)(nil), // 55: spec.proto.extension.v1.s3.ListMultipartUploadsOutput + (*ListObjectVersionsInput)(nil), // 56: spec.proto.extension.v1.s3.ListObjectVersionsInput + (*DeleteMarkerEntry)(nil), // 57: spec.proto.extension.v1.s3.DeleteMarkerEntry + (*ObjectVersion)(nil), // 58: spec.proto.extension.v1.s3.ObjectVersion + (*ListObjectVersionsOutput)(nil), // 59: spec.proto.extension.v1.s3.ListObjectVersionsOutput + (*HeadObjectInput)(nil), // 60: spec.proto.extension.v1.s3.HeadObjectInput + (*HeadObjectOutput)(nil), // 61: spec.proto.extension.v1.s3.HeadObjectOutput + (*IsObjectExistInput)(nil), // 62: spec.proto.extension.v1.s3.IsObjectExistInput + (*IsObjectExistOutput)(nil), // 63: spec.proto.extension.v1.s3.IsObjectExistOutput + (*SignURLInput)(nil), // 64: spec.proto.extension.v1.s3.SignURLInput + (*SignURLOutput)(nil), // 65: spec.proto.extension.v1.s3.SignURLOutput + (*UpdateBandwidthRateLimitInput)(nil), // 66: spec.proto.extension.v1.s3.UpdateBandwidthRateLimitInput + (*AppendObjectInput)(nil), // 67: spec.proto.extension.v1.s3.AppendObjectInput + (*AppendObjectOutput)(nil), // 68: spec.proto.extension.v1.s3.AppendObjectOutput + (*ListPartsInput)(nil), // 69: spec.proto.extension.v1.s3.ListPartsInput + (*Part)(nil), // 70: spec.proto.extension.v1.s3.Part + (*ListPartsOutput)(nil), // 71: spec.proto.extension.v1.s3.ListPartsOutput + nil, // 72: spec.proto.extension.v1.s3.GetObjectOutput.MetadataEntry + nil, // 73: spec.proto.extension.v1.s3.PutObjectInput.MetaEntry + nil, // 74: spec.proto.extension.v1.s3.PutObjectInput.TaggingEntry + nil, // 75: spec.proto.extension.v1.s3.PutObjectTaggingInput.TagsEntry + nil, // 76: spec.proto.extension.v1.s3.PutObjectTaggingOutput.ResultMetadataEntry + nil, // 77: spec.proto.extension.v1.s3.DeleteObjectTaggingOutput.ResultMetadataEntry + nil, // 78: spec.proto.extension.v1.s3.GetObjectTaggingOutput.TagsEntry + nil, // 79: spec.proto.extension.v1.s3.GetObjectTaggingOutput.ResultMetadataEntry + nil, // 80: spec.proto.extension.v1.s3.CopyObjectInput.TaggingEntry + nil, // 81: spec.proto.extension.v1.s3.CopyObjectInput.MetadataEntry + nil, // 82: spec.proto.extension.v1.s3.CreateMultipartUploadInput.MetaDataEntry + nil, // 83: spec.proto.extension.v1.s3.CreateMultipartUploadInput.TaggingEntry + nil, // 84: spec.proto.extension.v1.s3.HeadObjectOutput.ResultMetadataEntry + nil, // 85: spec.proto.extension.v1.s3.AppendObjectInput.TagsEntry + (*emptypb.Empty)(nil), // 86: google.protobuf.Empty } var file_oss_proto_depIdxs = []int32{ - 64, // 0: spec.proto.extension.v1.s3.GetObjectOutput.metadata:type_name -> spec.proto.extension.v1.s3.GetObjectOutput.MetadataEntry - 65, // 1: spec.proto.extension.v1.s3.PutObjectInput.meta:type_name -> spec.proto.extension.v1.s3.PutObjectInput.MetaEntry - 66, // 2: spec.proto.extension.v1.s3.PutObjectInput.tagging:type_name -> spec.proto.extension.v1.s3.PutObjectInput.TaggingEntry - 67, // 3: spec.proto.extension.v1.s3.PutObjectTaggingInput.tags:type_name -> spec.proto.extension.v1.s3.PutObjectTaggingInput.TagsEntry - 68, // 4: spec.proto.extension.v1.s3.PutObjectTaggingOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.PutObjectTaggingOutput.ResultMetadataEntry - 69, // 5: spec.proto.extension.v1.s3.DeleteObjectTaggingOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.DeleteObjectTaggingOutput.ResultMetadataEntry - 70, // 6: spec.proto.extension.v1.s3.GetObjectTaggingOutput.tags:type_name -> spec.proto.extension.v1.s3.GetObjectTaggingOutput.TagsEntry - 71, // 7: spec.proto.extension.v1.s3.GetObjectTaggingOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.GetObjectTaggingOutput.ResultMetadataEntry + 72, // 0: spec.proto.extension.v1.s3.GetObjectOutput.metadata:type_name -> spec.proto.extension.v1.s3.GetObjectOutput.MetadataEntry + 73, // 1: spec.proto.extension.v1.s3.PutObjectInput.meta:type_name -> spec.proto.extension.v1.s3.PutObjectInput.MetaEntry + 74, // 2: spec.proto.extension.v1.s3.PutObjectInput.tagging:type_name -> spec.proto.extension.v1.s3.PutObjectInput.TaggingEntry + 75, // 3: spec.proto.extension.v1.s3.PutObjectTaggingInput.tags:type_name -> spec.proto.extension.v1.s3.PutObjectTaggingInput.TagsEntry + 76, // 4: spec.proto.extension.v1.s3.PutObjectTaggingOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.PutObjectTaggingOutput.ResultMetadataEntry + 77, // 5: spec.proto.extension.v1.s3.DeleteObjectTaggingOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.DeleteObjectTaggingOutput.ResultMetadataEntry + 78, // 6: spec.proto.extension.v1.s3.GetObjectTaggingOutput.tags:type_name -> spec.proto.extension.v1.s3.GetObjectTaggingOutput.TagsEntry + 79, // 7: spec.proto.extension.v1.s3.GetObjectTaggingOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.GetObjectTaggingOutput.ResultMetadataEntry 12, // 8: spec.proto.extension.v1.s3.CopyObjectInput.copy_source:type_name -> spec.proto.extension.v1.s3.CopySource - 72, // 9: spec.proto.extension.v1.s3.CopyObjectInput.tagging:type_name -> spec.proto.extension.v1.s3.CopyObjectInput.TaggingEntry - 73, // 10: spec.proto.extension.v1.s3.CopyObjectInput.metadata:type_name -> spec.proto.extension.v1.s3.CopyObjectInput.MetadataEntry + 80, // 9: spec.proto.extension.v1.s3.CopyObjectInput.tagging:type_name -> spec.proto.extension.v1.s3.CopyObjectInput.TaggingEntry + 81, // 10: spec.proto.extension.v1.s3.CopyObjectInput.metadata:type_name -> spec.proto.extension.v1.s3.CopyObjectInput.MetadataEntry 14, // 11: spec.proto.extension.v1.s3.CopyObjectOutput.copy_object_result:type_name -> spec.proto.extension.v1.s3.CopyObjectResult 17, // 12: spec.proto.extension.v1.s3.Delete.objects:type_name -> spec.proto.extension.v1.s3.ObjectIdentifier 16, // 13: spec.proto.extension.v1.s3.DeleteObjectsInput.delete:type_name -> spec.proto.extension.v1.s3.Delete @@ -7898,79 +8671,87 @@ var file_oss_proto_depIdxs = []int32{ 24, // 15: spec.proto.extension.v1.s3.ListObjectsOutput.contents:type_name -> spec.proto.extension.v1.s3.Object 23, // 16: spec.proto.extension.v1.s3.Object.owner:type_name -> spec.proto.extension.v1.s3.Owner 23, // 17: spec.proto.extension.v1.s3.GetObjectCannedAclOutput.owner:type_name -> spec.proto.extension.v1.s3.Owner - 74, // 18: spec.proto.extension.v1.s3.CreateMultipartUploadInput.meta_data:type_name -> spec.proto.extension.v1.s3.CreateMultipartUploadInput.MetaDataEntry - 75, // 19: spec.proto.extension.v1.s3.CreateMultipartUploadInput.tagging:type_name -> spec.proto.extension.v1.s3.CreateMultipartUploadInput.TaggingEntry - 12, // 20: spec.proto.extension.v1.s3.UploadPartCopyInput.copy_source:type_name -> spec.proto.extension.v1.s3.CopySource - 36, // 21: spec.proto.extension.v1.s3.UploadPartCopyOutput.copy_part_result:type_name -> spec.proto.extension.v1.s3.CopyPartResult - 38, // 22: spec.proto.extension.v1.s3.CompletedMultipartUpload.parts:type_name -> spec.proto.extension.v1.s3.CompletedPart - 39, // 23: spec.proto.extension.v1.s3.CompleteMultipartUploadInput.multipart_upload:type_name -> spec.proto.extension.v1.s3.CompletedMultipartUpload - 45, // 24: spec.proto.extension.v1.s3.MultipartUpload.initiator:type_name -> spec.proto.extension.v1.s3.Initiator - 23, // 25: spec.proto.extension.v1.s3.MultipartUpload.owner:type_name -> spec.proto.extension.v1.s3.Owner - 46, // 26: spec.proto.extension.v1.s3.ListMultipartUploadsOutput.uploads:type_name -> spec.proto.extension.v1.s3.MultipartUpload - 23, // 27: spec.proto.extension.v1.s3.DeleteMarkerEntry.owner:type_name -> spec.proto.extension.v1.s3.Owner - 23, // 28: spec.proto.extension.v1.s3.ObjectVersion.owner:type_name -> spec.proto.extension.v1.s3.Owner - 49, // 29: spec.proto.extension.v1.s3.ListObjectVersionsOutput.delete_markers:type_name -> spec.proto.extension.v1.s3.DeleteMarkerEntry - 50, // 30: spec.proto.extension.v1.s3.ListObjectVersionsOutput.versions:type_name -> spec.proto.extension.v1.s3.ObjectVersion - 76, // 31: spec.proto.extension.v1.s3.HeadObjectOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.HeadObjectOutput.ResultMetadataEntry - 77, // 32: spec.proto.extension.v1.s3.AppendObjectInput.tags:type_name -> spec.proto.extension.v1.s3.AppendObjectInput.TagsEntry - 62, // 33: spec.proto.extension.v1.s3.ListPartsOutput.parts:type_name -> spec.proto.extension.v1.s3.Part - 2, // 34: spec.proto.extension.v1.s3.ObjectStorageService.PutObject:input_type -> spec.proto.extension.v1.s3.PutObjectInput - 0, // 35: spec.proto.extension.v1.s3.ObjectStorageService.GetObject:input_type -> spec.proto.extension.v1.s3.GetObjectInput - 4, // 36: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObject:input_type -> spec.proto.extension.v1.s3.DeleteObjectInput - 13, // 37: spec.proto.extension.v1.s3.ObjectStorageService.CopyObject:input_type -> spec.proto.extension.v1.s3.CopyObjectInput - 18, // 38: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjects:input_type -> spec.proto.extension.v1.s3.DeleteObjectsInput - 21, // 39: spec.proto.extension.v1.s3.ObjectStorageService.ListObjects:input_type -> spec.proto.extension.v1.s3.ListObjectsInput - 52, // 40: spec.proto.extension.v1.s3.ObjectStorageService.HeadObject:input_type -> spec.proto.extension.v1.s3.HeadObjectInput - 54, // 41: spec.proto.extension.v1.s3.ObjectStorageService.IsObjectExist:input_type -> spec.proto.extension.v1.s3.IsObjectExistInput - 6, // 42: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectTagging:input_type -> spec.proto.extension.v1.s3.PutObjectTaggingInput - 8, // 43: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjectTagging:input_type -> spec.proto.extension.v1.s3.DeleteObjectTaggingInput - 10, // 44: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectTagging:input_type -> spec.proto.extension.v1.s3.GetObjectTaggingInput - 25, // 45: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectCannedAcl:input_type -> spec.proto.extension.v1.s3.GetObjectCannedAclInput - 27, // 46: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectCannedAcl:input_type -> spec.proto.extension.v1.s3.PutObjectCannedAclInput - 31, // 47: spec.proto.extension.v1.s3.ObjectStorageService.CreateMultipartUpload:input_type -> spec.proto.extension.v1.s3.CreateMultipartUploadInput - 33, // 48: spec.proto.extension.v1.s3.ObjectStorageService.UploadPart:input_type -> spec.proto.extension.v1.s3.UploadPartInput - 35, // 49: spec.proto.extension.v1.s3.ObjectStorageService.UploadPartCopy:input_type -> spec.proto.extension.v1.s3.UploadPartCopyInput - 40, // 50: spec.proto.extension.v1.s3.ObjectStorageService.CompleteMultipartUpload:input_type -> spec.proto.extension.v1.s3.CompleteMultipartUploadInput - 42, // 51: spec.proto.extension.v1.s3.ObjectStorageService.AbortMultipartUpload:input_type -> spec.proto.extension.v1.s3.AbortMultipartUploadInput - 44, // 52: spec.proto.extension.v1.s3.ObjectStorageService.ListMultipartUploads:input_type -> spec.proto.extension.v1.s3.ListMultipartUploadsInput - 61, // 53: spec.proto.extension.v1.s3.ObjectStorageService.ListParts:input_type -> spec.proto.extension.v1.s3.ListPartsInput - 48, // 54: spec.proto.extension.v1.s3.ObjectStorageService.ListObjectVersions:input_type -> spec.proto.extension.v1.s3.ListObjectVersionsInput - 56, // 55: spec.proto.extension.v1.s3.ObjectStorageService.SignURL:input_type -> spec.proto.extension.v1.s3.SignURLInput - 58, // 56: spec.proto.extension.v1.s3.ObjectStorageService.UpdateDownloadBandwidthRateLimit:input_type -> spec.proto.extension.v1.s3.UpdateBandwidthRateLimitInput - 58, // 57: spec.proto.extension.v1.s3.ObjectStorageService.UpdateUploadBandwidthRateLimit:input_type -> spec.proto.extension.v1.s3.UpdateBandwidthRateLimitInput - 59, // 58: spec.proto.extension.v1.s3.ObjectStorageService.AppendObject:input_type -> spec.proto.extension.v1.s3.AppendObjectInput - 29, // 59: spec.proto.extension.v1.s3.ObjectStorageService.RestoreObject:input_type -> spec.proto.extension.v1.s3.RestoreObjectInput - 3, // 60: spec.proto.extension.v1.s3.ObjectStorageService.PutObject:output_type -> spec.proto.extension.v1.s3.PutObjectOutput - 1, // 61: spec.proto.extension.v1.s3.ObjectStorageService.GetObject:output_type -> spec.proto.extension.v1.s3.GetObjectOutput - 5, // 62: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObject:output_type -> spec.proto.extension.v1.s3.DeleteObjectOutput - 15, // 63: spec.proto.extension.v1.s3.ObjectStorageService.CopyObject:output_type -> spec.proto.extension.v1.s3.CopyObjectOutput - 20, // 64: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjects:output_type -> spec.proto.extension.v1.s3.DeleteObjectsOutput - 22, // 65: spec.proto.extension.v1.s3.ObjectStorageService.ListObjects:output_type -> spec.proto.extension.v1.s3.ListObjectsOutput - 53, // 66: spec.proto.extension.v1.s3.ObjectStorageService.HeadObject:output_type -> spec.proto.extension.v1.s3.HeadObjectOutput - 55, // 67: spec.proto.extension.v1.s3.ObjectStorageService.IsObjectExist:output_type -> spec.proto.extension.v1.s3.IsObjectExistOutput - 7, // 68: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectTagging:output_type -> spec.proto.extension.v1.s3.PutObjectTaggingOutput - 9, // 69: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjectTagging:output_type -> spec.proto.extension.v1.s3.DeleteObjectTaggingOutput - 11, // 70: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectTagging:output_type -> spec.proto.extension.v1.s3.GetObjectTaggingOutput - 26, // 71: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectCannedAcl:output_type -> spec.proto.extension.v1.s3.GetObjectCannedAclOutput - 28, // 72: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectCannedAcl:output_type -> spec.proto.extension.v1.s3.PutObjectCannedAclOutput - 32, // 73: spec.proto.extension.v1.s3.ObjectStorageService.CreateMultipartUpload:output_type -> spec.proto.extension.v1.s3.CreateMultipartUploadOutput - 34, // 74: spec.proto.extension.v1.s3.ObjectStorageService.UploadPart:output_type -> spec.proto.extension.v1.s3.UploadPartOutput - 37, // 75: spec.proto.extension.v1.s3.ObjectStorageService.UploadPartCopy:output_type -> spec.proto.extension.v1.s3.UploadPartCopyOutput - 41, // 76: spec.proto.extension.v1.s3.ObjectStorageService.CompleteMultipartUpload:output_type -> spec.proto.extension.v1.s3.CompleteMultipartUploadOutput - 43, // 77: spec.proto.extension.v1.s3.ObjectStorageService.AbortMultipartUpload:output_type -> spec.proto.extension.v1.s3.AbortMultipartUploadOutput - 47, // 78: spec.proto.extension.v1.s3.ObjectStorageService.ListMultipartUploads:output_type -> spec.proto.extension.v1.s3.ListMultipartUploadsOutput - 63, // 79: spec.proto.extension.v1.s3.ObjectStorageService.ListParts:output_type -> spec.proto.extension.v1.s3.ListPartsOutput - 51, // 80: spec.proto.extension.v1.s3.ObjectStorageService.ListObjectVersions:output_type -> spec.proto.extension.v1.s3.ListObjectVersionsOutput - 57, // 81: spec.proto.extension.v1.s3.ObjectStorageService.SignURL:output_type -> spec.proto.extension.v1.s3.SignURLOutput - 78, // 82: spec.proto.extension.v1.s3.ObjectStorageService.UpdateDownloadBandwidthRateLimit:output_type -> google.protobuf.Empty - 78, // 83: spec.proto.extension.v1.s3.ObjectStorageService.UpdateUploadBandwidthRateLimit:output_type -> google.protobuf.Empty - 60, // 84: spec.proto.extension.v1.s3.ObjectStorageService.AppendObject:output_type -> spec.proto.extension.v1.s3.AppendObjectOutput - 30, // 85: spec.proto.extension.v1.s3.ObjectStorageService.RestoreObject:output_type -> spec.proto.extension.v1.s3.RestoreObjectOutput - 60, // [60:86] is the sub-list for method output_type - 34, // [34:60] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name + 31, // 18: spec.proto.extension.v1.s3.InputSerialization.csv:type_name -> spec.proto.extension.v1.s3.CSVInput + 33, // 19: spec.proto.extension.v1.s3.OutputSerialization.csv:type_name -> spec.proto.extension.v1.s3.CSVOutput + 32, // 20: spec.proto.extension.v1.s3.SelectParameters.input_serialization:type_name -> spec.proto.extension.v1.s3.InputSerialization + 34, // 21: spec.proto.extension.v1.s3.SelectParameters.output_serialization:type_name -> spec.proto.extension.v1.s3.OutputSerialization + 29, // 22: spec.proto.extension.v1.s3.RestoreRequest.glacier_job_parameters:type_name -> spec.proto.extension.v1.s3.GlacierJobParameters + 30, // 23: spec.proto.extension.v1.s3.RestoreRequest.output_location:type_name -> spec.proto.extension.v1.s3.OutputLocation + 35, // 24: spec.proto.extension.v1.s3.RestoreRequest.select_parameters:type_name -> spec.proto.extension.v1.s3.SelectParameters + 36, // 25: spec.proto.extension.v1.s3.RestoreObjectInput.restore_request:type_name -> spec.proto.extension.v1.s3.RestoreRequest + 82, // 26: spec.proto.extension.v1.s3.CreateMultipartUploadInput.meta_data:type_name -> spec.proto.extension.v1.s3.CreateMultipartUploadInput.MetaDataEntry + 83, // 27: spec.proto.extension.v1.s3.CreateMultipartUploadInput.tagging:type_name -> spec.proto.extension.v1.s3.CreateMultipartUploadInput.TaggingEntry + 12, // 28: spec.proto.extension.v1.s3.UploadPartCopyInput.copy_source:type_name -> spec.proto.extension.v1.s3.CopySource + 44, // 29: spec.proto.extension.v1.s3.UploadPartCopyOutput.copy_part_result:type_name -> spec.proto.extension.v1.s3.CopyPartResult + 46, // 30: spec.proto.extension.v1.s3.CompletedMultipartUpload.parts:type_name -> spec.proto.extension.v1.s3.CompletedPart + 47, // 31: spec.proto.extension.v1.s3.CompleteMultipartUploadInput.multipart_upload:type_name -> spec.proto.extension.v1.s3.CompletedMultipartUpload + 53, // 32: spec.proto.extension.v1.s3.MultipartUpload.initiator:type_name -> spec.proto.extension.v1.s3.Initiator + 23, // 33: spec.proto.extension.v1.s3.MultipartUpload.owner:type_name -> spec.proto.extension.v1.s3.Owner + 54, // 34: spec.proto.extension.v1.s3.ListMultipartUploadsOutput.uploads:type_name -> spec.proto.extension.v1.s3.MultipartUpload + 23, // 35: spec.proto.extension.v1.s3.DeleteMarkerEntry.owner:type_name -> spec.proto.extension.v1.s3.Owner + 23, // 36: spec.proto.extension.v1.s3.ObjectVersion.owner:type_name -> spec.proto.extension.v1.s3.Owner + 57, // 37: spec.proto.extension.v1.s3.ListObjectVersionsOutput.delete_markers:type_name -> spec.proto.extension.v1.s3.DeleteMarkerEntry + 58, // 38: spec.proto.extension.v1.s3.ListObjectVersionsOutput.versions:type_name -> spec.proto.extension.v1.s3.ObjectVersion + 84, // 39: spec.proto.extension.v1.s3.HeadObjectOutput.result_metadata:type_name -> spec.proto.extension.v1.s3.HeadObjectOutput.ResultMetadataEntry + 85, // 40: spec.proto.extension.v1.s3.AppendObjectInput.tags:type_name -> spec.proto.extension.v1.s3.AppendObjectInput.TagsEntry + 70, // 41: spec.proto.extension.v1.s3.ListPartsOutput.parts:type_name -> spec.proto.extension.v1.s3.Part + 2, // 42: spec.proto.extension.v1.s3.ObjectStorageService.PutObject:input_type -> spec.proto.extension.v1.s3.PutObjectInput + 0, // 43: spec.proto.extension.v1.s3.ObjectStorageService.GetObject:input_type -> spec.proto.extension.v1.s3.GetObjectInput + 4, // 44: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObject:input_type -> spec.proto.extension.v1.s3.DeleteObjectInput + 13, // 45: spec.proto.extension.v1.s3.ObjectStorageService.CopyObject:input_type -> spec.proto.extension.v1.s3.CopyObjectInput + 18, // 46: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjects:input_type -> spec.proto.extension.v1.s3.DeleteObjectsInput + 21, // 47: spec.proto.extension.v1.s3.ObjectStorageService.ListObjects:input_type -> spec.proto.extension.v1.s3.ListObjectsInput + 60, // 48: spec.proto.extension.v1.s3.ObjectStorageService.HeadObject:input_type -> spec.proto.extension.v1.s3.HeadObjectInput + 62, // 49: spec.proto.extension.v1.s3.ObjectStorageService.IsObjectExist:input_type -> spec.proto.extension.v1.s3.IsObjectExistInput + 6, // 50: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectTagging:input_type -> spec.proto.extension.v1.s3.PutObjectTaggingInput + 8, // 51: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjectTagging:input_type -> spec.proto.extension.v1.s3.DeleteObjectTaggingInput + 10, // 52: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectTagging:input_type -> spec.proto.extension.v1.s3.GetObjectTaggingInput + 25, // 53: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectCannedAcl:input_type -> spec.proto.extension.v1.s3.GetObjectCannedAclInput + 27, // 54: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectCannedAcl:input_type -> spec.proto.extension.v1.s3.PutObjectCannedAclInput + 39, // 55: spec.proto.extension.v1.s3.ObjectStorageService.CreateMultipartUpload:input_type -> spec.proto.extension.v1.s3.CreateMultipartUploadInput + 41, // 56: spec.proto.extension.v1.s3.ObjectStorageService.UploadPart:input_type -> spec.proto.extension.v1.s3.UploadPartInput + 43, // 57: spec.proto.extension.v1.s3.ObjectStorageService.UploadPartCopy:input_type -> spec.proto.extension.v1.s3.UploadPartCopyInput + 48, // 58: spec.proto.extension.v1.s3.ObjectStorageService.CompleteMultipartUpload:input_type -> spec.proto.extension.v1.s3.CompleteMultipartUploadInput + 50, // 59: spec.proto.extension.v1.s3.ObjectStorageService.AbortMultipartUpload:input_type -> spec.proto.extension.v1.s3.AbortMultipartUploadInput + 52, // 60: spec.proto.extension.v1.s3.ObjectStorageService.ListMultipartUploads:input_type -> spec.proto.extension.v1.s3.ListMultipartUploadsInput + 69, // 61: spec.proto.extension.v1.s3.ObjectStorageService.ListParts:input_type -> spec.proto.extension.v1.s3.ListPartsInput + 56, // 62: spec.proto.extension.v1.s3.ObjectStorageService.ListObjectVersions:input_type -> spec.proto.extension.v1.s3.ListObjectVersionsInput + 64, // 63: spec.proto.extension.v1.s3.ObjectStorageService.SignURL:input_type -> spec.proto.extension.v1.s3.SignURLInput + 66, // 64: spec.proto.extension.v1.s3.ObjectStorageService.UpdateDownloadBandwidthRateLimit:input_type -> spec.proto.extension.v1.s3.UpdateBandwidthRateLimitInput + 66, // 65: spec.proto.extension.v1.s3.ObjectStorageService.UpdateUploadBandwidthRateLimit:input_type -> spec.proto.extension.v1.s3.UpdateBandwidthRateLimitInput + 67, // 66: spec.proto.extension.v1.s3.ObjectStorageService.AppendObject:input_type -> spec.proto.extension.v1.s3.AppendObjectInput + 37, // 67: spec.proto.extension.v1.s3.ObjectStorageService.RestoreObject:input_type -> spec.proto.extension.v1.s3.RestoreObjectInput + 3, // 68: spec.proto.extension.v1.s3.ObjectStorageService.PutObject:output_type -> spec.proto.extension.v1.s3.PutObjectOutput + 1, // 69: spec.proto.extension.v1.s3.ObjectStorageService.GetObject:output_type -> spec.proto.extension.v1.s3.GetObjectOutput + 5, // 70: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObject:output_type -> spec.proto.extension.v1.s3.DeleteObjectOutput + 15, // 71: spec.proto.extension.v1.s3.ObjectStorageService.CopyObject:output_type -> spec.proto.extension.v1.s3.CopyObjectOutput + 20, // 72: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjects:output_type -> spec.proto.extension.v1.s3.DeleteObjectsOutput + 22, // 73: spec.proto.extension.v1.s3.ObjectStorageService.ListObjects:output_type -> spec.proto.extension.v1.s3.ListObjectsOutput + 61, // 74: spec.proto.extension.v1.s3.ObjectStorageService.HeadObject:output_type -> spec.proto.extension.v1.s3.HeadObjectOutput + 63, // 75: spec.proto.extension.v1.s3.ObjectStorageService.IsObjectExist:output_type -> spec.proto.extension.v1.s3.IsObjectExistOutput + 7, // 76: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectTagging:output_type -> spec.proto.extension.v1.s3.PutObjectTaggingOutput + 9, // 77: spec.proto.extension.v1.s3.ObjectStorageService.DeleteObjectTagging:output_type -> spec.proto.extension.v1.s3.DeleteObjectTaggingOutput + 11, // 78: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectTagging:output_type -> spec.proto.extension.v1.s3.GetObjectTaggingOutput + 26, // 79: spec.proto.extension.v1.s3.ObjectStorageService.GetObjectCannedAcl:output_type -> spec.proto.extension.v1.s3.GetObjectCannedAclOutput + 28, // 80: spec.proto.extension.v1.s3.ObjectStorageService.PutObjectCannedAcl:output_type -> spec.proto.extension.v1.s3.PutObjectCannedAclOutput + 40, // 81: spec.proto.extension.v1.s3.ObjectStorageService.CreateMultipartUpload:output_type -> spec.proto.extension.v1.s3.CreateMultipartUploadOutput + 42, // 82: spec.proto.extension.v1.s3.ObjectStorageService.UploadPart:output_type -> spec.proto.extension.v1.s3.UploadPartOutput + 45, // 83: spec.proto.extension.v1.s3.ObjectStorageService.UploadPartCopy:output_type -> spec.proto.extension.v1.s3.UploadPartCopyOutput + 49, // 84: spec.proto.extension.v1.s3.ObjectStorageService.CompleteMultipartUpload:output_type -> spec.proto.extension.v1.s3.CompleteMultipartUploadOutput + 51, // 85: spec.proto.extension.v1.s3.ObjectStorageService.AbortMultipartUpload:output_type -> spec.proto.extension.v1.s3.AbortMultipartUploadOutput + 55, // 86: spec.proto.extension.v1.s3.ObjectStorageService.ListMultipartUploads:output_type -> spec.proto.extension.v1.s3.ListMultipartUploadsOutput + 71, // 87: spec.proto.extension.v1.s3.ObjectStorageService.ListParts:output_type -> spec.proto.extension.v1.s3.ListPartsOutput + 59, // 88: spec.proto.extension.v1.s3.ObjectStorageService.ListObjectVersions:output_type -> spec.proto.extension.v1.s3.ListObjectVersionsOutput + 65, // 89: spec.proto.extension.v1.s3.ObjectStorageService.SignURL:output_type -> spec.proto.extension.v1.s3.SignURLOutput + 86, // 90: spec.proto.extension.v1.s3.ObjectStorageService.UpdateDownloadBandwidthRateLimit:output_type -> google.protobuf.Empty + 86, // 91: spec.proto.extension.v1.s3.ObjectStorageService.UpdateUploadBandwidthRateLimit:output_type -> google.protobuf.Empty + 68, // 92: spec.proto.extension.v1.s3.ObjectStorageService.AppendObject:output_type -> spec.proto.extension.v1.s3.AppendObjectOutput + 38, // 93: spec.proto.extension.v1.s3.ObjectStorageService.RestoreObject:output_type -> spec.proto.extension.v1.s3.RestoreObjectOutput + 68, // [68:94] is the sub-list for method output_type + 42, // [42:68] is the sub-list for method input_type + 42, // [42:42] is the sub-list for extension type_name + 42, // [42:42] is the sub-list for extension extendee + 0, // [0:42] is the sub-list for field type_name } func init() { file_oss_proto_init() } @@ -8328,7 +9109,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreObjectInput); i { + switch v := v.(*GlacierJobParameters); i { case 0: return &v.state case 1: @@ -8340,7 +9121,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreObjectOutput); i { + switch v := v.(*OutputLocation); i { case 0: return &v.state case 1: @@ -8352,7 +9133,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMultipartUploadInput); i { + switch v := v.(*CSVInput); i { case 0: return &v.state case 1: @@ -8364,7 +9145,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMultipartUploadOutput); i { + switch v := v.(*InputSerialization); i { case 0: return &v.state case 1: @@ -8376,7 +9157,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadPartInput); i { + switch v := v.(*CSVOutput); i { case 0: return &v.state case 1: @@ -8388,7 +9169,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadPartOutput); i { + switch v := v.(*OutputSerialization); i { case 0: return &v.state case 1: @@ -8400,7 +9181,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadPartCopyInput); i { + switch v := v.(*SelectParameters); i { case 0: return &v.state case 1: @@ -8412,7 +9193,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyPartResult); i { + switch v := v.(*RestoreRequest); i { case 0: return &v.state case 1: @@ -8424,7 +9205,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadPartCopyOutput); i { + switch v := v.(*RestoreObjectInput); i { case 0: return &v.state case 1: @@ -8436,7 +9217,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompletedPart); i { + switch v := v.(*RestoreObjectOutput); i { case 0: return &v.state case 1: @@ -8448,7 +9229,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompletedMultipartUpload); i { + switch v := v.(*CreateMultipartUploadInput); i { case 0: return &v.state case 1: @@ -8460,7 +9241,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompleteMultipartUploadInput); i { + switch v := v.(*CreateMultipartUploadOutput); i { case 0: return &v.state case 1: @@ -8472,7 +9253,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CompleteMultipartUploadOutput); i { + switch v := v.(*UploadPartInput); i { case 0: return &v.state case 1: @@ -8484,7 +9265,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortMultipartUploadInput); i { + switch v := v.(*UploadPartOutput); i { case 0: return &v.state case 1: @@ -8496,7 +9277,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortMultipartUploadOutput); i { + switch v := v.(*UploadPartCopyInput); i { case 0: return &v.state case 1: @@ -8508,7 +9289,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMultipartUploadsInput); i { + switch v := v.(*CopyPartResult); i { case 0: return &v.state case 1: @@ -8520,7 +9301,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Initiator); i { + switch v := v.(*UploadPartCopyOutput); i { case 0: return &v.state case 1: @@ -8532,7 +9313,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultipartUpload); i { + switch v := v.(*CompletedPart); i { case 0: return &v.state case 1: @@ -8544,7 +9325,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMultipartUploadsOutput); i { + switch v := v.(*CompletedMultipartUpload); i { case 0: return &v.state case 1: @@ -8556,7 +9337,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListObjectVersionsInput); i { + switch v := v.(*CompleteMultipartUploadInput); i { case 0: return &v.state case 1: @@ -8568,7 +9349,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMarkerEntry); i { + switch v := v.(*CompleteMultipartUploadOutput); i { case 0: return &v.state case 1: @@ -8580,7 +9361,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectVersion); i { + switch v := v.(*AbortMultipartUploadInput); i { case 0: return &v.state case 1: @@ -8592,7 +9373,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListObjectVersionsOutput); i { + switch v := v.(*AbortMultipartUploadOutput); i { case 0: return &v.state case 1: @@ -8604,7 +9385,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeadObjectInput); i { + switch v := v.(*ListMultipartUploadsInput); i { case 0: return &v.state case 1: @@ -8616,7 +9397,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeadObjectOutput); i { + switch v := v.(*Initiator); i { case 0: return &v.state case 1: @@ -8628,7 +9409,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsObjectExistInput); i { + switch v := v.(*MultipartUpload); i { case 0: return &v.state case 1: @@ -8640,7 +9421,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsObjectExistOutput); i { + switch v := v.(*ListMultipartUploadsOutput); i { case 0: return &v.state case 1: @@ -8652,7 +9433,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignURLInput); i { + switch v := v.(*ListObjectVersionsInput); i { case 0: return &v.state case 1: @@ -8664,7 +9445,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignURLOutput); i { + switch v := v.(*DeleteMarkerEntry); i { case 0: return &v.state case 1: @@ -8676,7 +9457,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateBandwidthRateLimitInput); i { + switch v := v.(*ObjectVersion); i { case 0: return &v.state case 1: @@ -8688,7 +9469,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppendObjectInput); i { + switch v := v.(*ListObjectVersionsOutput); i { case 0: return &v.state case 1: @@ -8700,7 +9481,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppendObjectOutput); i { + switch v := v.(*HeadObjectInput); i { case 0: return &v.state case 1: @@ -8712,7 +9493,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPartsInput); i { + switch v := v.(*HeadObjectOutput); i { case 0: return &v.state case 1: @@ -8724,7 +9505,7 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Part); i { + switch v := v.(*IsObjectExistInput); i { case 0: return &v.state case 1: @@ -8736,6 +9517,102 @@ func file_oss_proto_init() { } } file_oss_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsObjectExistOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignURLInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignURLOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateBandwidthRateLimitInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppendObjectInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppendObjectOutput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPartsInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Part); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oss_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartsOutput); i { case 0: return &v.state @@ -8754,7 +9631,7 @@ func file_oss_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_oss_proto_rawDesc, NumEnums: 0, - NumMessages: 78, + NumMessages: 86, NumExtensions: 0, NumServices: 1, },