proto/go/gitalypb/repository.pb.go (5,620 lines of code) (raw):

// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.5 // protoc v6.30.2 // source: repository.proto package gitalypb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // ReferenceBackend denotes the type of backend used to store references. type RepositoryInfoResponse_ReferencesInfo_ReferenceBackend int32 const ( // REFERENCE_BACKEND_UNSPECIFIED is the default value for a reference backend if there // is an error during detection. This state should ideally never occur, and if set // it indicates that something has gone wrong. RepositoryInfoResponse_ReferencesInfo_REFERENCE_BACKEND_UNSPECIFIED RepositoryInfoResponse_ReferencesInfo_ReferenceBackend = 0 // REFERENCE_BACKEND_FILES is the traditional backend built using files/directories. RepositoryInfoResponse_ReferencesInfo_REFERENCE_BACKEND_FILES RepositoryInfoResponse_ReferencesInfo_ReferenceBackend = 1 // REFERENCE_BACKEND_REFTABLE is the new backend using customized binary file format. RepositoryInfoResponse_ReferencesInfo_REFERENCE_BACKEND_REFTABLE RepositoryInfoResponse_ReferencesInfo_ReferenceBackend = 2 ) // Enum value maps for RepositoryInfoResponse_ReferencesInfo_ReferenceBackend. var ( RepositoryInfoResponse_ReferencesInfo_ReferenceBackend_name = map[int32]string{ 0: "REFERENCE_BACKEND_UNSPECIFIED", 1: "REFERENCE_BACKEND_FILES", 2: "REFERENCE_BACKEND_REFTABLE", } RepositoryInfoResponse_ReferencesInfo_ReferenceBackend_value = map[string]int32{ "REFERENCE_BACKEND_UNSPECIFIED": 0, "REFERENCE_BACKEND_FILES": 1, "REFERENCE_BACKEND_REFTABLE": 2, } ) func (x RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) Enum() *RepositoryInfoResponse_ReferencesInfo_ReferenceBackend { p := new(RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) *p = x return p } func (x RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) Descriptor() protoreflect.EnumDescriptor { return file_repository_proto_enumTypes[0].Descriptor() } func (RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) Type() protoreflect.EnumType { return &file_repository_proto_enumTypes[0] } func (x RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RepositoryInfoResponse_ReferencesInfo_ReferenceBackend.Descriptor instead. func (RepositoryInfoResponse_ReferencesInfo_ReferenceBackend) EnumDescriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 0, 0} } // Format is the format which the archive should be packaged in. type GetArchiveRequest_Format int32 const ( // ZIP GetArchiveRequest_ZIP GetArchiveRequest_Format = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // TAR GetArchiveRequest_TAR GetArchiveRequest_Format = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // TAR_GZ GetArchiveRequest_TAR_GZ GetArchiveRequest_Format = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // TAR_BZ2 GetArchiveRequest_TAR_BZ2 GetArchiveRequest_Format = 3 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ) // Enum value maps for GetArchiveRequest_Format. var ( GetArchiveRequest_Format_name = map[int32]string{ 0: "ZIP", 1: "TAR", 2: "TAR_GZ", 3: "TAR_BZ2", } GetArchiveRequest_Format_value = map[string]int32{ "ZIP": 0, "TAR": 1, "TAR_GZ": 2, "TAR_BZ2": 3, } ) func (x GetArchiveRequest_Format) Enum() *GetArchiveRequest_Format { p := new(GetArchiveRequest_Format) *p = x return p } func (x GetArchiveRequest_Format) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GetArchiveRequest_Format) Descriptor() protoreflect.EnumDescriptor { return file_repository_proto_enumTypes[1].Descriptor() } func (GetArchiveRequest_Format) Type() protoreflect.EnumType { return &file_repository_proto_enumTypes[1] } func (x GetArchiveRequest_Format) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GetArchiveRequest_Format.Descriptor instead. func (GetArchiveRequest_Format) EnumDescriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{16, 0} } // Operation is the change that occurred on the file. Consult the man pages // for git-diff(1) for additional detail on the semantics of each operation. type GetRawChangesResponse_RawChange_Operation int32 const ( // UNKNOWN GetRawChangesResponse_RawChange_UNKNOWN GetRawChangesResponse_RawChange_Operation = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // ADDED GetRawChangesResponse_RawChange_ADDED GetRawChangesResponse_RawChange_Operation = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // COPIED GetRawChangesResponse_RawChange_COPIED GetRawChangesResponse_RawChange_Operation = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // DELETED GetRawChangesResponse_RawChange_DELETED GetRawChangesResponse_RawChange_Operation = 3 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // MODIFIED GetRawChangesResponse_RawChange_MODIFIED GetRawChangesResponse_RawChange_Operation = 4 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // RENAMED GetRawChangesResponse_RawChange_RENAMED GetRawChangesResponse_RawChange_Operation = 5 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // TYPE_CHANGED GetRawChangesResponse_RawChange_TYPE_CHANGED GetRawChangesResponse_RawChange_Operation = 6 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ) // Enum value maps for GetRawChangesResponse_RawChange_Operation. var ( GetRawChangesResponse_RawChange_Operation_name = map[int32]string{ 0: "UNKNOWN", 1: "ADDED", 2: "COPIED", 3: "DELETED", 4: "MODIFIED", 5: "RENAMED", 6: "TYPE_CHANGED", } GetRawChangesResponse_RawChange_Operation_value = map[string]int32{ "UNKNOWN": 0, "ADDED": 1, "COPIED": 2, "DELETED": 3, "MODIFIED": 4, "RENAMED": 5, "TYPE_CHANGED": 6, } ) func (x GetRawChangesResponse_RawChange_Operation) Enum() *GetRawChangesResponse_RawChange_Operation { p := new(GetRawChangesResponse_RawChange_Operation) *p = x return p } func (x GetRawChangesResponse_RawChange_Operation) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GetRawChangesResponse_RawChange_Operation) Descriptor() protoreflect.EnumDescriptor { return file_repository_proto_enumTypes[2].Descriptor() } func (GetRawChangesResponse_RawChange_Operation) Type() protoreflect.EnumType { return &file_repository_proto_enumTypes[2] } func (x GetRawChangesResponse_RawChange_Operation) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GetRawChangesResponse_RawChange_Operation.Descriptor instead. func (GetRawChangesResponse_RawChange_Operation) EnumDescriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{62, 0, 0} } // Strategy determines how the repository shall be optimized. type OptimizeRepositoryRequest_Strategy int32 const ( // STRATEGY_UNSPECIFIED indicates that the strategy has not been explicitly set by the // caller. The default will be STRATEGY_HEURISTICAL in that case. OptimizeRepositoryRequest_STRATEGY_UNSPECIFIED OptimizeRepositoryRequest_Strategy = 0 // STRATEGY_HEURISTICAL performs heuristical optimizations in the repository. The server will // decide on a set of heuristics which parts need optimization and which ones don't to avoid // performing unnecessary optimization tasks. OptimizeRepositoryRequest_STRATEGY_HEURISTICAL OptimizeRepositoryRequest_Strategy = 1 // STRATEGY_EAGER performs eager optimizations in the repository. The server will optimize all // data structures regardless of whether they are well-optimized already. OptimizeRepositoryRequest_STRATEGY_EAGER OptimizeRepositoryRequest_Strategy = 2 // STRATEGY_OFFLOADING selectively moves repository objects to secondary storage. OptimizeRepositoryRequest_STRATEGY_OFFLOADING OptimizeRepositoryRequest_Strategy = 3 ) // Enum value maps for OptimizeRepositoryRequest_Strategy. var ( OptimizeRepositoryRequest_Strategy_name = map[int32]string{ 0: "STRATEGY_UNSPECIFIED", 1: "STRATEGY_HEURISTICAL", 2: "STRATEGY_EAGER", 3: "STRATEGY_OFFLOADING", } OptimizeRepositoryRequest_Strategy_value = map[string]int32{ "STRATEGY_UNSPECIFIED": 0, "STRATEGY_HEURISTICAL": 1, "STRATEGY_EAGER": 2, "STRATEGY_OFFLOADING": 3, } ) func (x OptimizeRepositoryRequest_Strategy) Enum() *OptimizeRepositoryRequest_Strategy { p := new(OptimizeRepositoryRequest_Strategy) *p = x return p } func (x OptimizeRepositoryRequest_Strategy) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (OptimizeRepositoryRequest_Strategy) Descriptor() protoreflect.EnumDescriptor { return file_repository_proto_enumTypes[3].Descriptor() } func (OptimizeRepositoryRequest_Strategy) Type() protoreflect.EnumType { return &file_repository_proto_enumTypes[3] } func (x OptimizeRepositoryRequest_Strategy) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use OptimizeRepositoryRequest_Strategy.Descriptor instead. func (OptimizeRepositoryRequest_Strategy) EnumDescriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{74, 0} } // RepositoryExistsRequest is a request for the RepositoryExists RPC. type RepositoryExistsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to check. The storage_name and relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryExistsRequest) Reset() { *x = RepositoryExistsRequest{} mi := &file_repository_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryExistsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryExistsRequest) ProtoMessage() {} func (x *RepositoryExistsRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryExistsRequest.ProtoReflect.Descriptor instead. func (*RepositoryExistsRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{0} } func (x *RepositoryExistsRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // RepositoryExistsResponse is a response for the RepositoryExists RPC. type RepositoryExistsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // exists indicates whether the repo exists. Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryExistsResponse) Reset() { *x = RepositoryExistsResponse{} mi := &file_repository_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryExistsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryExistsResponse) ProtoMessage() {} func (x *RepositoryExistsResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryExistsResponse.ProtoReflect.Descriptor instead. func (*RepositoryExistsResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{1} } func (x *RepositoryExistsResponse) GetExists() bool { if x != nil { return x.Exists } return false } // RepositorySizeRequest is a request for the RepositorySize RPC. type RepositorySizeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository for which to determine the repository size. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositorySizeRequest) Reset() { *x = RepositorySizeRequest{} mi := &file_repository_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositorySizeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositorySizeRequest) ProtoMessage() {} func (x *RepositorySizeRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositorySizeRequest.ProtoReflect.Descriptor instead. func (*RepositorySizeRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{2} } func (x *RepositorySizeRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // RepositorySizeResponse is a response for the RepositorySize RPC. type RepositorySizeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // size is the complete size of the on-disk repository in kilobytes. This will include all data // structures and is similar to `du --summarize --bytes $REPO_PATH`. Size int64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositorySizeResponse) Reset() { *x = RepositorySizeResponse{} mi := &file_repository_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositorySizeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositorySizeResponse) ProtoMessage() {} func (x *RepositorySizeResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositorySizeResponse.ProtoReflect.Descriptor instead. func (*RepositorySizeResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{3} } func (x *RepositorySizeResponse) GetSize() int64 { if x != nil { return x.Size } return 0 } // RepositoryInfoRequest is a request for the RepositoryInfo RPC. type RepositoryInfoRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to query for information. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoRequest) Reset() { *x = RepositoryInfoRequest{} mi := &file_repository_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoRequest) ProtoMessage() {} func (x *RepositoryInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoRequest.ProtoReflect.Descriptor instead. func (*RepositoryInfoRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{4} } func (x *RepositoryInfoRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // RepositoryInfoResponse is a response for the RepositoryInfo RPC. type RepositoryInfoResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // size is the total size of all files part of the repository. It does not include the size of // directories. Size uint64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` // references contains information about references. References *RepositoryInfoResponse_ReferencesInfo `protobuf:"bytes,2,opt,name=references,proto3" json:"references,omitempty"` // objects contains information about objects. Objects *RepositoryInfoResponse_ObjectsInfo `protobuf:"bytes,3,opt,name=objects,proto3" json:"objects,omitempty"` // commit_graph contains information about the repository's commit-graphs. CommitGraph *RepositoryInfoResponse_CommitGraphInfo `protobuf:"bytes,4,opt,name=commit_graph,json=commitGraph,proto3" json:"commit_graph,omitempty"` // bitmap contains information about the bitmap, if any exists. Bitmap *RepositoryInfoResponse_BitmapInfo `protobuf:"bytes,5,opt,name=bitmap,proto3" json:"bitmap,omitempty"` // multi_pack_index contains information about the multi-pack-index, if any exists. MultiPackIndex *RepositoryInfoResponse_MultiPackIndexInfo `protobuf:"bytes,6,opt,name=multi_pack_index,json=multiPackIndex,proto3" json:"multi_pack_index,omitempty"` // multi_pack_index_bitmap contains information about the bitmap for the multi-pack-index. MultiPackIndexBitmap *RepositoryInfoResponse_BitmapInfo `protobuf:"bytes,7,opt,name=multi_pack_index_bitmap,json=multiPackIndexBitmap,proto3" json:"multi_pack_index_bitmap,omitempty"` // alternates contains information about alternate object directories. Alternates *RepositoryInfoResponse_AlternatesInfo `protobuf:"bytes,8,opt,name=alternates,proto3" json:"alternates,omitempty"` // is_object_pool determines whether the repository is an object pool. IsObjectPool bool `protobuf:"varint,9,opt,name=is_object_pool,json=isObjectPool,proto3" json:"is_object_pool,omitempty"` // last_full_repack indicates the last date at which a full repack has been // performed. LastFullRepack *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_full_repack,json=lastFullRepack,proto3" json:"last_full_repack,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse) Reset() { *x = RepositoryInfoResponse{} mi := &file_repository_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse) ProtoMessage() {} func (x *RepositoryInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5} } func (x *RepositoryInfoResponse) GetSize() uint64 { if x != nil { return x.Size } return 0 } func (x *RepositoryInfoResponse) GetReferences() *RepositoryInfoResponse_ReferencesInfo { if x != nil { return x.References } return nil } func (x *RepositoryInfoResponse) GetObjects() *RepositoryInfoResponse_ObjectsInfo { if x != nil { return x.Objects } return nil } func (x *RepositoryInfoResponse) GetCommitGraph() *RepositoryInfoResponse_CommitGraphInfo { if x != nil { return x.CommitGraph } return nil } func (x *RepositoryInfoResponse) GetBitmap() *RepositoryInfoResponse_BitmapInfo { if x != nil { return x.Bitmap } return nil } func (x *RepositoryInfoResponse) GetMultiPackIndex() *RepositoryInfoResponse_MultiPackIndexInfo { if x != nil { return x.MultiPackIndex } return nil } func (x *RepositoryInfoResponse) GetMultiPackIndexBitmap() *RepositoryInfoResponse_BitmapInfo { if x != nil { return x.MultiPackIndexBitmap } return nil } func (x *RepositoryInfoResponse) GetAlternates() *RepositoryInfoResponse_AlternatesInfo { if x != nil { return x.Alternates } return nil } func (x *RepositoryInfoResponse) GetIsObjectPool() bool { if x != nil { return x.IsObjectPool } return false } func (x *RepositoryInfoResponse) GetLastFullRepack() *timestamppb.Timestamp { if x != nil { return x.LastFullRepack } return nil } // ObjectsSizeRequest is a request for the ObjectsSize RPC. The RPC is defined as a streaming RPC given that a client // may theoretically specify an unbounded number of revisions. Only the first request may have fields other than the // revisions set. type ObjectsSizeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository for which to determine the object size. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // revisions is the set of revisions that shall be used to compute the object size for. Supports normal revisions as // well as pseudo-revisions like `--not`, `--all`, `--branches[=pattern]`, `--tags[=pattern]` and `--glob=pattern`. // Please refer to the man pages gitrevisions(7) as well as git-rev-list(1) for more information. Revisions [][]byte `protobuf:"bytes,2,rep,name=revisions,proto3" json:"revisions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ObjectsSizeRequest) Reset() { *x = ObjectsSizeRequest{} mi := &file_repository_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ObjectsSizeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectsSizeRequest) ProtoMessage() {} func (x *ObjectsSizeRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ObjectsSizeRequest.ProtoReflect.Descriptor instead. func (*ObjectsSizeRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{6} } func (x *ObjectsSizeRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *ObjectsSizeRequest) GetRevisions() [][]byte { if x != nil { return x.Revisions } return nil } // ObjectsSizeResponse is a response for the ObjectsSize RPC. type ObjectsSizeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // size is the total size of all objects reachable via the given set of revisions. The size is // specified in bytes. Size uint64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ObjectsSizeResponse) Reset() { *x = ObjectsSizeResponse{} mi := &file_repository_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ObjectsSizeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectsSizeResponse) ProtoMessage() {} func (x *ObjectsSizeResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ObjectsSizeResponse.ProtoReflect.Descriptor instead. func (*ObjectsSizeResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{7} } func (x *ObjectsSizeResponse) GetSize() uint64 { if x != nil { return x.Size } return 0 } // ObjectFormatRequest is a request for the ObjectFormat RPC. type ObjectFormatRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository for which to determine the object format. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ObjectFormatRequest) Reset() { *x = ObjectFormatRequest{} mi := &file_repository_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ObjectFormatRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectFormatRequest) ProtoMessage() {} func (x *ObjectFormatRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ObjectFormatRequest.ProtoReflect.Descriptor instead. func (*ObjectFormatRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{8} } func (x *ObjectFormatRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // ObjectFormatResponse is a response for the ObjectFormat RPC. type ObjectFormatResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // format is the object format that the repository uses. Format ObjectFormat `protobuf:"varint,1,opt,name=format,proto3,enum=gitaly.ObjectFormat" json:"format,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ObjectFormatResponse) Reset() { *x = ObjectFormatResponse{} mi := &file_repository_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ObjectFormatResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectFormatResponse) ProtoMessage() {} func (x *ObjectFormatResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ObjectFormatResponse.ProtoReflect.Descriptor instead. func (*ObjectFormatResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{9} } func (x *ObjectFormatResponse) GetFormat() ObjectFormat { if x != nil { return x.Format } return ObjectFormat_OBJECT_FORMAT_UNSPECIFIED } // FetchBundleRequest is a request for the FetchBundle RPC. type FetchBundleRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository into which the reference shall be fetched. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // data is the bundle file stream. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // update_head will update HEAD if there is a HEAD reference listed in the bundle UpdateHead bool `protobuf:"varint,3,opt,name=update_head,json=updateHead,proto3" json:"update_head,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchBundleRequest) Reset() { *x = FetchBundleRequest{} mi := &file_repository_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchBundleRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchBundleRequest) ProtoMessage() {} func (x *FetchBundleRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FetchBundleRequest.ProtoReflect.Descriptor instead. func (*FetchBundleRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{10} } func (x *FetchBundleRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *FetchBundleRequest) GetData() []byte { if x != nil { return x.Data } return nil } func (x *FetchBundleRequest) GetUpdateHead() bool { if x != nil { return x.UpdateHead } return false } // FetchBundleResponse is a response for the FetchBundle RPC. type FetchBundleResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchBundleResponse) Reset() { *x = FetchBundleResponse{} mi := &file_repository_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchBundleResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchBundleResponse) ProtoMessage() {} func (x *FetchBundleResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FetchBundleResponse.ProtoReflect.Descriptor instead. func (*FetchBundleResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{11} } // FetchRemoteRequest is a request for the FetchRemote RPC. type FetchRemoteRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to fetch the remote into. The storage_name // and relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // force determines if references should be force-updated in case they have // diverged. Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` // no_tags determines whether tags should be fetched. NoTags bool `protobuf:"varint,4,opt,name=no_tags,json=noTags,proto3" json:"no_tags,omitempty"` // timeout specifies a timeout for the fetch. Timeout int32 `protobuf:"varint,5,opt,name=timeout,proto3" json:"timeout,omitempty"` // ssh_key is an optional SSH key to use for fetching the remote. SshKey string `protobuf:"bytes,6,opt,name=ssh_key,json=sshKey,proto3" json:"ssh_key,omitempty"` // known_hosts is the optional content of an SSH known-hosts file to use // for the SSH session. KnownHosts string `protobuf:"bytes,7,opt,name=known_hosts,json=knownHosts,proto3" json:"known_hosts,omitempty"` // no_prune will the fetch to not prune remote references which do not exist // in the remote repository anymore. NoPrune bool `protobuf:"varint,9,opt,name=no_prune,json=noPrune,proto3" json:"no_prune,omitempty"` // remote_params specifies the remote repository which should be fetched // from. RemoteParams *Remote `protobuf:"bytes,10,opt,name=remote_params,json=remoteParams,proto3" json:"remote_params,omitempty"` // check_tags_changed defines whether to check if any tags were modified, // returning the result in the tags_changed field of FetchRemoteResponse. CheckTagsChanged bool `protobuf:"varint,11,opt,name=check_tags_changed,json=checkTagsChanged,proto3" json:"check_tags_changed,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchRemoteRequest) Reset() { *x = FetchRemoteRequest{} mi := &file_repository_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchRemoteRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchRemoteRequest) ProtoMessage() {} func (x *FetchRemoteRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FetchRemoteRequest.ProtoReflect.Descriptor instead. func (*FetchRemoteRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{12} } func (x *FetchRemoteRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *FetchRemoteRequest) GetForce() bool { if x != nil { return x.Force } return false } func (x *FetchRemoteRequest) GetNoTags() bool { if x != nil { return x.NoTags } return false } func (x *FetchRemoteRequest) GetTimeout() int32 { if x != nil { return x.Timeout } return 0 } func (x *FetchRemoteRequest) GetSshKey() string { if x != nil { return x.SshKey } return "" } func (x *FetchRemoteRequest) GetKnownHosts() string { if x != nil { return x.KnownHosts } return "" } func (x *FetchRemoteRequest) GetNoPrune() bool { if x != nil { return x.NoPrune } return false } func (x *FetchRemoteRequest) GetRemoteParams() *Remote { if x != nil { return x.RemoteParams } return nil } func (x *FetchRemoteRequest) GetCheckTagsChanged() bool { if x != nil { return x.CheckTagsChanged } return false } // FetchRemoteResponse is a response for the FetchRemote RPC. type FetchRemoteResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // tags_changed is set based to true if tags were changed or cannot be determined // and false when no tags were change. TagsChanged bool `protobuf:"varint,1,opt,name=tags_changed,json=tagsChanged,proto3" json:"tags_changed,omitempty"` // repo_changed is set to true if the repo was changed. RepoChanged bool `protobuf:"varint,2,opt,name=repo_changed,json=repoChanged,proto3" json:"repo_changed,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchRemoteResponse) Reset() { *x = FetchRemoteResponse{} mi := &file_repository_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchRemoteResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchRemoteResponse) ProtoMessage() {} func (x *FetchRemoteResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FetchRemoteResponse.ProtoReflect.Descriptor instead. func (*FetchRemoteResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{13} } func (x *FetchRemoteResponse) GetTagsChanged() bool { if x != nil { return x.TagsChanged } return false } func (x *FetchRemoteResponse) GetRepoChanged() bool { if x != nil { return x.RepoChanged } return false } // CreateRepositoryRequest is a request for the CreateRepository RPC. type CreateRepositoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository represents the repo to create. The storage_name and relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // default_branch is the branch name to set as the default branch of the newly created // repository. Note, this will be treated as the branch name and not a // fully qualified reference. DefaultBranch []byte `protobuf:"bytes,2,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"` // object_format is the object format the repository should be created with. Note that this is // experimental and should not be used by callers yet. It is mostly intended for internal testing // purposes in Gitaly right now. ObjectFormat ObjectFormat `protobuf:"varint,3,opt,name=object_format,json=objectFormat,proto3,enum=gitaly.ObjectFormat" json:"object_format,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryRequest) Reset() { *x = CreateRepositoryRequest{} mi := &file_repository_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryRequest) ProtoMessage() {} func (x *CreateRepositoryRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryRequest.ProtoReflect.Descriptor instead. func (*CreateRepositoryRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{14} } func (x *CreateRepositoryRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *CreateRepositoryRequest) GetDefaultBranch() []byte { if x != nil { return x.DefaultBranch } return nil } func (x *CreateRepositoryRequest) GetObjectFormat() ObjectFormat { if x != nil { return x.ObjectFormat } return ObjectFormat_OBJECT_FORMAT_UNSPECIFIED } // CreateRepositoryResponse is a response for the CreateRepository RPC. An empty // response denotes a successful request. type CreateRepositoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryResponse) Reset() { *x = CreateRepositoryResponse{} mi := &file_repository_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryResponse) ProtoMessage() {} func (x *CreateRepositoryResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryResponse.ProtoReflect.Descriptor instead. func (*CreateRepositoryResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{15} } // GetArchiveRequest is a request for the GetArchive RPC. type GetArchiveRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to archive. The storage_name and relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // commit_id is the commit at which to perform the archive. CommitId string `protobuf:"bytes,2,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` // prefix is an optional prefix to add to paths in the archive. Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` // format is the archive format to stream in the response. Format GetArchiveRequest_Format `protobuf:"varint,4,opt,name=format,proto3,enum=gitaly.GetArchiveRequest_Format" json:"format,omitempty"` // path is the subdirectory of the repo to archive. Provide "." for the entire repo. Path []byte `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` // exclude is a set of paths to exclude from the archive. The paths must exist in the // tree of the provided commit_id. Exclude [][]byte `protobuf:"bytes,6,rep,name=exclude,proto3" json:"exclude,omitempty"` // protolint:disable:this REPEATED_FIELD_NAMES_PLURALIZED // elide_path whether to elide subdirectories. If it is true and `path` refers // to a subdirectory, that subdirectory will be elided from archive entries. // For example, if `dir` contains `README.md`, with `elide_path = false` the // corresponding entry will be `dir/README.md`; with `elide_path = true`, the // entry will be `README.md`. `elide_path` has no effect if `path` refers to the // repository root. `elide_path = true` is not supported if `path` refers to a file. ElidePath bool `protobuf:"varint,7,opt,name=elide_path,json=elidePath,proto3" json:"elide_path,omitempty"` // include_lfs_blobs controls whether Git LFS Objects are included in the archive. IncludeLfsBlobs bool `protobuf:"varint,8,opt,name=include_lfs_blobs,json=includeLfsBlobs,proto3" json:"include_lfs_blobs,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetArchiveRequest) Reset() { *x = GetArchiveRequest{} mi := &file_repository_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetArchiveRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetArchiveRequest) ProtoMessage() {} func (x *GetArchiveRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetArchiveRequest.ProtoReflect.Descriptor instead. func (*GetArchiveRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{16} } func (x *GetArchiveRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *GetArchiveRequest) GetCommitId() string { if x != nil { return x.CommitId } return "" } func (x *GetArchiveRequest) GetPrefix() string { if x != nil { return x.Prefix } return "" } func (x *GetArchiveRequest) GetFormat() GetArchiveRequest_Format { if x != nil { return x.Format } return GetArchiveRequest_ZIP } func (x *GetArchiveRequest) GetPath() []byte { if x != nil { return x.Path } return nil } func (x *GetArchiveRequest) GetExclude() [][]byte { if x != nil { return x.Exclude } return nil } func (x *GetArchiveRequest) GetElidePath() bool { if x != nil { return x.ElidePath } return false } func (x *GetArchiveRequest) GetIncludeLfsBlobs() bool { if x != nil { return x.IncludeLfsBlobs } return false } // GetArchiveResponse is a response for the GetArchive RPC. type GetArchiveResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data contains the archive in the requested format. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetArchiveResponse) Reset() { *x = GetArchiveResponse{} mi := &file_repository_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetArchiveResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetArchiveResponse) ProtoMessage() {} func (x *GetArchiveResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetArchiveResponse.ProtoReflect.Descriptor instead. func (*GetArchiveResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{17} } func (x *GetArchiveResponse) GetData() []byte { if x != nil { return x.Data } return nil } // HasLocalBranchesRequest is a request for the HasLocalBranches RPC. type HasLocalBranchesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to check. The storage_name and relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *HasLocalBranchesRequest) Reset() { *x = HasLocalBranchesRequest{} mi := &file_repository_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *HasLocalBranchesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*HasLocalBranchesRequest) ProtoMessage() {} func (x *HasLocalBranchesRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HasLocalBranchesRequest.ProtoReflect.Descriptor instead. func (*HasLocalBranchesRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{18} } func (x *HasLocalBranchesRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // HasLocalBranchesResponse is a response for the HasLocalBranches RPC. type HasLocalBranchesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // value indicates whether branches exist in the repo. Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *HasLocalBranchesResponse) Reset() { *x = HasLocalBranchesResponse{} mi := &file_repository_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *HasLocalBranchesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*HasLocalBranchesResponse) ProtoMessage() {} func (x *HasLocalBranchesResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HasLocalBranchesResponse.ProtoReflect.Descriptor instead. func (*HasLocalBranchesResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{19} } func (x *HasLocalBranchesResponse) GetValue() bool { if x != nil { return x.Value } return false } // FetchSourceBranchRequest is a request for the FetchSourceBranch RPC. type FetchSourceBranchRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository into which the reference shall be fetched. After a successful // call, it should contain the target reference which points to the same // commit as the source repository's source branch. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // source_repository is the repository from which to fetch the source branch from. SourceRepository *Repository `protobuf:"bytes,2,opt,name=source_repository,json=sourceRepository,proto3" json:"source_repository,omitempty"` // source_branch is the name of the branch in the source repository which should be fetched. SourceBranch []byte `protobuf:"bytes,3,opt,name=source_branch,json=sourceBranch,proto3" json:"source_branch,omitempty"` // target_ref is the name of the reference which shall be newly created in the target // repository. TargetRef []byte `protobuf:"bytes,4,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"` // expected_target_old_oid is the object ID to which target_ref is expected to point. // This is an optional safety guard to avoid races when target_ref has been // concurrently updated. ExpectedTargetOldOid string `protobuf:"bytes,5,opt,name=expected_target_old_oid,json=expectedTargetOldOid,proto3" json:"expected_target_old_oid,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchSourceBranchRequest) Reset() { *x = FetchSourceBranchRequest{} mi := &file_repository_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchSourceBranchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchSourceBranchRequest) ProtoMessage() {} func (x *FetchSourceBranchRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FetchSourceBranchRequest.ProtoReflect.Descriptor instead. func (*FetchSourceBranchRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{20} } func (x *FetchSourceBranchRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *FetchSourceBranchRequest) GetSourceRepository() *Repository { if x != nil { return x.SourceRepository } return nil } func (x *FetchSourceBranchRequest) GetSourceBranch() []byte { if x != nil { return x.SourceBranch } return nil } func (x *FetchSourceBranchRequest) GetTargetRef() []byte { if x != nil { return x.TargetRef } return nil } func (x *FetchSourceBranchRequest) GetExpectedTargetOldOid() string { if x != nil { return x.ExpectedTargetOldOid } return "" } // FetchSourceBranchResponse is a response for the FetchSourceBranch RPC. type FetchSourceBranchResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // result denotes if the source branch was successfully fetched into the target // repository. It is false if resolving the remote reference or fetching it failed. Result bool `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchSourceBranchResponse) Reset() { *x = FetchSourceBranchResponse{} mi := &file_repository_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchSourceBranchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchSourceBranchResponse) ProtoMessage() {} func (x *FetchSourceBranchResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FetchSourceBranchResponse.ProtoReflect.Descriptor instead. func (*FetchSourceBranchResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{21} } func (x *FetchSourceBranchResponse) GetResult() bool { if x != nil { return x.Result } return false } // FsckRequest is a request for the Fsck RPC. type FsckRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository that shall be checked for consistency. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FsckRequest) Reset() { *x = FsckRequest{} mi := &file_repository_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FsckRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FsckRequest) ProtoMessage() {} func (x *FsckRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FsckRequest.ProtoReflect.Descriptor instead. func (*FsckRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{22} } func (x *FsckRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // FsckResponse is a response for the Fsck RPC. type FsckResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // error contains both stdout and stderr of git-fsck(1) in case it returned an error. Error []byte `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FsckResponse) Reset() { *x = FsckResponse{} mi := &file_repository_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FsckResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FsckResponse) ProtoMessage() {} func (x *FsckResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FsckResponse.ProtoReflect.Descriptor instead. func (*FsckResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{23} } func (x *FsckResponse) GetError() []byte { if x != nil { return x.Error } return nil } // WriteRefRequest is a request for the WriteRef RPC. type WriteRefRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo in which to write a ref. The storage_name and relative_path // attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // ref is the ref to create or update. It should be a fully-resolved value like refs/heads/main. Ref []byte `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"` // revision is the new value that the ref should point to. Revision []byte `protobuf:"bytes,3,opt,name=revision,proto3" json:"revision,omitempty"` // old_revision is the previous value of the ref, used to prevent race conditions. // If an all-zero object ID is provided, the ref will only be updated if it did not // previously exist. OldRevision []byte `protobuf:"bytes,4,opt,name=old_revision,json=oldRevision,proto3" json:"old_revision,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *WriteRefRequest) Reset() { *x = WriteRefRequest{} mi := &file_repository_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *WriteRefRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*WriteRefRequest) ProtoMessage() {} func (x *WriteRefRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WriteRefRequest.ProtoReflect.Descriptor instead. func (*WriteRefRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{24} } func (x *WriteRefRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *WriteRefRequest) GetRef() []byte { if x != nil { return x.Ref } return nil } func (x *WriteRefRequest) GetRevision() []byte { if x != nil { return x.Revision } return nil } func (x *WriteRefRequest) GetOldRevision() []byte { if x != nil { return x.OldRevision } return nil } // WriteRefResponse is a response for the WriteRef RPC. type WriteRefResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *WriteRefResponse) Reset() { *x = WriteRefResponse{} mi := &file_repository_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *WriteRefResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*WriteRefResponse) ProtoMessage() {} func (x *WriteRefResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WriteRefResponse.ProtoReflect.Descriptor instead. func (*WriteRefResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{25} } // FindMergeBaseRequest is a request for the FindMergeBase RPC. type FindMergeBaseRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to find the merge base in. The storage_name and // relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // revisions is the revisions to find the merge base for. // We use a repeated field because rugged supports finding a base // for more than 2 revisions, so if we needed that in the future we don't // need to change the protocol. Revisions [][]byte `protobuf:"bytes,2,rep,name=revisions,proto3" json:"revisions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FindMergeBaseRequest) Reset() { *x = FindMergeBaseRequest{} mi := &file_repository_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FindMergeBaseRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindMergeBaseRequest) ProtoMessage() {} func (x *FindMergeBaseRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindMergeBaseRequest.ProtoReflect.Descriptor instead. func (*FindMergeBaseRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{26} } func (x *FindMergeBaseRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *FindMergeBaseRequest) GetRevisions() [][]byte { if x != nil { return x.Revisions } return nil } // FindMergeBaseResponse is a response for the FindMergeBase RPC. type FindMergeBaseResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // base is the commit ID of the best ancestor between the provided revisions. Base string `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FindMergeBaseResponse) Reset() { *x = FindMergeBaseResponse{} mi := &file_repository_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FindMergeBaseResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindMergeBaseResponse) ProtoMessage() {} func (x *FindMergeBaseResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindMergeBaseResponse.ProtoReflect.Descriptor instead. func (*FindMergeBaseResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{27} } func (x *FindMergeBaseResponse) GetBase() string { if x != nil { return x.Base } return "" } // CreateForkRequest is a request for the CreateFork RPC. type CreateForkRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository that shall be created. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // source_repository is the repository that shall be forked. // // Note that the source repository is intentionally not marked as an additional repository that is // to be rewritten by Praefect. This is because Gitaly will use the source repository to perform a // gRPC call, which must use the original non-rewritten repository. SourceRepository *Repository `protobuf:"bytes,2,opt,name=source_repository,json=sourceRepository,proto3" json:"source_repository,omitempty"` // revision to create the fork from. If set, the resulting fork will only have a single branch // that matches the upstream revision. This revision will be the default branch of the repository. // This field should be set to the unqualified revision, not the full reference name. Revision []byte `protobuf:"bytes,3,opt,name=revision,proto3" json:"revision,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateForkRequest) Reset() { *x = CreateForkRequest{} mi := &file_repository_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateForkRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateForkRequest) ProtoMessage() {} func (x *CreateForkRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateForkRequest.ProtoReflect.Descriptor instead. func (*CreateForkRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{28} } func (x *CreateForkRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *CreateForkRequest) GetSourceRepository() *Repository { if x != nil { return x.SourceRepository } return nil } func (x *CreateForkRequest) GetRevision() []byte { if x != nil { return x.Revision } return nil } // CreateForkResponse is a response for the CreateFork RPC. type CreateForkResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateForkResponse) Reset() { *x = CreateForkResponse{} mi := &file_repository_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateForkResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateForkResponse) ProtoMessage() {} func (x *CreateForkResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateForkResponse.ProtoReflect.Descriptor instead. func (*CreateForkResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{29} } // CreateRepositoryFromURLRequest is a request for the CreateRepositoryFromURL RPC. type CreateRepositoryFromURLRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository represents where the repo should be created. The storage_name and // relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // url is the URL of the existing Git repository. Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` // http_authorization_header is the HTTP header which can be added to // the request in order to authenticate against the repository. HttpAuthorizationHeader string `protobuf:"bytes,4,opt,name=http_authorization_header,json=httpAuthorizationHeader,proto3" json:"http_authorization_header,omitempty"` // mirror defines whether to clone with `--mirror` flag or `--bare`. The default // value `false` will cause us to use `--bare`, which results in a clone that // contains only branches (`refs/heads/`) and tags (`refs/tags/`) of the remote // repository. If set to `true`, create a complete mirror-clone which maps all // remote references into the local repository. Mirror bool `protobuf:"varint,5,opt,name=mirror,proto3" json:"mirror,omitempty"` // resolved_address holds the resolved IP address of the remote_url. This is // used to avoid DNS rebinding by mapping the url to the resolved address. // Only IPv4 dotted decimal ("192.0.2.1"), IPv6 ("2001:db8::68"), or IPv4-mapped // IPv6 ("::ffff:192.0.2.1") forms are supported. // Works with HTTP/HTTPS/Git/SSH protocols. // Optional. ResolvedAddress string `protobuf:"bytes,6,opt,name=resolved_address,json=resolvedAddress,proto3" json:"resolved_address,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromURLRequest) Reset() { *x = CreateRepositoryFromURLRequest{} mi := &file_repository_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromURLRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromURLRequest) ProtoMessage() {} func (x *CreateRepositoryFromURLRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromURLRequest.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromURLRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{30} } func (x *CreateRepositoryFromURLRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *CreateRepositoryFromURLRequest) GetUrl() string { if x != nil { return x.Url } return "" } func (x *CreateRepositoryFromURLRequest) GetHttpAuthorizationHeader() string { if x != nil { return x.HttpAuthorizationHeader } return "" } func (x *CreateRepositoryFromURLRequest) GetMirror() bool { if x != nil { return x.Mirror } return false } func (x *CreateRepositoryFromURLRequest) GetResolvedAddress() string { if x != nil { return x.ResolvedAddress } return "" } // CreateRepositoryFromURLResponse is a response for the CreateRepositoryFromURL RPC. type CreateRepositoryFromURLResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromURLResponse) Reset() { *x = CreateRepositoryFromURLResponse{} mi := &file_repository_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromURLResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromURLResponse) ProtoMessage() {} func (x *CreateRepositoryFromURLResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromURLResponse.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromURLResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{31} } // CreateRepositoryFromURLError is an error that will be returned by the CreateRepositoryFromURL RPC under specific error // CreateRepositoryFromURLError. type CreateRepositoryFromURLError struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Error: // // *CreateRepositoryFromURLError_RemoteNotFound Error isCreateRepositoryFromURLError_Error `protobuf_oneof:"error"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromURLError) Reset() { *x = CreateRepositoryFromURLError{} mi := &file_repository_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromURLError) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromURLError) ProtoMessage() {} func (x *CreateRepositoryFromURLError) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromURLError.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromURLError) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{32} } func (x *CreateRepositoryFromURLError) GetError() isCreateRepositoryFromURLError_Error { if x != nil { return x.Error } return nil } func (x *CreateRepositoryFromURLError) GetRemoteNotFound() *RemoteNotFoundError { if x != nil { if x, ok := x.Error.(*CreateRepositoryFromURLError_RemoteNotFound); ok { return x.RemoteNotFound } } return nil } type isCreateRepositoryFromURLError_Error interface { isCreateRepositoryFromURLError_Error() } type CreateRepositoryFromURLError_RemoteNotFound struct { // remote_not_found indicates that the remote repository was not found. RemoteNotFound *RemoteNotFoundError `protobuf:"bytes,1,opt,name=remote_not_found,json=remoteNotFound,proto3,oneof"` } func (*CreateRepositoryFromURLError_RemoteNotFound) isCreateRepositoryFromURLError_Error() {} // CreateBundleRequest is a request for the CreateBundle RPC. type CreateBundleRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to create a bundle from. The storage_name and // relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateBundleRequest) Reset() { *x = CreateBundleRequest{} mi := &file_repository_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateBundleRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateBundleRequest) ProtoMessage() {} func (x *CreateBundleRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateBundleRequest.ProtoReflect.Descriptor instead. func (*CreateBundleRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{33} } func (x *CreateBundleRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // CreateBundleResponse is a response for the CreateBundle RPC. type CreateBundleResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data contains the content of the created bundle. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateBundleResponse) Reset() { *x = CreateBundleResponse{} mi := &file_repository_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateBundleResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateBundleResponse) ProtoMessage() {} func (x *CreateBundleResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateBundleResponse.ProtoReflect.Descriptor instead. func (*CreateBundleResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{34} } func (x *CreateBundleResponse) GetData() []byte { if x != nil { return x.Data } return nil } // CreateBundleFromRefListRequest is a request for the CreateBundleFromRefList RPC. type CreateBundleFromRefListRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository that the bundle is created from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // patterns contains all patterns which shall be bundled. Patterns should be // in the format accepted by git-rev-list(1). Patterns which don't match any // reference will be silently ignored. Patterns [][]byte `protobuf:"bytes,2,rep,name=patterns,proto3" json:"patterns,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateBundleFromRefListRequest) Reset() { *x = CreateBundleFromRefListRequest{} mi := &file_repository_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateBundleFromRefListRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateBundleFromRefListRequest) ProtoMessage() {} func (x *CreateBundleFromRefListRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateBundleFromRefListRequest.ProtoReflect.Descriptor instead. func (*CreateBundleFromRefListRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{35} } func (x *CreateBundleFromRefListRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *CreateBundleFromRefListRequest) GetPatterns() [][]byte { if x != nil { return x.Patterns } return nil } // CreateBundleFromRefListResponse is a response for the CreateBundleFromRefList RPC. type CreateBundleFromRefListResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data contains the content of the created bundle. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateBundleFromRefListResponse) Reset() { *x = CreateBundleFromRefListResponse{} mi := &file_repository_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateBundleFromRefListResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateBundleFromRefListResponse) ProtoMessage() {} func (x *CreateBundleFromRefListResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateBundleFromRefListResponse.ProtoReflect.Descriptor instead. func (*CreateBundleFromRefListResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{36} } func (x *CreateBundleFromRefListResponse) GetData() []byte { if x != nil { return x.Data } return nil } // GenerateBundleURIRequest is a request for the GenerateBundleURI RPC. type GenerateBundleURIRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository that the bundle is created for. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GenerateBundleURIRequest) Reset() { *x = GenerateBundleURIRequest{} mi := &file_repository_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GenerateBundleURIRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GenerateBundleURIRequest) ProtoMessage() {} func (x *GenerateBundleURIRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GenerateBundleURIRequest.ProtoReflect.Descriptor instead. func (*GenerateBundleURIRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{37} } func (x *GenerateBundleURIRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // GenerateBundleURIResponse is a response for the GenerateBundleURI RPC. type GenerateBundleURIResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GenerateBundleURIResponse) Reset() { *x = GenerateBundleURIResponse{} mi := &file_repository_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GenerateBundleURIResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GenerateBundleURIResponse) ProtoMessage() {} func (x *GenerateBundleURIResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GenerateBundleURIResponse.ProtoReflect.Descriptor instead. func (*GenerateBundleURIResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{38} } // GetConfigRequest is a request for the GetConfig RPC. type GetConfigRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository from which the configuration should be read // from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetConfigRequest) Reset() { *x = GetConfigRequest{} mi := &file_repository_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetConfigRequest) ProtoMessage() {} func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. func (*GetConfigRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{39} } func (x *GetConfigRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // GetConfigResponse is a response for the GetConfig RPC. type GetConfigResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data contains contents of the gitconfig. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetConfigResponse) Reset() { *x = GetConfigResponse{} mi := &file_repository_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetConfigResponse) ProtoMessage() {} func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. func (*GetConfigResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{40} } func (x *GetConfigResponse) GetData() []byte { if x != nil { return x.Data } return nil } // RestoreCustomHooksRequest ... type RestoreCustomHooksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository ... Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // data ... Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RestoreCustomHooksRequest) Reset() { *x = RestoreCustomHooksRequest{} mi := &file_repository_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RestoreCustomHooksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RestoreCustomHooksRequest) ProtoMessage() {} func (x *RestoreCustomHooksRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RestoreCustomHooksRequest.ProtoReflect.Descriptor instead. func (*RestoreCustomHooksRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{41} } func (x *RestoreCustomHooksRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *RestoreCustomHooksRequest) GetData() []byte { if x != nil { return x.Data } return nil } // SetCustomHooksRequest is a request for the SetCustomHooks RPC. type SetCustomHooksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to set the custom hooks in. The storage_name and relative_path // attributes must be provided. The repository can be omitted in subsequent requests. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // data is a tarball containing a `custom_hooks` directory. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SetCustomHooksRequest) Reset() { *x = SetCustomHooksRequest{} mi := &file_repository_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SetCustomHooksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetCustomHooksRequest) ProtoMessage() {} func (x *SetCustomHooksRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetCustomHooksRequest.ProtoReflect.Descriptor instead. func (*SetCustomHooksRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{42} } func (x *SetCustomHooksRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *SetCustomHooksRequest) GetData() []byte { if x != nil { return x.Data } return nil } // RestoreCustomHooksResponse ... type RestoreCustomHooksResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RestoreCustomHooksResponse) Reset() { *x = RestoreCustomHooksResponse{} mi := &file_repository_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RestoreCustomHooksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RestoreCustomHooksResponse) ProtoMessage() {} func (x *RestoreCustomHooksResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RestoreCustomHooksResponse.ProtoReflect.Descriptor instead. func (*RestoreCustomHooksResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{43} } // SetCustomHooksResponse is a response for the SetCustomHooks RPC. type SetCustomHooksResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SetCustomHooksResponse) Reset() { *x = SetCustomHooksResponse{} mi := &file_repository_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SetCustomHooksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetCustomHooksResponse) ProtoMessage() {} func (x *SetCustomHooksResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetCustomHooksResponse.ProtoReflect.Descriptor instead. func (*SetCustomHooksResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{44} } // BackupCustomHooksRequest ... type BackupCustomHooksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository ... Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BackupCustomHooksRequest) Reset() { *x = BackupCustomHooksRequest{} mi := &file_repository_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *BackupCustomHooksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*BackupCustomHooksRequest) ProtoMessage() {} func (x *BackupCustomHooksRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BackupCustomHooksRequest.ProtoReflect.Descriptor instead. func (*BackupCustomHooksRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{45} } func (x *BackupCustomHooksRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // GetCustomHooksRequest is a request for the GetCustomHooks RPC. type GetCustomHooksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to retrieve custom hooks from. The storage_name and relative_path // attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetCustomHooksRequest) Reset() { *x = GetCustomHooksRequest{} mi := &file_repository_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetCustomHooksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomHooksRequest) ProtoMessage() {} func (x *GetCustomHooksRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCustomHooksRequest.ProtoReflect.Descriptor instead. func (*GetCustomHooksRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{46} } func (x *GetCustomHooksRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // BackupCustomHooksResponse ... type BackupCustomHooksResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data ... Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BackupCustomHooksResponse) Reset() { *x = BackupCustomHooksResponse{} mi := &file_repository_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *BackupCustomHooksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*BackupCustomHooksResponse) ProtoMessage() {} func (x *BackupCustomHooksResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BackupCustomHooksResponse.ProtoReflect.Descriptor instead. func (*BackupCustomHooksResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{47} } func (x *BackupCustomHooksResponse) GetData() []byte { if x != nil { return x.Data } return nil } // GetCustomHooksResponse is a response for the GetCustomHooks RPC. type GetCustomHooksResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data is the tarball containing the `custom_hooks` directory. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetCustomHooksResponse) Reset() { *x = GetCustomHooksResponse{} mi := &file_repository_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetCustomHooksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCustomHooksResponse) ProtoMessage() {} func (x *GetCustomHooksResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCustomHooksResponse.ProtoReflect.Descriptor instead. func (*GetCustomHooksResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{48} } func (x *GetCustomHooksResponse) GetData() []byte { if x != nil { return x.Data } return nil } // CreateRepositoryFromBundleRequest is a request for the CreateRepositoryFromBundle RPC. type CreateRepositoryFromBundleRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to be created from the Git bundle. Repository should only be // present in the first message of the stream. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // data contains bytes of the Git bundle file being streamed. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromBundleRequest) Reset() { *x = CreateRepositoryFromBundleRequest{} mi := &file_repository_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromBundleRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromBundleRequest) ProtoMessage() {} func (x *CreateRepositoryFromBundleRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromBundleRequest.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromBundleRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{49} } func (x *CreateRepositoryFromBundleRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *CreateRepositoryFromBundleRequest) GetData() []byte { if x != nil { return x.Data } return nil } // CreateRepositoryFromBundleResponse is a response for the CreateRepositoryFromBundle RPC. type CreateRepositoryFromBundleResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromBundleResponse) Reset() { *x = CreateRepositoryFromBundleResponse{} mi := &file_repository_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromBundleResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromBundleResponse) ProtoMessage() {} func (x *CreateRepositoryFromBundleResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromBundleResponse.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromBundleResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{50} } // FindLicenseRequest asks to detect the license for the given repository. type FindLicenseRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is repository where to detect the license. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FindLicenseRequest) Reset() { *x = FindLicenseRequest{} mi := &file_repository_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FindLicenseRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindLicenseRequest) ProtoMessage() {} func (x *FindLicenseRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindLicenseRequest.ProtoReflect.Descriptor instead. func (*FindLicenseRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{51} } func (x *FindLicenseRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // FindLicenseResponse contains the result of detecting the license used in the repository. // If there is nothing that looks like a license file, the empty response is returned. // If there is something that looks like a license, but that license can't be found in the // list of known licenses, we return a pre-defined response with "Other" license. type FindLicenseResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // license_short_name is the license unique SPDX identifier or a short name. // It is always returned lower-cased. LicenseShortName string `protobuf:"bytes,1,opt,name=license_short_name,json=licenseShortName,proto3" json:"license_short_name,omitempty"` // license_name is the license full name. LicenseName string `protobuf:"bytes,2,opt,name=license_name,json=licenseName,proto3" json:"license_name,omitempty"` // license_url is a URL to the license on the internet. LicenseUrl string `protobuf:"bytes,3,opt,name=license_url,json=licenseUrl,proto3" json:"license_url,omitempty"` // license_path is a path to the file that contains the text of the license. // When a LICENSE file is found containing the filename of another file, // that filename will be returned, for example "mit.txt". LicensePath string `protobuf:"bytes,4,opt,name=license_path,json=licensePath,proto3" json:"license_path,omitempty"` // license_nickname is a shortened full name for better readability. // It exists only for a small set of licenses and an empty value is returned in most cases. LicenseNickname string `protobuf:"bytes,5,opt,name=license_nickname,json=licenseNickname,proto3" json:"license_nickname,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FindLicenseResponse) Reset() { *x = FindLicenseResponse{} mi := &file_repository_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FindLicenseResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindLicenseResponse) ProtoMessage() {} func (x *FindLicenseResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindLicenseResponse.ProtoReflect.Descriptor instead. func (*FindLicenseResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{52} } func (x *FindLicenseResponse) GetLicenseShortName() string { if x != nil { return x.LicenseShortName } return "" } func (x *FindLicenseResponse) GetLicenseName() string { if x != nil { return x.LicenseName } return "" } func (x *FindLicenseResponse) GetLicenseUrl() string { if x != nil { return x.LicenseUrl } return "" } func (x *FindLicenseResponse) GetLicensePath() string { if x != nil { return x.LicensePath } return "" } func (x *FindLicenseResponse) GetLicenseNickname() string { if x != nil { return x.LicenseNickname } return "" } // GetInfoAttributesRequest ... type GetInfoAttributesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository ... Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetInfoAttributesRequest) Reset() { *x = GetInfoAttributesRequest{} mi := &file_repository_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetInfoAttributesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetInfoAttributesRequest) ProtoMessage() {} func (x *GetInfoAttributesRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetInfoAttributesRequest.ProtoReflect.Descriptor instead. func (*GetInfoAttributesRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{53} } func (x *GetInfoAttributesRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // GetInfoAttributesResponse ... type GetInfoAttributesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // attributes ... Attributes []byte `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetInfoAttributesResponse) Reset() { *x = GetInfoAttributesResponse{} mi := &file_repository_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetInfoAttributesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetInfoAttributesResponse) ProtoMessage() {} func (x *GetInfoAttributesResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetInfoAttributesResponse.ProtoReflect.Descriptor instead. func (*GetInfoAttributesResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{54} } func (x *GetInfoAttributesResponse) GetAttributes() []byte { if x != nil { return x.Attributes } return nil } // CalculateChecksumRequest is a request for the CalculateChecksum RPC. type CalculateChecksumRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to calculate the checksum for. The storage_name and relative_path // attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CalculateChecksumRequest) Reset() { *x = CalculateChecksumRequest{} mi := &file_repository_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CalculateChecksumRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CalculateChecksumRequest) ProtoMessage() {} func (x *CalculateChecksumRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CalculateChecksumRequest.ProtoReflect.Descriptor instead. func (*CalculateChecksumRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{55} } func (x *CalculateChecksumRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // CalculateChecksumResponse is a response for the CalculateChecksum RPC. type CalculateChecksumResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // checksum is the checksum of the repo's references. Checksum string `protobuf:"bytes,1,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CalculateChecksumResponse) Reset() { *x = CalculateChecksumResponse{} mi := &file_repository_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CalculateChecksumResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CalculateChecksumResponse) ProtoMessage() {} func (x *CalculateChecksumResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CalculateChecksumResponse.ProtoReflect.Descriptor instead. func (*CalculateChecksumResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{56} } func (x *CalculateChecksumResponse) GetChecksum() string { if x != nil { return x.Checksum } return "" } // GetSnapshotRequest is a request for the GetSnapshot RPC. type GetSnapshotRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to snapshot. The storage_name and relative_path // attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetSnapshotRequest) Reset() { *x = GetSnapshotRequest{} mi := &file_repository_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetSnapshotRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSnapshotRequest) ProtoMessage() {} func (x *GetSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSnapshotRequest.ProtoReflect.Descriptor instead. func (*GetSnapshotRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{57} } func (x *GetSnapshotRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // GetSnapshotResponse is a response for the GetSnapshot RPC. type GetSnapshotResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data is the snapshot of the repo compressed as a TAR archive. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetSnapshotResponse) Reset() { *x = GetSnapshotResponse{} mi := &file_repository_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetSnapshotResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSnapshotResponse) ProtoMessage() {} func (x *GetSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSnapshotResponse.ProtoReflect.Descriptor instead. func (*GetSnapshotResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{58} } func (x *GetSnapshotResponse) GetData() []byte { if x != nil { return x.Data } return nil } // CreateRepositoryFromSnapshotRequest is a request for the CreateRepositoryFromSnapshot RPC. type CreateRepositoryFromSnapshotRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository indicates where the new repo should be created. The storage_name and // relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // http_url is the full URL of the location of the snapshot TAR. HttpUrl string `protobuf:"bytes,2,opt,name=http_url,json=httpUrl,proto3" json:"http_url,omitempty"` // http_auth is the value of the Authorization header to send to http_url. HttpAuth string `protobuf:"bytes,3,opt,name=http_auth,json=httpAuth,proto3" json:"http_auth,omitempty"` // resolved_address holds the resolved IP address of the remote_url. This is // used to avoid DNS rebinding by mapping the url to the resolved address. // Only IPv4 dotted decimal ("192.0.2.1"), IPv6 ("2001:db8::68"), or IPv4-mapped // IPv6 ("::ffff:192.0.2.1") forms are supported. // Works with HTTP/HTTPS protocols. // Optional. ResolvedAddress string `protobuf:"bytes,5,opt,name=resolved_address,json=resolvedAddress,proto3" json:"resolved_address,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromSnapshotRequest) Reset() { *x = CreateRepositoryFromSnapshotRequest{} mi := &file_repository_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromSnapshotRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromSnapshotRequest) ProtoMessage() {} func (x *CreateRepositoryFromSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromSnapshotRequest.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromSnapshotRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{59} } func (x *CreateRepositoryFromSnapshotRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *CreateRepositoryFromSnapshotRequest) GetHttpUrl() string { if x != nil { return x.HttpUrl } return "" } func (x *CreateRepositoryFromSnapshotRequest) GetHttpAuth() string { if x != nil { return x.HttpAuth } return "" } func (x *CreateRepositoryFromSnapshotRequest) GetResolvedAddress() string { if x != nil { return x.ResolvedAddress } return "" } // CreateRepositoryFromSnapshotResponse is a response for the CreateRepositoryFromSnapshot RPC. type CreateRepositoryFromSnapshotResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CreateRepositoryFromSnapshotResponse) Reset() { *x = CreateRepositoryFromSnapshotResponse{} mi := &file_repository_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CreateRepositoryFromSnapshotResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRepositoryFromSnapshotResponse) ProtoMessage() {} func (x *CreateRepositoryFromSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateRepositoryFromSnapshotResponse.ProtoReflect.Descriptor instead. func (*CreateRepositoryFromSnapshotResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{60} } // GetRawChangesRequest is a request for the GetRawChanges RPC. type GetRawChangesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to run the diff in. The storage_name and // relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // from_revision is the Git revision to start the diff at. FromRevision string `protobuf:"bytes,2,opt,name=from_revision,json=fromRevision,proto3" json:"from_revision,omitempty"` // to_revision is the Git revision to end the diff at. ToRevision string `protobuf:"bytes,3,opt,name=to_revision,json=toRevision,proto3" json:"to_revision,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetRawChangesRequest) Reset() { *x = GetRawChangesRequest{} mi := &file_repository_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetRawChangesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRawChangesRequest) ProtoMessage() {} func (x *GetRawChangesRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRawChangesRequest.ProtoReflect.Descriptor instead. func (*GetRawChangesRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{61} } func (x *GetRawChangesRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *GetRawChangesRequest) GetFromRevision() string { if x != nil { return x.FromRevision } return "" } func (x *GetRawChangesRequest) GetToRevision() string { if x != nil { return x.ToRevision } return "" } // GetRawChangesResponse is a response for the GetRawChanges RPC. type GetRawChangesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // raw_changes is the set of changes between the two revisions. RawChanges []*GetRawChangesResponse_RawChange `protobuf:"bytes,1,rep,name=raw_changes,json=rawChanges,proto3" json:"raw_changes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetRawChangesResponse) Reset() { *x = GetRawChangesResponse{} mi := &file_repository_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetRawChangesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRawChangesResponse) ProtoMessage() {} func (x *GetRawChangesResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRawChangesResponse.ProtoReflect.Descriptor instead. func (*GetRawChangesResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{62} } func (x *GetRawChangesResponse) GetRawChanges() []*GetRawChangesResponse_RawChange { if x != nil { return x.RawChanges } return nil } // SearchFilesByNameRequest is a request for the SearchFilesByName RPC. type SearchFilesByNameRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to execute the search in. The storage_name and // relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // query is the search query. Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // ref is the Git reference whose tree should be searched. Ref []byte `protobuf:"bytes,3,opt,name=ref,proto3" json:"ref,omitempty"` // filter is a regular expression used to filter the result set before it is // transmitted. It is parsed using Go's `regexp` package, which is closely related // to PCRE, excluding backreferences, atomic/possesive operators, and some other // features. It has a maximum length of 1000 bytes. Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` // limit the number of returned files. Gitaly does not enforce a limit by default. // Clients should always set a value for this field. limit = 0 means unlimited files. Limit uint32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // offset says to skip that many files before beginning to return files. // offset = 0 means starting to return files from beginning. Offset uint32 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchFilesByNameRequest) Reset() { *x = SearchFilesByNameRequest{} mi := &file_repository_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchFilesByNameRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFilesByNameRequest) ProtoMessage() {} func (x *SearchFilesByNameRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchFilesByNameRequest.ProtoReflect.Descriptor instead. func (*SearchFilesByNameRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{63} } func (x *SearchFilesByNameRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *SearchFilesByNameRequest) GetQuery() string { if x != nil { return x.Query } return "" } func (x *SearchFilesByNameRequest) GetRef() []byte { if x != nil { return x.Ref } return nil } func (x *SearchFilesByNameRequest) GetFilter() string { if x != nil { return x.Filter } return "" } func (x *SearchFilesByNameRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } func (x *SearchFilesByNameRequest) GetOffset() uint32 { if x != nil { return x.Offset } return 0 } // SearchFilesByNameResponse is a response for the SearchFilesByName RPC. type SearchFilesByNameResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // files contains the paths of files that have been found to match the query. Files [][]byte `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchFilesByNameResponse) Reset() { *x = SearchFilesByNameResponse{} mi := &file_repository_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchFilesByNameResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFilesByNameResponse) ProtoMessage() {} func (x *SearchFilesByNameResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchFilesByNameResponse.ProtoReflect.Descriptor instead. func (*SearchFilesByNameResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{64} } func (x *SearchFilesByNameResponse) GetFiles() [][]byte { if x != nil { return x.Files } return nil } // SearchFilesByContentRequest is a request for the SearchFilesByContent RPC. type SearchFilesByContentRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to search. The storage_name and relative_path attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // query is the grep pattern to use. Queries are case-insensitive and are compatible // with Perl regexp syntax. Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // ref is the reference to limit the search scope by, for example a commit or // branch name. Ref []byte `protobuf:"bytes,3,opt,name=ref,proto3" json:"ref,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchFilesByContentRequest) Reset() { *x = SearchFilesByContentRequest{} mi := &file_repository_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchFilesByContentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFilesByContentRequest) ProtoMessage() {} func (x *SearchFilesByContentRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchFilesByContentRequest.ProtoReflect.Descriptor instead. func (*SearchFilesByContentRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{65} } func (x *SearchFilesByContentRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *SearchFilesByContentRequest) GetQuery() string { if x != nil { return x.Query } return "" } func (x *SearchFilesByContentRequest) GetRef() []byte { if x != nil { return x.Ref } return nil } // SearchFilesByContentResponse is a response for the SearchFilesByContent RPC. type SearchFilesByContentResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // match_data contains the results of the search. Data is streamed in chunks, where // each chunk is an individual result. MatchData []byte `protobuf:"bytes,2,opt,name=match_data,json=matchData,proto3" json:"match_data,omitempty"` // end_of_match indicates the end of an individual match results. Additional results // may follow in subsequent gRPC messages. EndOfMatch bool `protobuf:"varint,3,opt,name=end_of_match,json=endOfMatch,proto3" json:"end_of_match,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchFilesByContentResponse) Reset() { *x = SearchFilesByContentResponse{} mi := &file_repository_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchFilesByContentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFilesByContentResponse) ProtoMessage() {} func (x *SearchFilesByContentResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchFilesByContentResponse.ProtoReflect.Descriptor instead. func (*SearchFilesByContentResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{66} } func (x *SearchFilesByContentResponse) GetMatchData() []byte { if x != nil { return x.MatchData } return nil } func (x *SearchFilesByContentResponse) GetEndOfMatch() bool { if x != nil { return x.EndOfMatch } return false } // Remote represents a git remote repository. type Remote struct { state protoimpl.MessageState `protogen:"open.v1"` // url is the URL of the remote repository. Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // http_authorization_header is the HTTP header which should be added to // the request in order to authenticate against the repository. HttpAuthorizationHeader string `protobuf:"bytes,3,opt,name=http_authorization_header,json=httpAuthorizationHeader,proto3" json:"http_authorization_header,omitempty"` // mirror_refmaps contains the refspecs which shall be fetched. Some special // refspecs are accepted: // // - "all_refs" gets translated to "+refs/*:refs/*", which mirrors all // references of the source repository. // - "heads" gets translated to "+refs/heads/*:refs/heads/*", which mirrors // all branches of the source repository. // - "tags" gets translated to "+refs/tags/*:refs/tags/*", which mirrors all // tags of the source repository. // // If no refspecs are given, this defaults to "all_refs". MirrorRefmaps []string `protobuf:"bytes,4,rep,name=mirror_refmaps,json=mirrorRefmaps,proto3" json:"mirror_refmaps,omitempty"` // resolved_address holds the resolved IP address of the remote_url. This is // used to avoid DNS rebinding by mapping the url to the resolved address. // Only IPv4 dotted decimal ("192.0.2.1"), IPv6 ("2001:db8::68"), or IPv4-mapped // IPv6 ("::ffff:192.0.2.1") forms are supported. // Works with HTTP/HTTPS/Git/SSH protocols. // Optional. ResolvedAddress string `protobuf:"bytes,6,opt,name=resolved_address,json=resolvedAddress,proto3" json:"resolved_address,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Remote) Reset() { *x = Remote{} mi := &file_repository_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Remote) String() string { return protoimpl.X.MessageStringOf(x) } func (*Remote) ProtoMessage() {} func (x *Remote) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Remote.ProtoReflect.Descriptor instead. func (*Remote) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{67} } func (x *Remote) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Remote) GetHttpAuthorizationHeader() string { if x != nil { return x.HttpAuthorizationHeader } return "" } func (x *Remote) GetMirrorRefmaps() []string { if x != nil { return x.MirrorRefmaps } return nil } func (x *Remote) GetResolvedAddress() string { if x != nil { return x.ResolvedAddress } return "" } // GetObjectDirectorySizeRequest is a request for the GetObjectDirectorySize RPC. type GetObjectDirectorySizeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to query. The storage_name and relative_path attributes // must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetObjectDirectorySizeRequest) Reset() { *x = GetObjectDirectorySizeRequest{} mi := &file_repository_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetObjectDirectorySizeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetObjectDirectorySizeRequest) ProtoMessage() {} func (x *GetObjectDirectorySizeRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetObjectDirectorySizeRequest.ProtoReflect.Descriptor instead. func (*GetObjectDirectorySizeRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{68} } func (x *GetObjectDirectorySizeRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // GetObjectDirectorySizeResponse is a response for the GetObjectDirectorySize RPC. type GetObjectDirectorySizeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // size is the object directory size in kibibytes. Size int64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetObjectDirectorySizeResponse) Reset() { *x = GetObjectDirectorySizeResponse{} mi := &file_repository_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetObjectDirectorySizeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetObjectDirectorySizeResponse) ProtoMessage() {} func (x *GetObjectDirectorySizeResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetObjectDirectorySizeResponse.ProtoReflect.Descriptor instead. func (*GetObjectDirectorySizeResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{69} } func (x *GetObjectDirectorySizeResponse) GetSize() int64 { if x != nil { return x.Size } return 0 } // RemoveRepositoryRequest is a request for the RemoveRepository RPC. type RemoveRepositoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to remove. The storage_name and relative_path attributes // must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RemoveRepositoryRequest) Reset() { *x = RemoveRepositoryRequest{} mi := &file_repository_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RemoveRepositoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveRepositoryRequest) ProtoMessage() {} func (x *RemoveRepositoryRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RemoveRepositoryRequest.ProtoReflect.Descriptor instead. func (*RemoveRepositoryRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{70} } func (x *RemoveRepositoryRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // RemoveRepositoryResponse is a response for the RemoveRepository RPC. type RemoveRepositoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RemoveRepositoryResponse) Reset() { *x = RemoveRepositoryResponse{} mi := &file_repository_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RemoveRepositoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveRepositoryResponse) ProtoMessage() {} func (x *RemoveRepositoryResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RemoveRepositoryResponse.ProtoReflect.Descriptor instead. func (*RemoveRepositoryResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{71} } // ReplicateRepositoryRequest is a request for the ReplicateRepository RPC. type ReplicateRepositoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the target repository that the RPC replicates to. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // source is the source repository that the RPC replicates from. This repository can sit on a // different storage node. The information for how to connect to this storage node needs to be // injected into the gRPC context by the caller by setting the `gitaly-servers` metadata. Source *Repository `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReplicateRepositoryRequest) Reset() { *x = ReplicateRepositoryRequest{} mi := &file_repository_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReplicateRepositoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReplicateRepositoryRequest) ProtoMessage() {} func (x *ReplicateRepositoryRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReplicateRepositoryRequest.ProtoReflect.Descriptor instead. func (*ReplicateRepositoryRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{72} } func (x *ReplicateRepositoryRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *ReplicateRepositoryRequest) GetSource() *Repository { if x != nil { return x.Source } return nil } // ReplicateRepositoryResponse is a response for the ReplicateRepository RPC. type ReplicateRepositoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReplicateRepositoryResponse) Reset() { *x = ReplicateRepositoryResponse{} mi := &file_repository_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReplicateRepositoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReplicateRepositoryResponse) ProtoMessage() {} func (x *ReplicateRepositoryResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReplicateRepositoryResponse.ProtoReflect.Descriptor instead. func (*ReplicateRepositoryResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{73} } // OptimizeRepositoryRequest is a request for the OptimizeRepository RPC. type OptimizeRepositoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository that should be optimized. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // strategy is the strategy that determines which parts of the repository shall be optimized. Strategy OptimizeRepositoryRequest_Strategy `protobuf:"varint,2,opt,name=strategy,proto3,enum=gitaly.OptimizeRepositoryRequest_Strategy" json:"strategy,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *OptimizeRepositoryRequest) Reset() { *x = OptimizeRepositoryRequest{} mi := &file_repository_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *OptimizeRepositoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*OptimizeRepositoryRequest) ProtoMessage() {} func (x *OptimizeRepositoryRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OptimizeRepositoryRequest.ProtoReflect.Descriptor instead. func (*OptimizeRepositoryRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{74} } func (x *OptimizeRepositoryRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *OptimizeRepositoryRequest) GetStrategy() OptimizeRepositoryRequest_Strategy { if x != nil { return x.Strategy } return OptimizeRepositoryRequest_STRATEGY_UNSPECIFIED } // OptimizeRepositoryResponse is a response for the OptimizeRepository RPC. type OptimizeRepositoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *OptimizeRepositoryResponse) Reset() { *x = OptimizeRepositoryResponse{} mi := &file_repository_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *OptimizeRepositoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*OptimizeRepositoryResponse) ProtoMessage() {} func (x *OptimizeRepositoryResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OptimizeRepositoryResponse.ProtoReflect.Descriptor instead. func (*OptimizeRepositoryResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{75} } // PruneUnreachableObjectsRequest is a request for the PruneUnreachableObjects // RPC call. type PruneUnreachableObjectsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repo to prune. The storage_name and relative_path // attributes must be provided. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PruneUnreachableObjectsRequest) Reset() { *x = PruneUnreachableObjectsRequest{} mi := &file_repository_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PruneUnreachableObjectsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PruneUnreachableObjectsRequest) ProtoMessage() {} func (x *PruneUnreachableObjectsRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PruneUnreachableObjectsRequest.ProtoReflect.Descriptor instead. func (*PruneUnreachableObjectsRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{76} } func (x *PruneUnreachableObjectsRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // PruneUnreachableObjectsResponse is a response for the // PruneUnreachableObjects RPC call. type PruneUnreachableObjectsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PruneUnreachableObjectsResponse) Reset() { *x = PruneUnreachableObjectsResponse{} mi := &file_repository_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PruneUnreachableObjectsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PruneUnreachableObjectsResponse) ProtoMessage() {} func (x *PruneUnreachableObjectsResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PruneUnreachableObjectsResponse.ProtoReflect.Descriptor instead. func (*PruneUnreachableObjectsResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{77} } // BackupRepositoryRequest is a request for the BackupRepository RPC. type BackupRepositoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to be backed up. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // vanity_repository is used to determine the backup path. VanityRepository *Repository `protobuf:"bytes,2,opt,name=vanity_repository,json=vanityRepository,proto3" json:"vanity_repository,omitempty"` // backup_id is the label used to identify this backup when restoring. BackupId string `protobuf:"bytes,3,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` // incremental controls whether an incremental backup should be performed. An incremental // backup will attempt to locate a previous backup of this repository to base itself off. Incremental bool `protobuf:"varint,4,opt,name=incremental,proto3" json:"incremental,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BackupRepositoryRequest) Reset() { *x = BackupRepositoryRequest{} mi := &file_repository_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *BackupRepositoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*BackupRepositoryRequest) ProtoMessage() {} func (x *BackupRepositoryRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BackupRepositoryRequest.ProtoReflect.Descriptor instead. func (*BackupRepositoryRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{78} } func (x *BackupRepositoryRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *BackupRepositoryRequest) GetVanityRepository() *Repository { if x != nil { return x.VanityRepository } return nil } func (x *BackupRepositoryRequest) GetBackupId() string { if x != nil { return x.BackupId } return "" } func (x *BackupRepositoryRequest) GetIncremental() bool { if x != nil { return x.Incremental } return false } // BackupRepositoryResponse is a response for the BackupRepository RPC. type BackupRepositoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BackupRepositoryResponse) Reset() { *x = BackupRepositoryResponse{} mi := &file_repository_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *BackupRepositoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*BackupRepositoryResponse) ProtoMessage() {} func (x *BackupRepositoryResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BackupRepositoryResponse.ProtoReflect.Descriptor instead. func (*BackupRepositoryResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{79} } // RestoreRepositoryRequest is a request for the RestoreRepository RPC. type RestoreRepositoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to be restored. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // vanity_repository is used to determine the backup path. VanityRepository *Repository `protobuf:"bytes,2,opt,name=vanity_repository,json=vanityRepository,proto3" json:"vanity_repository,omitempty"` // backup_id is the label used to identify the backup to restore from. If // empty, the latest available backup is used. BackupId string `protobuf:"bytes,3,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` // always_create will force the repository to exist even if no bundle is // found. See https://gitlab.com/gitlab-org/gitlab/-/issues/357044 AlwaysCreate bool `protobuf:"varint,4,opt,name=always_create,json=alwaysCreate,proto3" json:"always_create,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RestoreRepositoryRequest) Reset() { *x = RestoreRepositoryRequest{} mi := &file_repository_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RestoreRepositoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RestoreRepositoryRequest) ProtoMessage() {} func (x *RestoreRepositoryRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RestoreRepositoryRequest.ProtoReflect.Descriptor instead. func (*RestoreRepositoryRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{80} } func (x *RestoreRepositoryRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *RestoreRepositoryRequest) GetVanityRepository() *Repository { if x != nil { return x.VanityRepository } return nil } func (x *RestoreRepositoryRequest) GetBackupId() string { if x != nil { return x.BackupId } return "" } func (x *RestoreRepositoryRequest) GetAlwaysCreate() bool { if x != nil { return x.AlwaysCreate } return false } // RestoreRepositoryResponse is a response for the RestoreRepository RPC. type RestoreRepositoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RestoreRepositoryResponse) Reset() { *x = RestoreRepositoryResponse{} mi := &file_repository_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RestoreRepositoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RestoreRepositoryResponse) ProtoMessage() {} func (x *RestoreRepositoryResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RestoreRepositoryResponse.ProtoReflect.Descriptor instead. func (*RestoreRepositoryResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{81} } // GetFileAttributesRequest is a request for the GetFileAttributes RPC. type GetFileAttributesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository the file attributes shall be computed in. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // revision is the revision where the file attributes shall be computed in. Revision []byte `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"` // attributes are the attributes that will be queried for. Attributes []string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty"` // paths are the file paths that will be queried for. Paths []string `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetFileAttributesRequest) Reset() { *x = GetFileAttributesRequest{} mi := &file_repository_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetFileAttributesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFileAttributesRequest) ProtoMessage() {} func (x *GetFileAttributesRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFileAttributesRequest.ProtoReflect.Descriptor instead. func (*GetFileAttributesRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{82} } func (x *GetFileAttributesRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *GetFileAttributesRequest) GetRevision() []byte { if x != nil { return x.Revision } return nil } func (x *GetFileAttributesRequest) GetAttributes() []string { if x != nil { return x.Attributes } return nil } func (x *GetFileAttributesRequest) GetPaths() []string { if x != nil { return x.Paths } return nil } // GetFileAttributesResponse is a response for the GetFileAttributes RPC. type GetFileAttributesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // attribute_infos is the list of attributes that matches the given GetFileAttributesRequest AttributeInfos []*GetFileAttributesResponse_AttributeInfo `protobuf:"bytes,1,rep,name=attribute_infos,json=attributeInfos,proto3" json:"attribute_infos,omitempty"` // protolint:disable:this REPEATED_FIELD_NAMES_PLURALIZED unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetFileAttributesResponse) Reset() { *x = GetFileAttributesResponse{} mi := &file_repository_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetFileAttributesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFileAttributesResponse) ProtoMessage() {} func (x *GetFileAttributesResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFileAttributesResponse.ProtoReflect.Descriptor instead. func (*GetFileAttributesResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{83} } func (x *GetFileAttributesResponse) GetAttributeInfos() []*GetFileAttributesResponse_AttributeInfo { if x != nil { return x.AttributeInfos } return nil } // FastExportRequest is a request for the FastExport RPC type FastExportRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to generate export data for. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FastExportRequest) Reset() { *x = FastExportRequest{} mi := &file_repository_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FastExportRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*FastExportRequest) ProtoMessage() {} func (x *FastExportRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FastExportRequest.ProtoReflect.Descriptor instead. func (*FastExportRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{84} } func (x *FastExportRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // FastExportResponse is a response for the FastExport RPC type FastExportResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // data contains the content of the export of the repository. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FastExportResponse) Reset() { *x = FastExportResponse{} mi := &file_repository_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FastExportResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*FastExportResponse) ProtoMessage() {} func (x *FastExportResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FastExportResponse.ProtoReflect.Descriptor instead. func (*FastExportResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{85} } func (x *FastExportResponse) GetData() []byte { if x != nil { return x.Data } return nil } // DryRunReftableMigrationRequest is a request for the DryRunReftableMigration RPC. type DryRunReftableMigrationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // repository is the repository to dry-run migrations on. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DryRunReftableMigrationRequest) Reset() { *x = DryRunReftableMigrationRequest{} mi := &file_repository_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DryRunReftableMigrationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DryRunReftableMigrationRequest) ProtoMessage() {} func (x *DryRunReftableMigrationRequest) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DryRunReftableMigrationRequest.ProtoReflect.Descriptor instead. func (*DryRunReftableMigrationRequest) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{86} } func (x *DryRunReftableMigrationRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } // DryRunReftableMigrationResponse is a response for the DryRunReftableMigration RPC. type DryRunReftableMigrationResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // time is the amount of time the migrations took. Time *durationpb.Duration `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DryRunReftableMigrationResponse) Reset() { *x = DryRunReftableMigrationResponse{} mi := &file_repository_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DryRunReftableMigrationResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DryRunReftableMigrationResponse) ProtoMessage() {} func (x *DryRunReftableMigrationResponse) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DryRunReftableMigrationResponse.ProtoReflect.Descriptor instead. func (*DryRunReftableMigrationResponse) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{87} } func (x *DryRunReftableMigrationResponse) GetTime() *durationpb.Duration { if x != nil { return x.Time } return nil } // ReferencesInfo hosts information about references. type RepositoryInfoResponse_ReferencesInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // loose_count is the number of loose references that exist in the repository. These references // are written whenever any reference either gets updated or created. Loose references have not // yet been compressed into a packed format, which is an action that Gitaly performs regularly // during repository maintenance. // // We do not provide the total size of loose references as it is a constant factor of the count // anyway: `$count * $object_hash_length`. LooseCount uint64 `protobuf:"varint,1,opt,name=loose_count,json=looseCount,proto3" json:"loose_count,omitempty"` // packed_size is the size of packed references in bytes. Packed references are a more efficient // way to store loose references. Given that determining the exact amount of references stored // in packed format would require us to process the complete contents we don't provide the size // here. A very rough estimate would be: `$size / 100`. PackedSize uint64 `protobuf:"varint,2,opt,name=packed_size,json=packedSize,proto3" json:"packed_size,omitempty"` // reference_backend is the backend used for storing references in the repository. ReferenceBackend RepositoryInfoResponse_ReferencesInfo_ReferenceBackend `protobuf:"varint,3,opt,name=reference_backend,json=referenceBackend,proto3,enum=gitaly.RepositoryInfoResponse_ReferencesInfo_ReferenceBackend" json:"reference_backend,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse_ReferencesInfo) Reset() { *x = RepositoryInfoResponse_ReferencesInfo{} mi := &file_repository_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse_ReferencesInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse_ReferencesInfo) ProtoMessage() {} func (x *RepositoryInfoResponse_ReferencesInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse_ReferencesInfo.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse_ReferencesInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 0} } func (x *RepositoryInfoResponse_ReferencesInfo) GetLooseCount() uint64 { if x != nil { return x.LooseCount } return 0 } func (x *RepositoryInfoResponse_ReferencesInfo) GetPackedSize() uint64 { if x != nil { return x.PackedSize } return 0 } func (x *RepositoryInfoResponse_ReferencesInfo) GetReferenceBackend() RepositoryInfoResponse_ReferencesInfo_ReferenceBackend { if x != nil { return x.ReferenceBackend } return RepositoryInfoResponse_ReferencesInfo_REFERENCE_BACKEND_UNSPECIFIED } // ObjectsInfo hosts info about objects contained in a repository. It tries to bridge the gap // between the actual on-disk state that is changing over time as Git introduces new ways to // perform repository housekeeping and specific classifications of objects. // // One of the distinctions is between "recent" and "stale" objects. The set of recent objects // contains these objects that have either been recently written/accessed or those which are // reachable via any of the references. Stale objects on the other hand are those that are older // than a certain grace period and which are not reachable via any reference. The exact details // when the set of stale and recent objects is updated is an internal implementation detail of // Gitaly and subject to change. It is safe to assume though that unreachable objects will // eventually be marked stale when repository housekeeping runs on a repository. type RepositoryInfoResponse_ObjectsInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // size is the total size of all objects in the repository in bytes. It makes no distinction // between the way they are stored or whether they are pending deletion. Size uint64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` // recent_size is the total size of all objects in bytes that are considered to be recent. Recent // objects are likely reachable and will not be considered for deletion. RecentSize uint64 `protobuf:"varint,2,opt,name=recent_size,json=recentSize,proto3" json:"recent_size,omitempty"` // stale_size is the total size of all objects in bytes that are considered to be stale. Stale // objects are likely unreachable and will eventually be deleted after a grace period. Objects // which are part of cruft packs are always considered to be stale. StaleSize uint64 `protobuf:"varint,3,opt,name=stale_size,json=staleSize,proto3" json:"stale_size,omitempty"` // keep_size is the total size of all kept packfiles. Kept packfiles are packfiles that have a // `.keep` file accompanying them. Packfiles marked with such a file will never be deleted by // Git and will thus stay around forever, even if their objects are part of // other packfiles already. KeepSize uint64 `protobuf:"varint,4,opt,name=keep_size,json=keepSize,proto3" json:"keep_size,omitempty"` // packfile_count is the number of all packfiles, including stale and kept ones. PackfileCount uint64 `protobuf:"varint,5,opt,name=packfile_count,json=packfileCount,proto3" json:"packfile_count,omitempty"` // reverse_index_count is the number of reverse indices. ReverseIndexCount uint64 `protobuf:"varint,6,opt,name=reverse_index_count,json=reverseIndexCount,proto3" json:"reverse_index_count,omitempty"` // cruft_count is the number of cruft packfiles which have a .mtimes file. CruftCount uint64 `protobuf:"varint,7,opt,name=cruft_count,json=cruftCount,proto3" json:"cruft_count,omitempty"` // keep_count is the number of .keep packfiles. KeepCount uint64 `protobuf:"varint,8,opt,name=keep_count,json=keepCount,proto3" json:"keep_count,omitempty"` // loose_objects_count is the number of loose objects. LooseObjectsCount uint64 `protobuf:"varint,9,opt,name=loose_objects_count,json=looseObjectsCount,proto3" json:"loose_objects_count,omitempty"` // stale_loose_objects_count is the number of stale loose objects. StaleLooseObjectsCount uint64 `protobuf:"varint,10,opt,name=stale_loose_objects_count,json=staleLooseObjectsCount,proto3" json:"stale_loose_objects_count,omitempty"` // loose_objects_garbage_count is the number of garbage files in loose objects shards. LooseObjectsGarbageCount uint64 `protobuf:"varint,11,opt,name=loose_objects_garbage_count,json=looseObjectsGarbageCount,proto3" json:"loose_objects_garbage_count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse_ObjectsInfo) Reset() { *x = RepositoryInfoResponse_ObjectsInfo{} mi := &file_repository_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse_ObjectsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse_ObjectsInfo) ProtoMessage() {} func (x *RepositoryInfoResponse_ObjectsInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse_ObjectsInfo.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse_ObjectsInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 1} } func (x *RepositoryInfoResponse_ObjectsInfo) GetSize() uint64 { if x != nil { return x.Size } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetRecentSize() uint64 { if x != nil { return x.RecentSize } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetStaleSize() uint64 { if x != nil { return x.StaleSize } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetKeepSize() uint64 { if x != nil { return x.KeepSize } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetPackfileCount() uint64 { if x != nil { return x.PackfileCount } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetReverseIndexCount() uint64 { if x != nil { return x.ReverseIndexCount } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetCruftCount() uint64 { if x != nil { return x.CruftCount } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetKeepCount() uint64 { if x != nil { return x.KeepCount } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetLooseObjectsCount() uint64 { if x != nil { return x.LooseObjectsCount } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetStaleLooseObjectsCount() uint64 { if x != nil { return x.StaleLooseObjectsCount } return 0 } func (x *RepositoryInfoResponse_ObjectsInfo) GetLooseObjectsGarbageCount() uint64 { if x != nil { return x.LooseObjectsGarbageCount } return 0 } // CommitGraphInfo hosts information about the commit-graph of a repository. type RepositoryInfoResponse_CommitGraphInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // commit_graph_chain_length is the length of the commit-graph chain, if it exists. If the // repository does not have a commit-graph chain but a monolithic commit-graph, then this // field will be set to 0. CommitGraphChainLength uint64 `protobuf:"varint,1,opt,name=commit_graph_chain_length,json=commitGraphChainLength,proto3" json:"commit_graph_chain_length,omitempty"` // has_bloom_filters tells whether the commit-graph has bloom filters. Bloom filters are used // to answer the question whether a certain path has been changed in the commit the bloom // filter applies to. HasBloomFilters bool `protobuf:"varint,2,opt,name=has_bloom_filters,json=hasBloomFilters,proto3" json:"has_bloom_filters,omitempty"` // has_generation_data tells whether the commit-graph has generation data. Generation // data is stored as the corrected committer date, which is defined as the maximum // of the commit's own committer date or the corrected committer date of any of its // parents. This data can be used to determine whether a commit A comes after a // certain commit B. HasGenerationData bool `protobuf:"varint,3,opt,name=has_generation_data,json=hasGenerationData,proto3" json:"has_generation_data,omitempty"` // has_generation_data_overflow stores overflow data in case the corrected committer // date takes more than 31 bits to represent. HasGenerationDataOverflow bool `protobuf:"varint,5,opt,name=has_generation_data_overflow,json=hasGenerationDataOverflow,proto3" json:"has_generation_data_overflow,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse_CommitGraphInfo) Reset() { *x = RepositoryInfoResponse_CommitGraphInfo{} mi := &file_repository_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse_CommitGraphInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse_CommitGraphInfo) ProtoMessage() {} func (x *RepositoryInfoResponse_CommitGraphInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse_CommitGraphInfo.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse_CommitGraphInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 2} } func (x *RepositoryInfoResponse_CommitGraphInfo) GetCommitGraphChainLength() uint64 { if x != nil { return x.CommitGraphChainLength } return 0 } func (x *RepositoryInfoResponse_CommitGraphInfo) GetHasBloomFilters() bool { if x != nil { return x.HasBloomFilters } return false } func (x *RepositoryInfoResponse_CommitGraphInfo) GetHasGenerationData() bool { if x != nil { return x.HasGenerationData } return false } func (x *RepositoryInfoResponse_CommitGraphInfo) GetHasGenerationDataOverflow() bool { if x != nil { return x.HasGenerationDataOverflow } return false } // BitmapInfo hosts information about bitmaps in a repository. type RepositoryInfoResponse_BitmapInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // has_hash_cache indicates whether the name hash cache extension exists in the bitmap. HasHashCache bool `protobuf:"varint,1,opt,name=has_hash_cache,json=hasHashCache,proto3" json:"has_hash_cache,omitempty"` // has_lookup_table indicates whether the lookup table exists in the bitmap. HasLookupTable bool `protobuf:"varint,2,opt,name=has_lookup_table,json=hasLookupTable,proto3" json:"has_lookup_table,omitempty"` // version is the version of the bitmap (currently only version 1 is supported by Git). Version uint64 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse_BitmapInfo) Reset() { *x = RepositoryInfoResponse_BitmapInfo{} mi := &file_repository_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse_BitmapInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse_BitmapInfo) ProtoMessage() {} func (x *RepositoryInfoResponse_BitmapInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse_BitmapInfo.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse_BitmapInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 3} } func (x *RepositoryInfoResponse_BitmapInfo) GetHasHashCache() bool { if x != nil { return x.HasHashCache } return false } func (x *RepositoryInfoResponse_BitmapInfo) GetHasLookupTable() bool { if x != nil { return x.HasLookupTable } return false } func (x *RepositoryInfoResponse_BitmapInfo) GetVersion() uint64 { if x != nil { return x.Version } return 0 } // MultiPackIndexInfo hosts information about the multi-pack-index. type RepositoryInfoResponse_MultiPackIndexInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // packfile_count is the count of packfiles that the multi-pack-index tracks. PackfileCount uint64 `protobuf:"varint,1,opt,name=packfile_count,json=packfileCount,proto3" json:"packfile_count,omitempty"` // version is the version of the multi-pack-index (currently only version 1 is supported by Git). Version uint64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse_MultiPackIndexInfo) Reset() { *x = RepositoryInfoResponse_MultiPackIndexInfo{} mi := &file_repository_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse_MultiPackIndexInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse_MultiPackIndexInfo) ProtoMessage() {} func (x *RepositoryInfoResponse_MultiPackIndexInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse_MultiPackIndexInfo.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse_MultiPackIndexInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 4} } func (x *RepositoryInfoResponse_MultiPackIndexInfo) GetPackfileCount() uint64 { if x != nil { return x.PackfileCount } return 0 } func (x *RepositoryInfoResponse_MultiPackIndexInfo) GetVersion() uint64 { if x != nil { return x.Version } return 0 } // AlternatesInfo hosts information about alternate object directories. type RepositoryInfoResponse_AlternatesInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // object_directories contains the list of paths to object directories that the repository is linked to. ObjectDirectories []string `protobuf:"bytes,1,rep,name=object_directories,json=objectDirectories,proto3" json:"object_directories,omitempty"` // last_modified is the time when the alternates file has last been // modified. LastModified *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RepositoryInfoResponse_AlternatesInfo) Reset() { *x = RepositoryInfoResponse_AlternatesInfo{} mi := &file_repository_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RepositoryInfoResponse_AlternatesInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RepositoryInfoResponse_AlternatesInfo) ProtoMessage() {} func (x *RepositoryInfoResponse_AlternatesInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RepositoryInfoResponse_AlternatesInfo.ProtoReflect.Descriptor instead. func (*RepositoryInfoResponse_AlternatesInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{5, 5} } func (x *RepositoryInfoResponse_AlternatesInfo) GetObjectDirectories() []string { if x != nil { return x.ObjectDirectories } return nil } func (x *RepositoryInfoResponse_AlternatesInfo) GetLastModified() *timestamppb.Timestamp { if x != nil { return x.LastModified } return nil } // RawChange represents the metadata for a single change between the two // revisions. type GetRawChangesResponse_RawChange struct { state protoimpl.MessageState `protogen:"open.v1"` // blob_id is the OID of the file that was changed. BlobId string `protobuf:"bytes,1,opt,name=blob_id,json=blobId,proto3" json:"blob_id,omitempty"` // size is the blob size in bytes. Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` // operation is the change that occurred on the file. Operation GetRawChangesResponse_RawChange_Operation `protobuf:"varint,5,opt,name=operation,proto3,enum=gitaly.GetRawChangesResponse_RawChange_Operation" json:"operation,omitempty"` // old_mode is the previous mode of the file. This may be equal to new_mode. OldMode int32 `protobuf:"varint,7,opt,name=old_mode,json=oldMode,proto3" json:"old_mode,omitempty"` // new_mode is the current mode of the file. This may be equal to old_mode. NewMode int32 `protobuf:"varint,8,opt,name=new_mode,json=newMode,proto3" json:"new_mode,omitempty"` // new_path_bytes is the new file path. This may be equal to old_path_bytes. NewPathBytes []byte `protobuf:"bytes,9,opt,name=new_path_bytes,json=newPathBytes,proto3" json:"new_path_bytes,omitempty"` // old_path_bytes is the old file path. This may be equal to new_path_bytes. OldPathBytes []byte `protobuf:"bytes,10,opt,name=old_path_bytes,json=oldPathBytes,proto3" json:"old_path_bytes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetRawChangesResponse_RawChange) Reset() { *x = GetRawChangesResponse_RawChange{} mi := &file_repository_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetRawChangesResponse_RawChange) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRawChangesResponse_RawChange) ProtoMessage() {} func (x *GetRawChangesResponse_RawChange) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetRawChangesResponse_RawChange.ProtoReflect.Descriptor instead. func (*GetRawChangesResponse_RawChange) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{62, 0} } func (x *GetRawChangesResponse_RawChange) GetBlobId() string { if x != nil { return x.BlobId } return "" } func (x *GetRawChangesResponse_RawChange) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *GetRawChangesResponse_RawChange) GetOperation() GetRawChangesResponse_RawChange_Operation { if x != nil { return x.Operation } return GetRawChangesResponse_RawChange_UNKNOWN } func (x *GetRawChangesResponse_RawChange) GetOldMode() int32 { if x != nil { return x.OldMode } return 0 } func (x *GetRawChangesResponse_RawChange) GetNewMode() int32 { if x != nil { return x.NewMode } return 0 } func (x *GetRawChangesResponse_RawChange) GetNewPathBytes() []byte { if x != nil { return x.NewPathBytes } return nil } func (x *GetRawChangesResponse_RawChange) GetOldPathBytes() []byte { if x != nil { return x.OldPathBytes } return nil } // SkippedError is returned when the repository backup has been skipped. type BackupRepositoryResponse_SkippedError struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BackupRepositoryResponse_SkippedError) Reset() { *x = BackupRepositoryResponse_SkippedError{} mi := &file_repository_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *BackupRepositoryResponse_SkippedError) String() string { return protoimpl.X.MessageStringOf(x) } func (*BackupRepositoryResponse_SkippedError) ProtoMessage() {} func (x *BackupRepositoryResponse_SkippedError) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BackupRepositoryResponse_SkippedError.ProtoReflect.Descriptor instead. func (*BackupRepositoryResponse_SkippedError) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{79, 0} } // SkippedError is returned when the repository restore has been skipped. type RestoreRepositoryResponse_SkippedError struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RestoreRepositoryResponse_SkippedError) Reset() { *x = RestoreRepositoryResponse_SkippedError{} mi := &file_repository_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RestoreRepositoryResponse_SkippedError) String() string { return protoimpl.X.MessageStringOf(x) } func (*RestoreRepositoryResponse_SkippedError) ProtoMessage() {} func (x *RestoreRepositoryResponse_SkippedError) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RestoreRepositoryResponse_SkippedError.ProtoReflect.Descriptor instead. func (*RestoreRepositoryResponse_SkippedError) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{81, 0} } // AttributeInfo is a specified git attribute for a given path. type GetFileAttributesResponse_AttributeInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // path is the file path for the current attribute value. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // attribute is the name of the attribute. Attribute string `protobuf:"bytes,2,opt,name=attribute,proto3" json:"attribute,omitempty"` // value is the current value of the attribute. // "set" is used when the attribute is true, and "unset" when it's false. // See gitattributes(5) and git-check-attr(1) for more info. Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetFileAttributesResponse_AttributeInfo) Reset() { *x = GetFileAttributesResponse_AttributeInfo{} mi := &file_repository_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GetFileAttributesResponse_AttributeInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFileAttributesResponse_AttributeInfo) ProtoMessage() {} func (x *GetFileAttributesResponse_AttributeInfo) ProtoReflect() protoreflect.Message { mi := &file_repository_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFileAttributesResponse_AttributeInfo.ProtoReflect.Descriptor instead. func (*GetFileAttributesResponse_AttributeInfo) Descriptor() ([]byte, []int) { return file_repository_proto_rawDescGZIP(), []int{83, 0} } func (x *GetFileAttributesResponse_AttributeInfo) GetPath() string { if x != nil { return x.Path } return "" } func (x *GetFileAttributesResponse_AttributeInfo) GetAttribute() string { if x != nil { return x.Attribute } return "" } func (x *GetFileAttributesResponse_AttributeInfo) GetValue() string { if x != nil { return x.Value } return "" } var File_repository_proto protoreflect.FileDescriptor var file_repository_proto_rawDesc = string([]byte{ 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x1a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x53, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x32, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x2c, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x87, 0x10, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x41, 0x0a, 0x06, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x12, 0x5b, 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x60, 0x0a, 0x17, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x1a, 0xb3, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x6b, 0x0a, 0x11, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x22, 0x72, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x1a, 0xbf, 0x03, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6b, 0x65, 0x65, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x75, 0x66, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x72, 0x75, 0x66, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x4c, 0x6f, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x47, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x42, 0x6c, 0x6f, 0x6f, 0x6d, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x68, 0x61, 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3f, 0x0a, 0x1c, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x68, 0x61, 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x76, 0x0a, 0x0a, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x48, 0x61, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x55, 0x0a, 0x12, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x80, 0x01, 0x0a, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x6c, 0x0a, 0x12, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4f, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x44, 0x0a, 0x14, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x12, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe3, 0x02, 0x0a, 0x12, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e, 0x6f, 0x54, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x6f, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x12, 0x33, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x22, 0x5b, 0x0a, 0x13, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x38, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6c, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6c, 0x69, 0x64, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x66, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x66, 0x73, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x22, 0x33, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x49, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x41, 0x52, 0x5f, 0x47, 0x5a, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x41, 0x52, 0x5f, 0x42, 0x5a, 0x32, 0x10, 0x03, 0x22, 0x28, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x17, 0x48, 0x61, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x30, 0x0a, 0x18, 0x48, 0x61, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x18, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x17, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x33, 0x0a, 0x19, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x47, 0x0a, 0x0b, 0x46, 0x73, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x24, 0x0a, 0x0c, 0x46, 0x73, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xaf, 0x01, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x18, 0x0a, 0x10, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x6e, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2b, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x19, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x68, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x21, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4f, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x2a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x76, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x22, 0x35, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x27, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x18, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x51, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x2f, 0x0a, 0x19, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x71, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xd5, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x3b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x18, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x19, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x29, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd3, 0x01, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x74, 0x74, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x24, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x04, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x1a, 0xab, 0x03, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x74, 0x68, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6f, 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x50, 0x49, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x52, 0x0d, 0x72, 0x61, 0x77, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc2, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x31, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x72, 0x65, 0x66, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x10, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x19, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x68, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x6d, 0x61, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x34, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x53, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x19, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x6b, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x48, 0x45, 0x55, 0x52, 0x49, 0x53, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x45, 0x41, 0x47, 0x45, 0x52, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x22, 0x1c, 0x0a, 0x1a, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x1e, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x21, 0x0a, 0x1f, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x17, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x11, 0x76, 0x61, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x10, 0x76, 0x61, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x22, 0x2a, 0x0a, 0x18, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x0e, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd7, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x11, 0x76, 0x61, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x10, 0x76, 0x61, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x22, 0x2b, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x0e, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa6, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4d, 0x0a, 0x11, 0x46, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x28, 0x0a, 0x12, 0x46, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5a, 0x0a, 0x1e, 0x44, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x66, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x50, 0x0a, 0x1f, 0x44, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x66, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x32, 0x83, 0x20, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x50, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x28, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4e, 0x0a, 0x0b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x4d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x48, 0x61, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x48, 0x61, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x48, 0x61, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x60, 0x0a, 0x11, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x39, 0x0a, 0x04, 0x46, 0x73, 0x63, 0x6b, 0x12, 0x13, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x73, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x73, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x45, 0x0a, 0x08, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x66, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4b, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x53, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x76, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x28, 0x01, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x50, 0x0a, 0x0b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x7d, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x4a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x65, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x50, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x56, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x62, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x88, 0x02, 0x01, 0x28, 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x65, 0x0a, 0x11, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x5d, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x66, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x63, 0x0a, 0x12, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x72, 0x0a, 0x17, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x5d, 0x0a, 0x10, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x60, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4d, 0x0a, 0x0a, 0x46, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x17, 0x44, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x66, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x66, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x66, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( file_repository_proto_rawDescOnce sync.Once file_repository_proto_rawDescData []byte ) func file_repository_proto_rawDescGZIP() []byte { file_repository_proto_rawDescOnce.Do(func() { file_repository_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_repository_proto_rawDesc), len(file_repository_proto_rawDesc))) }) return file_repository_proto_rawDescData } var file_repository_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_repository_proto_msgTypes = make([]protoimpl.MessageInfo, 98) var file_repository_proto_goTypes = []any{ (RepositoryInfoResponse_ReferencesInfo_ReferenceBackend)(0), // 0: gitaly.RepositoryInfoResponse.ReferencesInfo.ReferenceBackend (GetArchiveRequest_Format)(0), // 1: gitaly.GetArchiveRequest.Format (GetRawChangesResponse_RawChange_Operation)(0), // 2: gitaly.GetRawChangesResponse.RawChange.Operation (OptimizeRepositoryRequest_Strategy)(0), // 3: gitaly.OptimizeRepositoryRequest.Strategy (*RepositoryExistsRequest)(nil), // 4: gitaly.RepositoryExistsRequest (*RepositoryExistsResponse)(nil), // 5: gitaly.RepositoryExistsResponse (*RepositorySizeRequest)(nil), // 6: gitaly.RepositorySizeRequest (*RepositorySizeResponse)(nil), // 7: gitaly.RepositorySizeResponse (*RepositoryInfoRequest)(nil), // 8: gitaly.RepositoryInfoRequest (*RepositoryInfoResponse)(nil), // 9: gitaly.RepositoryInfoResponse (*ObjectsSizeRequest)(nil), // 10: gitaly.ObjectsSizeRequest (*ObjectsSizeResponse)(nil), // 11: gitaly.ObjectsSizeResponse (*ObjectFormatRequest)(nil), // 12: gitaly.ObjectFormatRequest (*ObjectFormatResponse)(nil), // 13: gitaly.ObjectFormatResponse (*FetchBundleRequest)(nil), // 14: gitaly.FetchBundleRequest (*FetchBundleResponse)(nil), // 15: gitaly.FetchBundleResponse (*FetchRemoteRequest)(nil), // 16: gitaly.FetchRemoteRequest (*FetchRemoteResponse)(nil), // 17: gitaly.FetchRemoteResponse (*CreateRepositoryRequest)(nil), // 18: gitaly.CreateRepositoryRequest (*CreateRepositoryResponse)(nil), // 19: gitaly.CreateRepositoryResponse (*GetArchiveRequest)(nil), // 20: gitaly.GetArchiveRequest (*GetArchiveResponse)(nil), // 21: gitaly.GetArchiveResponse (*HasLocalBranchesRequest)(nil), // 22: gitaly.HasLocalBranchesRequest (*HasLocalBranchesResponse)(nil), // 23: gitaly.HasLocalBranchesResponse (*FetchSourceBranchRequest)(nil), // 24: gitaly.FetchSourceBranchRequest (*FetchSourceBranchResponse)(nil), // 25: gitaly.FetchSourceBranchResponse (*FsckRequest)(nil), // 26: gitaly.FsckRequest (*FsckResponse)(nil), // 27: gitaly.FsckResponse (*WriteRefRequest)(nil), // 28: gitaly.WriteRefRequest (*WriteRefResponse)(nil), // 29: gitaly.WriteRefResponse (*FindMergeBaseRequest)(nil), // 30: gitaly.FindMergeBaseRequest (*FindMergeBaseResponse)(nil), // 31: gitaly.FindMergeBaseResponse (*CreateForkRequest)(nil), // 32: gitaly.CreateForkRequest (*CreateForkResponse)(nil), // 33: gitaly.CreateForkResponse (*CreateRepositoryFromURLRequest)(nil), // 34: gitaly.CreateRepositoryFromURLRequest (*CreateRepositoryFromURLResponse)(nil), // 35: gitaly.CreateRepositoryFromURLResponse (*CreateRepositoryFromURLError)(nil), // 36: gitaly.CreateRepositoryFromURLError (*CreateBundleRequest)(nil), // 37: gitaly.CreateBundleRequest (*CreateBundleResponse)(nil), // 38: gitaly.CreateBundleResponse (*CreateBundleFromRefListRequest)(nil), // 39: gitaly.CreateBundleFromRefListRequest (*CreateBundleFromRefListResponse)(nil), // 40: gitaly.CreateBundleFromRefListResponse (*GenerateBundleURIRequest)(nil), // 41: gitaly.GenerateBundleURIRequest (*GenerateBundleURIResponse)(nil), // 42: gitaly.GenerateBundleURIResponse (*GetConfigRequest)(nil), // 43: gitaly.GetConfigRequest (*GetConfigResponse)(nil), // 44: gitaly.GetConfigResponse (*RestoreCustomHooksRequest)(nil), // 45: gitaly.RestoreCustomHooksRequest (*SetCustomHooksRequest)(nil), // 46: gitaly.SetCustomHooksRequest (*RestoreCustomHooksResponse)(nil), // 47: gitaly.RestoreCustomHooksResponse (*SetCustomHooksResponse)(nil), // 48: gitaly.SetCustomHooksResponse (*BackupCustomHooksRequest)(nil), // 49: gitaly.BackupCustomHooksRequest (*GetCustomHooksRequest)(nil), // 50: gitaly.GetCustomHooksRequest (*BackupCustomHooksResponse)(nil), // 51: gitaly.BackupCustomHooksResponse (*GetCustomHooksResponse)(nil), // 52: gitaly.GetCustomHooksResponse (*CreateRepositoryFromBundleRequest)(nil), // 53: gitaly.CreateRepositoryFromBundleRequest (*CreateRepositoryFromBundleResponse)(nil), // 54: gitaly.CreateRepositoryFromBundleResponse (*FindLicenseRequest)(nil), // 55: gitaly.FindLicenseRequest (*FindLicenseResponse)(nil), // 56: gitaly.FindLicenseResponse (*GetInfoAttributesRequest)(nil), // 57: gitaly.GetInfoAttributesRequest (*GetInfoAttributesResponse)(nil), // 58: gitaly.GetInfoAttributesResponse (*CalculateChecksumRequest)(nil), // 59: gitaly.CalculateChecksumRequest (*CalculateChecksumResponse)(nil), // 60: gitaly.CalculateChecksumResponse (*GetSnapshotRequest)(nil), // 61: gitaly.GetSnapshotRequest (*GetSnapshotResponse)(nil), // 62: gitaly.GetSnapshotResponse (*CreateRepositoryFromSnapshotRequest)(nil), // 63: gitaly.CreateRepositoryFromSnapshotRequest (*CreateRepositoryFromSnapshotResponse)(nil), // 64: gitaly.CreateRepositoryFromSnapshotResponse (*GetRawChangesRequest)(nil), // 65: gitaly.GetRawChangesRequest (*GetRawChangesResponse)(nil), // 66: gitaly.GetRawChangesResponse (*SearchFilesByNameRequest)(nil), // 67: gitaly.SearchFilesByNameRequest (*SearchFilesByNameResponse)(nil), // 68: gitaly.SearchFilesByNameResponse (*SearchFilesByContentRequest)(nil), // 69: gitaly.SearchFilesByContentRequest (*SearchFilesByContentResponse)(nil), // 70: gitaly.SearchFilesByContentResponse (*Remote)(nil), // 71: gitaly.Remote (*GetObjectDirectorySizeRequest)(nil), // 72: gitaly.GetObjectDirectorySizeRequest (*GetObjectDirectorySizeResponse)(nil), // 73: gitaly.GetObjectDirectorySizeResponse (*RemoveRepositoryRequest)(nil), // 74: gitaly.RemoveRepositoryRequest (*RemoveRepositoryResponse)(nil), // 75: gitaly.RemoveRepositoryResponse (*ReplicateRepositoryRequest)(nil), // 76: gitaly.ReplicateRepositoryRequest (*ReplicateRepositoryResponse)(nil), // 77: gitaly.ReplicateRepositoryResponse (*OptimizeRepositoryRequest)(nil), // 78: gitaly.OptimizeRepositoryRequest (*OptimizeRepositoryResponse)(nil), // 79: gitaly.OptimizeRepositoryResponse (*PruneUnreachableObjectsRequest)(nil), // 80: gitaly.PruneUnreachableObjectsRequest (*PruneUnreachableObjectsResponse)(nil), // 81: gitaly.PruneUnreachableObjectsResponse (*BackupRepositoryRequest)(nil), // 82: gitaly.BackupRepositoryRequest (*BackupRepositoryResponse)(nil), // 83: gitaly.BackupRepositoryResponse (*RestoreRepositoryRequest)(nil), // 84: gitaly.RestoreRepositoryRequest (*RestoreRepositoryResponse)(nil), // 85: gitaly.RestoreRepositoryResponse (*GetFileAttributesRequest)(nil), // 86: gitaly.GetFileAttributesRequest (*GetFileAttributesResponse)(nil), // 87: gitaly.GetFileAttributesResponse (*FastExportRequest)(nil), // 88: gitaly.FastExportRequest (*FastExportResponse)(nil), // 89: gitaly.FastExportResponse (*DryRunReftableMigrationRequest)(nil), // 90: gitaly.DryRunReftableMigrationRequest (*DryRunReftableMigrationResponse)(nil), // 91: gitaly.DryRunReftableMigrationResponse (*RepositoryInfoResponse_ReferencesInfo)(nil), // 92: gitaly.RepositoryInfoResponse.ReferencesInfo (*RepositoryInfoResponse_ObjectsInfo)(nil), // 93: gitaly.RepositoryInfoResponse.ObjectsInfo (*RepositoryInfoResponse_CommitGraphInfo)(nil), // 94: gitaly.RepositoryInfoResponse.CommitGraphInfo (*RepositoryInfoResponse_BitmapInfo)(nil), // 95: gitaly.RepositoryInfoResponse.BitmapInfo (*RepositoryInfoResponse_MultiPackIndexInfo)(nil), // 96: gitaly.RepositoryInfoResponse.MultiPackIndexInfo (*RepositoryInfoResponse_AlternatesInfo)(nil), // 97: gitaly.RepositoryInfoResponse.AlternatesInfo (*GetRawChangesResponse_RawChange)(nil), // 98: gitaly.GetRawChangesResponse.RawChange (*BackupRepositoryResponse_SkippedError)(nil), // 99: gitaly.BackupRepositoryResponse.SkippedError (*RestoreRepositoryResponse_SkippedError)(nil), // 100: gitaly.RestoreRepositoryResponse.SkippedError (*GetFileAttributesResponse_AttributeInfo)(nil), // 101: gitaly.GetFileAttributesResponse.AttributeInfo (*Repository)(nil), // 102: gitaly.Repository (*timestamppb.Timestamp)(nil), // 103: google.protobuf.Timestamp (ObjectFormat)(0), // 104: gitaly.ObjectFormat (*RemoteNotFoundError)(nil), // 105: gitaly.RemoteNotFoundError (*durationpb.Duration)(nil), // 106: google.protobuf.Duration } var file_repository_proto_depIdxs = []int32{ 102, // 0: gitaly.RepositoryExistsRequest.repository:type_name -> gitaly.Repository 102, // 1: gitaly.RepositorySizeRequest.repository:type_name -> gitaly.Repository 102, // 2: gitaly.RepositoryInfoRequest.repository:type_name -> gitaly.Repository 92, // 3: gitaly.RepositoryInfoResponse.references:type_name -> gitaly.RepositoryInfoResponse.ReferencesInfo 93, // 4: gitaly.RepositoryInfoResponse.objects:type_name -> gitaly.RepositoryInfoResponse.ObjectsInfo 94, // 5: gitaly.RepositoryInfoResponse.commit_graph:type_name -> gitaly.RepositoryInfoResponse.CommitGraphInfo 95, // 6: gitaly.RepositoryInfoResponse.bitmap:type_name -> gitaly.RepositoryInfoResponse.BitmapInfo 96, // 7: gitaly.RepositoryInfoResponse.multi_pack_index:type_name -> gitaly.RepositoryInfoResponse.MultiPackIndexInfo 95, // 8: gitaly.RepositoryInfoResponse.multi_pack_index_bitmap:type_name -> gitaly.RepositoryInfoResponse.BitmapInfo 97, // 9: gitaly.RepositoryInfoResponse.alternates:type_name -> gitaly.RepositoryInfoResponse.AlternatesInfo 103, // 10: gitaly.RepositoryInfoResponse.last_full_repack:type_name -> google.protobuf.Timestamp 102, // 11: gitaly.ObjectsSizeRequest.repository:type_name -> gitaly.Repository 102, // 12: gitaly.ObjectFormatRequest.repository:type_name -> gitaly.Repository 104, // 13: gitaly.ObjectFormatResponse.format:type_name -> gitaly.ObjectFormat 102, // 14: gitaly.FetchBundleRequest.repository:type_name -> gitaly.Repository 102, // 15: gitaly.FetchRemoteRequest.repository:type_name -> gitaly.Repository 71, // 16: gitaly.FetchRemoteRequest.remote_params:type_name -> gitaly.Remote 102, // 17: gitaly.CreateRepositoryRequest.repository:type_name -> gitaly.Repository 104, // 18: gitaly.CreateRepositoryRequest.object_format:type_name -> gitaly.ObjectFormat 102, // 19: gitaly.GetArchiveRequest.repository:type_name -> gitaly.Repository 1, // 20: gitaly.GetArchiveRequest.format:type_name -> gitaly.GetArchiveRequest.Format 102, // 21: gitaly.HasLocalBranchesRequest.repository:type_name -> gitaly.Repository 102, // 22: gitaly.FetchSourceBranchRequest.repository:type_name -> gitaly.Repository 102, // 23: gitaly.FetchSourceBranchRequest.source_repository:type_name -> gitaly.Repository 102, // 24: gitaly.FsckRequest.repository:type_name -> gitaly.Repository 102, // 25: gitaly.WriteRefRequest.repository:type_name -> gitaly.Repository 102, // 26: gitaly.FindMergeBaseRequest.repository:type_name -> gitaly.Repository 102, // 27: gitaly.CreateForkRequest.repository:type_name -> gitaly.Repository 102, // 28: gitaly.CreateForkRequest.source_repository:type_name -> gitaly.Repository 102, // 29: gitaly.CreateRepositoryFromURLRequest.repository:type_name -> gitaly.Repository 105, // 30: gitaly.CreateRepositoryFromURLError.remote_not_found:type_name -> gitaly.RemoteNotFoundError 102, // 31: gitaly.CreateBundleRequest.repository:type_name -> gitaly.Repository 102, // 32: gitaly.CreateBundleFromRefListRequest.repository:type_name -> gitaly.Repository 102, // 33: gitaly.GenerateBundleURIRequest.repository:type_name -> gitaly.Repository 102, // 34: gitaly.GetConfigRequest.repository:type_name -> gitaly.Repository 102, // 35: gitaly.RestoreCustomHooksRequest.repository:type_name -> gitaly.Repository 102, // 36: gitaly.SetCustomHooksRequest.repository:type_name -> gitaly.Repository 102, // 37: gitaly.BackupCustomHooksRequest.repository:type_name -> gitaly.Repository 102, // 38: gitaly.GetCustomHooksRequest.repository:type_name -> gitaly.Repository 102, // 39: gitaly.CreateRepositoryFromBundleRequest.repository:type_name -> gitaly.Repository 102, // 40: gitaly.FindLicenseRequest.repository:type_name -> gitaly.Repository 102, // 41: gitaly.GetInfoAttributesRequest.repository:type_name -> gitaly.Repository 102, // 42: gitaly.CalculateChecksumRequest.repository:type_name -> gitaly.Repository 102, // 43: gitaly.GetSnapshotRequest.repository:type_name -> gitaly.Repository 102, // 44: gitaly.CreateRepositoryFromSnapshotRequest.repository:type_name -> gitaly.Repository 102, // 45: gitaly.GetRawChangesRequest.repository:type_name -> gitaly.Repository 98, // 46: gitaly.GetRawChangesResponse.raw_changes:type_name -> gitaly.GetRawChangesResponse.RawChange 102, // 47: gitaly.SearchFilesByNameRequest.repository:type_name -> gitaly.Repository 102, // 48: gitaly.SearchFilesByContentRequest.repository:type_name -> gitaly.Repository 102, // 49: gitaly.GetObjectDirectorySizeRequest.repository:type_name -> gitaly.Repository 102, // 50: gitaly.RemoveRepositoryRequest.repository:type_name -> gitaly.Repository 102, // 51: gitaly.ReplicateRepositoryRequest.repository:type_name -> gitaly.Repository 102, // 52: gitaly.ReplicateRepositoryRequest.source:type_name -> gitaly.Repository 102, // 53: gitaly.OptimizeRepositoryRequest.repository:type_name -> gitaly.Repository 3, // 54: gitaly.OptimizeRepositoryRequest.strategy:type_name -> gitaly.OptimizeRepositoryRequest.Strategy 102, // 55: gitaly.PruneUnreachableObjectsRequest.repository:type_name -> gitaly.Repository 102, // 56: gitaly.BackupRepositoryRequest.repository:type_name -> gitaly.Repository 102, // 57: gitaly.BackupRepositoryRequest.vanity_repository:type_name -> gitaly.Repository 102, // 58: gitaly.RestoreRepositoryRequest.repository:type_name -> gitaly.Repository 102, // 59: gitaly.RestoreRepositoryRequest.vanity_repository:type_name -> gitaly.Repository 102, // 60: gitaly.GetFileAttributesRequest.repository:type_name -> gitaly.Repository 101, // 61: gitaly.GetFileAttributesResponse.attribute_infos:type_name -> gitaly.GetFileAttributesResponse.AttributeInfo 102, // 62: gitaly.FastExportRequest.repository:type_name -> gitaly.Repository 102, // 63: gitaly.DryRunReftableMigrationRequest.repository:type_name -> gitaly.Repository 106, // 64: gitaly.DryRunReftableMigrationResponse.time:type_name -> google.protobuf.Duration 0, // 65: gitaly.RepositoryInfoResponse.ReferencesInfo.reference_backend:type_name -> gitaly.RepositoryInfoResponse.ReferencesInfo.ReferenceBackend 103, // 66: gitaly.RepositoryInfoResponse.AlternatesInfo.last_modified:type_name -> google.protobuf.Timestamp 2, // 67: gitaly.GetRawChangesResponse.RawChange.operation:type_name -> gitaly.GetRawChangesResponse.RawChange.Operation 4, // 68: gitaly.RepositoryService.RepositoryExists:input_type -> gitaly.RepositoryExistsRequest 6, // 69: gitaly.RepositoryService.RepositorySize:input_type -> gitaly.RepositorySizeRequest 8, // 70: gitaly.RepositoryService.RepositoryInfo:input_type -> gitaly.RepositoryInfoRequest 10, // 71: gitaly.RepositoryService.ObjectsSize:input_type -> gitaly.ObjectsSizeRequest 12, // 72: gitaly.RepositoryService.ObjectFormat:input_type -> gitaly.ObjectFormatRequest 16, // 73: gitaly.RepositoryService.FetchRemote:input_type -> gitaly.FetchRemoteRequest 18, // 74: gitaly.RepositoryService.CreateRepository:input_type -> gitaly.CreateRepositoryRequest 20, // 75: gitaly.RepositoryService.GetArchive:input_type -> gitaly.GetArchiveRequest 22, // 76: gitaly.RepositoryService.HasLocalBranches:input_type -> gitaly.HasLocalBranchesRequest 24, // 77: gitaly.RepositoryService.FetchSourceBranch:input_type -> gitaly.FetchSourceBranchRequest 26, // 78: gitaly.RepositoryService.Fsck:input_type -> gitaly.FsckRequest 28, // 79: gitaly.RepositoryService.WriteRef:input_type -> gitaly.WriteRefRequest 30, // 80: gitaly.RepositoryService.FindMergeBase:input_type -> gitaly.FindMergeBaseRequest 32, // 81: gitaly.RepositoryService.CreateFork:input_type -> gitaly.CreateForkRequest 34, // 82: gitaly.RepositoryService.CreateRepositoryFromURL:input_type -> gitaly.CreateRepositoryFromURLRequest 37, // 83: gitaly.RepositoryService.CreateBundle:input_type -> gitaly.CreateBundleRequest 39, // 84: gitaly.RepositoryService.CreateBundleFromRefList:input_type -> gitaly.CreateBundleFromRefListRequest 41, // 85: gitaly.RepositoryService.GenerateBundleURI:input_type -> gitaly.GenerateBundleURIRequest 14, // 86: gitaly.RepositoryService.FetchBundle:input_type -> gitaly.FetchBundleRequest 53, // 87: gitaly.RepositoryService.CreateRepositoryFromBundle:input_type -> gitaly.CreateRepositoryFromBundleRequest 43, // 88: gitaly.RepositoryService.GetConfig:input_type -> gitaly.GetConfigRequest 55, // 89: gitaly.RepositoryService.FindLicense:input_type -> gitaly.FindLicenseRequest 57, // 90: gitaly.RepositoryService.GetInfoAttributes:input_type -> gitaly.GetInfoAttributesRequest 59, // 91: gitaly.RepositoryService.CalculateChecksum:input_type -> gitaly.CalculateChecksumRequest 61, // 92: gitaly.RepositoryService.GetSnapshot:input_type -> gitaly.GetSnapshotRequest 63, // 93: gitaly.RepositoryService.CreateRepositoryFromSnapshot:input_type -> gitaly.CreateRepositoryFromSnapshotRequest 65, // 94: gitaly.RepositoryService.GetRawChanges:input_type -> gitaly.GetRawChangesRequest 69, // 95: gitaly.RepositoryService.SearchFilesByContent:input_type -> gitaly.SearchFilesByContentRequest 67, // 96: gitaly.RepositoryService.SearchFilesByName:input_type -> gitaly.SearchFilesByNameRequest 45, // 97: gitaly.RepositoryService.RestoreCustomHooks:input_type -> gitaly.RestoreCustomHooksRequest 46, // 98: gitaly.RepositoryService.SetCustomHooks:input_type -> gitaly.SetCustomHooksRequest 49, // 99: gitaly.RepositoryService.BackupCustomHooks:input_type -> gitaly.BackupCustomHooksRequest 50, // 100: gitaly.RepositoryService.GetCustomHooks:input_type -> gitaly.GetCustomHooksRequest 72, // 101: gitaly.RepositoryService.GetObjectDirectorySize:input_type -> gitaly.GetObjectDirectorySizeRequest 74, // 102: gitaly.RepositoryService.RemoveRepository:input_type -> gitaly.RemoveRepositoryRequest 76, // 103: gitaly.RepositoryService.ReplicateRepository:input_type -> gitaly.ReplicateRepositoryRequest 78, // 104: gitaly.RepositoryService.OptimizeRepository:input_type -> gitaly.OptimizeRepositoryRequest 80, // 105: gitaly.RepositoryService.PruneUnreachableObjects:input_type -> gitaly.PruneUnreachableObjectsRequest 82, // 106: gitaly.RepositoryService.BackupRepository:input_type -> gitaly.BackupRepositoryRequest 84, // 107: gitaly.RepositoryService.RestoreRepository:input_type -> gitaly.RestoreRepositoryRequest 86, // 108: gitaly.RepositoryService.GetFileAttributes:input_type -> gitaly.GetFileAttributesRequest 88, // 109: gitaly.RepositoryService.FastExport:input_type -> gitaly.FastExportRequest 90, // 110: gitaly.RepositoryService.DryRunReftableMigration:input_type -> gitaly.DryRunReftableMigrationRequest 5, // 111: gitaly.RepositoryService.RepositoryExists:output_type -> gitaly.RepositoryExistsResponse 7, // 112: gitaly.RepositoryService.RepositorySize:output_type -> gitaly.RepositorySizeResponse 9, // 113: gitaly.RepositoryService.RepositoryInfo:output_type -> gitaly.RepositoryInfoResponse 11, // 114: gitaly.RepositoryService.ObjectsSize:output_type -> gitaly.ObjectsSizeResponse 13, // 115: gitaly.RepositoryService.ObjectFormat:output_type -> gitaly.ObjectFormatResponse 17, // 116: gitaly.RepositoryService.FetchRemote:output_type -> gitaly.FetchRemoteResponse 19, // 117: gitaly.RepositoryService.CreateRepository:output_type -> gitaly.CreateRepositoryResponse 21, // 118: gitaly.RepositoryService.GetArchive:output_type -> gitaly.GetArchiveResponse 23, // 119: gitaly.RepositoryService.HasLocalBranches:output_type -> gitaly.HasLocalBranchesResponse 25, // 120: gitaly.RepositoryService.FetchSourceBranch:output_type -> gitaly.FetchSourceBranchResponse 27, // 121: gitaly.RepositoryService.Fsck:output_type -> gitaly.FsckResponse 29, // 122: gitaly.RepositoryService.WriteRef:output_type -> gitaly.WriteRefResponse 31, // 123: gitaly.RepositoryService.FindMergeBase:output_type -> gitaly.FindMergeBaseResponse 33, // 124: gitaly.RepositoryService.CreateFork:output_type -> gitaly.CreateForkResponse 35, // 125: gitaly.RepositoryService.CreateRepositoryFromURL:output_type -> gitaly.CreateRepositoryFromURLResponse 38, // 126: gitaly.RepositoryService.CreateBundle:output_type -> gitaly.CreateBundleResponse 40, // 127: gitaly.RepositoryService.CreateBundleFromRefList:output_type -> gitaly.CreateBundleFromRefListResponse 42, // 128: gitaly.RepositoryService.GenerateBundleURI:output_type -> gitaly.GenerateBundleURIResponse 15, // 129: gitaly.RepositoryService.FetchBundle:output_type -> gitaly.FetchBundleResponse 54, // 130: gitaly.RepositoryService.CreateRepositoryFromBundle:output_type -> gitaly.CreateRepositoryFromBundleResponse 44, // 131: gitaly.RepositoryService.GetConfig:output_type -> gitaly.GetConfigResponse 56, // 132: gitaly.RepositoryService.FindLicense:output_type -> gitaly.FindLicenseResponse 58, // 133: gitaly.RepositoryService.GetInfoAttributes:output_type -> gitaly.GetInfoAttributesResponse 60, // 134: gitaly.RepositoryService.CalculateChecksum:output_type -> gitaly.CalculateChecksumResponse 62, // 135: gitaly.RepositoryService.GetSnapshot:output_type -> gitaly.GetSnapshotResponse 64, // 136: gitaly.RepositoryService.CreateRepositoryFromSnapshot:output_type -> gitaly.CreateRepositoryFromSnapshotResponse 66, // 137: gitaly.RepositoryService.GetRawChanges:output_type -> gitaly.GetRawChangesResponse 70, // 138: gitaly.RepositoryService.SearchFilesByContent:output_type -> gitaly.SearchFilesByContentResponse 68, // 139: gitaly.RepositoryService.SearchFilesByName:output_type -> gitaly.SearchFilesByNameResponse 47, // 140: gitaly.RepositoryService.RestoreCustomHooks:output_type -> gitaly.RestoreCustomHooksResponse 48, // 141: gitaly.RepositoryService.SetCustomHooks:output_type -> gitaly.SetCustomHooksResponse 51, // 142: gitaly.RepositoryService.BackupCustomHooks:output_type -> gitaly.BackupCustomHooksResponse 52, // 143: gitaly.RepositoryService.GetCustomHooks:output_type -> gitaly.GetCustomHooksResponse 73, // 144: gitaly.RepositoryService.GetObjectDirectorySize:output_type -> gitaly.GetObjectDirectorySizeResponse 75, // 145: gitaly.RepositoryService.RemoveRepository:output_type -> gitaly.RemoveRepositoryResponse 77, // 146: gitaly.RepositoryService.ReplicateRepository:output_type -> gitaly.ReplicateRepositoryResponse 79, // 147: gitaly.RepositoryService.OptimizeRepository:output_type -> gitaly.OptimizeRepositoryResponse 81, // 148: gitaly.RepositoryService.PruneUnreachableObjects:output_type -> gitaly.PruneUnreachableObjectsResponse 83, // 149: gitaly.RepositoryService.BackupRepository:output_type -> gitaly.BackupRepositoryResponse 85, // 150: gitaly.RepositoryService.RestoreRepository:output_type -> gitaly.RestoreRepositoryResponse 87, // 151: gitaly.RepositoryService.GetFileAttributes:output_type -> gitaly.GetFileAttributesResponse 89, // 152: gitaly.RepositoryService.FastExport:output_type -> gitaly.FastExportResponse 91, // 153: gitaly.RepositoryService.DryRunReftableMigration:output_type -> gitaly.DryRunReftableMigrationResponse 111, // [111:154] is the sub-list for method output_type 68, // [68:111] is the sub-list for method input_type 68, // [68:68] is the sub-list for extension type_name 68, // [68:68] is the sub-list for extension extendee 0, // [0:68] is the sub-list for field type_name } func init() { file_repository_proto_init() } func file_repository_proto_init() { if File_repository_proto != nil { return } file_errors_proto_init() file_lint_proto_init() file_shared_proto_init() file_repository_proto_msgTypes[32].OneofWrappers = []any{ (*CreateRepositoryFromURLError_RemoteNotFound)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_repository_proto_rawDesc), len(file_repository_proto_rawDesc)), NumEnums: 4, NumMessages: 98, NumExtensions: 0, NumServices: 1, }, GoTypes: file_repository_proto_goTypes, DependencyIndexes: file_repository_proto_depIdxs, EnumInfos: file_repository_proto_enumTypes, MessageInfos: file_repository_proto_msgTypes, }.Build() File_repository_proto = out.File file_repository_proto_goTypes = nil file_repository_proto_depIdxs = nil }