From 2fc2f6bf721539423c9bb616c5c68fbcc40a709d Mon Sep 17 00:00:00 2001 From: LINCKODE Date: Mon, 2 Dec 2024 14:30:30 +0200 Subject: [PATCH 1/4] Implement fix for storing last tick quorum data per interval. --- protobuff/archive.pb.go | 1650 +++++++++++++++++---------------- protobuff/archive.proto | 4 + protobuff/archive_grpc.pb.go | 2 +- rpc/rpc_server.go | 84 +- rpc/v2_endpoints.go | 17 +- store/keys.go | 36 +- store/store.go | 66 +- validator/quorum/validator.go | 2 +- validator/tick/models.go | 60 ++ 9 files changed, 1016 insertions(+), 905 deletions(-) diff --git a/protobuff/archive.pb.go b/protobuff/archive.pb.go index 1512451..8eaf195 100644 --- a/protobuff/archive.pb.go +++ b/protobuff/archive.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v5.28.2 +// protoc v5.28.3 // source: archive.proto package protobuff @@ -1321,6 +1321,51 @@ func (x *QuorumDiffStored) GetSignatureHex() string { return "" } +type LastTickQuorumDataPerEpochIntervals struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + QuorumDataPerInterval map[int32]*QuorumTickData `protobuf:"bytes,1,rep,name=quorum_data_per_interval,json=quorumDataPerInterval,proto3" json:"quorum_data_per_interval,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *LastTickQuorumDataPerEpochIntervals) Reset() { + *x = LastTickQuorumDataPerEpochIntervals{} + mi := &file_archive_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LastTickQuorumDataPerEpochIntervals) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LastTickQuorumDataPerEpochIntervals) ProtoMessage() {} + +func (x *LastTickQuorumDataPerEpochIntervals) ProtoReflect() protoreflect.Message { + mi := &file_archive_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 LastTickQuorumDataPerEpochIntervals.ProtoReflect.Descriptor instead. +func (*LastTickQuorumDataPerEpochIntervals) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{23} +} + +func (x *LastTickQuorumDataPerEpochIntervals) GetQuorumDataPerInterval() map[int32]*QuorumTickData { + if x != nil { + return x.QuorumDataPerInterval + } + return nil +} + type GetQuorumTickDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1331,7 +1376,7 @@ type GetQuorumTickDataRequest struct { func (x *GetQuorumTickDataRequest) Reset() { *x = GetQuorumTickDataRequest{} - mi := &file_archive_proto_msgTypes[23] + mi := &file_archive_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1343,7 +1388,7 @@ func (x *GetQuorumTickDataRequest) String() string { func (*GetQuorumTickDataRequest) ProtoMessage() {} func (x *GetQuorumTickDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[23] + mi := &file_archive_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1356,7 +1401,7 @@ func (x *GetQuorumTickDataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetQuorumTickDataRequest.ProtoReflect.Descriptor instead. func (*GetQuorumTickDataRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{23} + return file_archive_proto_rawDescGZIP(), []int{24} } func (x *GetQuorumTickDataRequest) GetTickNumber() uint32 { @@ -1376,7 +1421,7 @@ type GetQuorumTickDataResponse struct { func (x *GetQuorumTickDataResponse) Reset() { *x = GetQuorumTickDataResponse{} - mi := &file_archive_proto_msgTypes[24] + mi := &file_archive_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1433,7 @@ func (x *GetQuorumTickDataResponse) String() string { func (*GetQuorumTickDataResponse) ProtoMessage() {} func (x *GetQuorumTickDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[24] + mi := &file_archive_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1446,7 @@ func (x *GetQuorumTickDataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetQuorumTickDataResponse.ProtoReflect.Descriptor instead. func (*GetQuorumTickDataResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{24} + return file_archive_proto_rawDescGZIP(), []int{25} } func (x *GetQuorumTickDataResponse) GetQuorumTickData() *QuorumTickData { @@ -1421,7 +1466,7 @@ type GetQuorumTickDataResponseStored struct { func (x *GetQuorumTickDataResponseStored) Reset() { *x = GetQuorumTickDataResponseStored{} - mi := &file_archive_proto_msgTypes[25] + mi := &file_archive_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1433,7 +1478,7 @@ func (x *GetQuorumTickDataResponseStored) String() string { func (*GetQuorumTickDataResponseStored) ProtoMessage() {} func (x *GetQuorumTickDataResponseStored) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[25] + mi := &file_archive_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1446,7 +1491,7 @@ func (x *GetQuorumTickDataResponseStored) ProtoReflect() protoreflect.Message { // Deprecated: Use GetQuorumTickDataResponseStored.ProtoReflect.Descriptor instead. func (*GetQuorumTickDataResponseStored) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{25} + return file_archive_proto_rawDescGZIP(), []int{26} } func (x *GetQuorumTickDataResponseStored) GetQuorumTickData() *QuorumTickDataStored { @@ -1468,7 +1513,7 @@ type Computors struct { func (x *Computors) Reset() { *x = Computors{} - mi := &file_archive_proto_msgTypes[26] + mi := &file_archive_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1480,7 +1525,7 @@ func (x *Computors) String() string { func (*Computors) ProtoMessage() {} func (x *Computors) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[26] + mi := &file_archive_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1493,7 +1538,7 @@ func (x *Computors) ProtoReflect() protoreflect.Message { // Deprecated: Use Computors.ProtoReflect.Descriptor instead. func (*Computors) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{26} + return file_archive_proto_rawDescGZIP(), []int{27} } func (x *Computors) GetEpoch() uint32 { @@ -1527,7 +1572,7 @@ type GetComputorsRequest struct { func (x *GetComputorsRequest) Reset() { *x = GetComputorsRequest{} - mi := &file_archive_proto_msgTypes[27] + mi := &file_archive_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1539,7 +1584,7 @@ func (x *GetComputorsRequest) String() string { func (*GetComputorsRequest) ProtoMessage() {} func (x *GetComputorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[27] + mi := &file_archive_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1552,7 +1597,7 @@ func (x *GetComputorsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetComputorsRequest.ProtoReflect.Descriptor instead. func (*GetComputorsRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{27} + return file_archive_proto_rawDescGZIP(), []int{28} } func (x *GetComputorsRequest) GetEpoch() uint32 { @@ -1572,7 +1617,7 @@ type GetComputorsResponse struct { func (x *GetComputorsResponse) Reset() { *x = GetComputorsResponse{} - mi := &file_archive_proto_msgTypes[28] + mi := &file_archive_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1584,7 +1629,7 @@ func (x *GetComputorsResponse) String() string { func (*GetComputorsResponse) ProtoMessage() {} func (x *GetComputorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[28] + mi := &file_archive_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1597,7 +1642,7 @@ func (x *GetComputorsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetComputorsResponse.ProtoReflect.Descriptor instead. func (*GetComputorsResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{28} + return file_archive_proto_rawDescGZIP(), []int{29} } func (x *GetComputorsResponse) GetComputors() *Computors { @@ -1619,7 +1664,7 @@ type TransferTransactionsPerTick struct { func (x *TransferTransactionsPerTick) Reset() { *x = TransferTransactionsPerTick{} - mi := &file_archive_proto_msgTypes[29] + mi := &file_archive_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1676,7 @@ func (x *TransferTransactionsPerTick) String() string { func (*TransferTransactionsPerTick) ProtoMessage() {} func (x *TransferTransactionsPerTick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[29] + mi := &file_archive_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1689,7 @@ func (x *TransferTransactionsPerTick) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferTransactionsPerTick.ProtoReflect.Descriptor instead. func (*TransferTransactionsPerTick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{29} + return file_archive_proto_rawDescGZIP(), []int{30} } func (x *TransferTransactionsPerTick) GetTickNumber() uint32 { @@ -1679,7 +1724,7 @@ type ProcessedTick struct { func (x *ProcessedTick) Reset() { *x = ProcessedTick{} - mi := &file_archive_proto_msgTypes[30] + mi := &file_archive_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1691,7 +1736,7 @@ func (x *ProcessedTick) String() string { func (*ProcessedTick) ProtoMessage() {} func (x *ProcessedTick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[30] + mi := &file_archive_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1704,7 +1749,7 @@ func (x *ProcessedTick) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTick.ProtoReflect.Descriptor instead. func (*ProcessedTick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{30} + return file_archive_proto_rawDescGZIP(), []int{31} } func (x *ProcessedTick) GetTickNumber() uint32 { @@ -1735,7 +1780,7 @@ type GetStatusResponse struct { func (x *GetStatusResponse) Reset() { *x = GetStatusResponse{} - mi := &file_archive_proto_msgTypes[31] + mi := &file_archive_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1747,7 +1792,7 @@ func (x *GetStatusResponse) String() string { func (*GetStatusResponse) ProtoMessage() {} func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[31] + mi := &file_archive_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1760,7 +1805,7 @@ func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusResponse.ProtoReflect.Descriptor instead. func (*GetStatusResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{31} + return file_archive_proto_rawDescGZIP(), []int{32} } func (x *GetStatusResponse) GetLastProcessedTick() *ProcessedTick { @@ -1808,7 +1853,7 @@ type GetHealthCheckResponse struct { func (x *GetHealthCheckResponse) Reset() { *x = GetHealthCheckResponse{} - mi := &file_archive_proto_msgTypes[32] + mi := &file_archive_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1820,7 +1865,7 @@ func (x *GetHealthCheckResponse) String() string { func (*GetHealthCheckResponse) ProtoMessage() {} func (x *GetHealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[32] + mi := &file_archive_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1833,7 +1878,7 @@ func (x *GetHealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetHealthCheckResponse.ProtoReflect.Descriptor instead. func (*GetHealthCheckResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{32} + return file_archive_proto_rawDescGZIP(), []int{33} } func (x *GetHealthCheckResponse) GetStatus() bool { @@ -1855,7 +1900,7 @@ type GetTransferTransactionsPerTickRequest struct { func (x *GetTransferTransactionsPerTickRequest) Reset() { *x = GetTransferTransactionsPerTickRequest{} - mi := &file_archive_proto_msgTypes[33] + mi := &file_archive_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1867,7 +1912,7 @@ func (x *GetTransferTransactionsPerTickRequest) String() string { func (*GetTransferTransactionsPerTickRequest) ProtoMessage() {} func (x *GetTransferTransactionsPerTickRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[33] + mi := &file_archive_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1880,7 +1925,7 @@ func (x *GetTransferTransactionsPerTickRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use GetTransferTransactionsPerTickRequest.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{33} + return file_archive_proto_rawDescGZIP(), []int{34} } func (x *GetTransferTransactionsPerTickRequest) GetIdentity() string { @@ -1914,7 +1959,7 @@ type GetTransferTransactionsPerTickResponse struct { func (x *GetTransferTransactionsPerTickResponse) Reset() { *x = GetTransferTransactionsPerTickResponse{} - mi := &file_archive_proto_msgTypes[34] + mi := &file_archive_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1926,7 +1971,7 @@ func (x *GetTransferTransactionsPerTickResponse) String() string { func (*GetTransferTransactionsPerTickResponse) ProtoMessage() {} func (x *GetTransferTransactionsPerTickResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[34] + mi := &file_archive_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1939,7 +1984,7 @@ func (x *GetTransferTransactionsPerTickResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use GetTransferTransactionsPerTickResponse.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{34} + return file_archive_proto_rawDescGZIP(), []int{35} } func (x *GetTransferTransactionsPerTickResponse) GetTransferTransactionsPerTick() []*TransferTransactionsPerTick { @@ -1959,7 +2004,7 @@ type GetChainHashRequest struct { func (x *GetChainHashRequest) Reset() { *x = GetChainHashRequest{} - mi := &file_archive_proto_msgTypes[35] + mi := &file_archive_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1971,7 +2016,7 @@ func (x *GetChainHashRequest) String() string { func (*GetChainHashRequest) ProtoMessage() {} func (x *GetChainHashRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[35] + mi := &file_archive_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1984,7 +2029,7 @@ func (x *GetChainHashRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChainHashRequest.ProtoReflect.Descriptor instead. func (*GetChainHashRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{35} + return file_archive_proto_rawDescGZIP(), []int{36} } func (x *GetChainHashRequest) GetTickNumber() uint32 { @@ -2004,7 +2049,7 @@ type GetChainHashResponse struct { func (x *GetChainHashResponse) Reset() { *x = GetChainHashResponse{} - mi := &file_archive_proto_msgTypes[36] + mi := &file_archive_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2016,7 +2061,7 @@ func (x *GetChainHashResponse) String() string { func (*GetChainHashResponse) ProtoMessage() {} func (x *GetChainHashResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[36] + mi := &file_archive_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2029,7 +2074,7 @@ func (x *GetChainHashResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChainHashResponse.ProtoReflect.Descriptor instead. func (*GetChainHashResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{36} + return file_archive_proto_rawDescGZIP(), []int{37} } func (x *GetChainHashResponse) GetHexDigest() string { @@ -2050,7 +2095,7 @@ type ProcessedTickInterval struct { func (x *ProcessedTickInterval) Reset() { *x = ProcessedTickInterval{} - mi := &file_archive_proto_msgTypes[37] + mi := &file_archive_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2062,7 +2107,7 @@ func (x *ProcessedTickInterval) String() string { func (*ProcessedTickInterval) ProtoMessage() {} func (x *ProcessedTickInterval) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[37] + mi := &file_archive_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2075,7 +2120,7 @@ func (x *ProcessedTickInterval) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTickInterval.ProtoReflect.Descriptor instead. func (*ProcessedTickInterval) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{37} + return file_archive_proto_rawDescGZIP(), []int{38} } func (x *ProcessedTickInterval) GetInitialProcessedTick() uint32 { @@ -2103,7 +2148,7 @@ type ProcessedTickIntervalsPerEpoch struct { func (x *ProcessedTickIntervalsPerEpoch) Reset() { *x = ProcessedTickIntervalsPerEpoch{} - mi := &file_archive_proto_msgTypes[38] + mi := &file_archive_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2115,7 +2160,7 @@ func (x *ProcessedTickIntervalsPerEpoch) String() string { func (*ProcessedTickIntervalsPerEpoch) ProtoMessage() {} func (x *ProcessedTickIntervalsPerEpoch) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[38] + mi := &file_archive_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2128,7 +2173,7 @@ func (x *ProcessedTickIntervalsPerEpoch) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTickIntervalsPerEpoch.ProtoReflect.Descriptor instead. func (*ProcessedTickIntervalsPerEpoch) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{38} + return file_archive_proto_rawDescGZIP(), []int{39} } func (x *ProcessedTickIntervalsPerEpoch) GetEpoch() uint32 { @@ -2163,7 +2208,7 @@ type Tick struct { func (x *Tick) Reset() { *x = Tick{} - mi := &file_archive_proto_msgTypes[39] + mi := &file_archive_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2175,7 +2220,7 @@ func (x *Tick) String() string { func (*Tick) ProtoMessage() {} func (x *Tick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[39] + mi := &file_archive_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2188,7 +2233,7 @@ func (x *Tick) ProtoReflect() protoreflect.Message { // Deprecated: Use Tick.ProtoReflect.Descriptor instead. func (*Tick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{39} + return file_archive_proto_rawDescGZIP(), []int{40} } func (x *Tick) GetComputorIndex() uint32 { @@ -2264,7 +2309,7 @@ type GetTickResponseV2 struct { func (x *GetTickResponseV2) Reset() { *x = GetTickResponseV2{} - mi := &file_archive_proto_msgTypes[40] + mi := &file_archive_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2276,7 +2321,7 @@ func (x *GetTickResponseV2) String() string { func (*GetTickResponseV2) ProtoMessage() {} func (x *GetTickResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[40] + mi := &file_archive_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2289,7 +2334,7 @@ func (x *GetTickResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickResponseV2.ProtoReflect.Descriptor instead. func (*GetTickResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{40} + return file_archive_proto_rawDescGZIP(), []int{41} } func (x *GetTickResponseV2) GetTick_Data() *Tick { @@ -2311,7 +2356,7 @@ type PerTickIdentityTransfers struct { func (x *PerTickIdentityTransfers) Reset() { *x = PerTickIdentityTransfers{} - mi := &file_archive_proto_msgTypes[41] + mi := &file_archive_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2323,7 +2368,7 @@ func (x *PerTickIdentityTransfers) String() string { func (*PerTickIdentityTransfers) ProtoMessage() {} func (x *PerTickIdentityTransfers) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[41] + mi := &file_archive_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2336,7 +2381,7 @@ func (x *PerTickIdentityTransfers) ProtoReflect() protoreflect.Message { // Deprecated: Use PerTickIdentityTransfers.ProtoReflect.Descriptor instead. func (*PerTickIdentityTransfers) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{41} + return file_archive_proto_rawDescGZIP(), []int{42} } func (x *PerTickIdentityTransfers) GetTickNumber() uint32 { @@ -2370,7 +2415,7 @@ type GetIdentityTransfersInTickRangeResponseV2 struct { func (x *GetIdentityTransfersInTickRangeResponseV2) Reset() { *x = GetIdentityTransfersInTickRangeResponseV2{} - mi := &file_archive_proto_msgTypes[42] + mi := &file_archive_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2382,7 +2427,7 @@ func (x *GetIdentityTransfersInTickRangeResponseV2) String() string { func (*GetIdentityTransfersInTickRangeResponseV2) ProtoMessage() {} func (x *GetIdentityTransfersInTickRangeResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[42] + mi := &file_archive_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2395,7 +2440,7 @@ func (x *GetIdentityTransfersInTickRangeResponseV2) ProtoReflect() protoreflect. // Deprecated: Use GetIdentityTransfersInTickRangeResponseV2.ProtoReflect.Descriptor instead. func (*GetIdentityTransfersInTickRangeResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{42} + return file_archive_proto_rawDescGZIP(), []int{43} } func (x *GetIdentityTransfersInTickRangeResponseV2) GetTransactions() []*PerTickIdentityTransfers { @@ -2417,7 +2462,7 @@ type SendManyTransfer struct { func (x *SendManyTransfer) Reset() { *x = SendManyTransfer{} - mi := &file_archive_proto_msgTypes[43] + mi := &file_archive_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2429,7 +2474,7 @@ func (x *SendManyTransfer) String() string { func (*SendManyTransfer) ProtoMessage() {} func (x *SendManyTransfer) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[43] + mi := &file_archive_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2442,7 +2487,7 @@ func (x *SendManyTransfer) ProtoReflect() protoreflect.Message { // Deprecated: Use SendManyTransfer.ProtoReflect.Descriptor instead. func (*SendManyTransfer) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{43} + return file_archive_proto_rawDescGZIP(), []int{44} } func (x *SendManyTransfer) GetDestId() string { @@ -2474,7 +2519,7 @@ type SendManyTransaction struct { func (x *SendManyTransaction) Reset() { *x = SendManyTransaction{} - mi := &file_archive_proto_msgTypes[44] + mi := &file_archive_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2486,7 +2531,7 @@ func (x *SendManyTransaction) String() string { func (*SendManyTransaction) ProtoMessage() {} func (x *SendManyTransaction) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[44] + mi := &file_archive_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2499,7 +2544,7 @@ func (x *SendManyTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use SendManyTransaction.ProtoReflect.Descriptor instead. func (*SendManyTransaction) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{44} + return file_archive_proto_rawDescGZIP(), []int{45} } func (x *SendManyTransaction) GetSourceId() string { @@ -2557,7 +2602,7 @@ type SendManyTransactionData struct { func (x *SendManyTransactionData) Reset() { *x = SendManyTransactionData{} - mi := &file_archive_proto_msgTypes[45] + mi := &file_archive_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2569,7 +2614,7 @@ func (x *SendManyTransactionData) String() string { func (*SendManyTransactionData) ProtoMessage() {} func (x *SendManyTransactionData) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[45] + mi := &file_archive_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2582,7 +2627,7 @@ func (x *SendManyTransactionData) ProtoReflect() protoreflect.Message { // Deprecated: Use SendManyTransactionData.ProtoReflect.Descriptor instead. func (*SendManyTransactionData) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{45} + return file_archive_proto_rawDescGZIP(), []int{46} } func (x *SendManyTransactionData) GetTransaction() *SendManyTransaction { @@ -2616,7 +2661,7 @@ type GetSendManyTransactionRequestV2 struct { func (x *GetSendManyTransactionRequestV2) Reset() { *x = GetSendManyTransactionRequestV2{} - mi := &file_archive_proto_msgTypes[46] + mi := &file_archive_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2628,7 +2673,7 @@ func (x *GetSendManyTransactionRequestV2) String() string { func (*GetSendManyTransactionRequestV2) ProtoMessage() {} func (x *GetSendManyTransactionRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[46] + mi := &file_archive_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2641,7 +2686,7 @@ func (x *GetSendManyTransactionRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSendManyTransactionRequestV2.ProtoReflect.Descriptor instead. func (*GetSendManyTransactionRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{46} + return file_archive_proto_rawDescGZIP(), []int{47} } func (x *GetSendManyTransactionRequestV2) GetTxId() string { @@ -2663,7 +2708,7 @@ type GetSendManyTransactionResponseV2 struct { func (x *GetSendManyTransactionResponseV2) Reset() { *x = GetSendManyTransactionResponseV2{} - mi := &file_archive_proto_msgTypes[47] + mi := &file_archive_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2675,7 +2720,7 @@ func (x *GetSendManyTransactionResponseV2) String() string { func (*GetSendManyTransactionResponseV2) ProtoMessage() {} func (x *GetSendManyTransactionResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[47] + mi := &file_archive_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2688,7 +2733,7 @@ func (x *GetSendManyTransactionResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSendManyTransactionResponseV2.ProtoReflect.Descriptor instead. func (*GetSendManyTransactionResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{47} + return file_archive_proto_rawDescGZIP(), []int{48} } func (x *GetSendManyTransactionResponseV2) GetTransaction() *SendManyTransaction { @@ -2725,7 +2770,7 @@ type TransactionData struct { func (x *TransactionData) Reset() { *x = TransactionData{} - mi := &file_archive_proto_msgTypes[48] + mi := &file_archive_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2737,7 +2782,7 @@ func (x *TransactionData) String() string { func (*TransactionData) ProtoMessage() {} func (x *TransactionData) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[48] + mi := &file_archive_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2750,7 +2795,7 @@ func (x *TransactionData) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionData.ProtoReflect.Descriptor instead. func (*TransactionData) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{48} + return file_archive_proto_rawDescGZIP(), []int{49} } func (x *TransactionData) GetTransaction() *Transaction { @@ -2784,7 +2829,7 @@ type GetLatestTickResponse struct { func (x *GetLatestTickResponse) Reset() { *x = GetLatestTickResponse{} - mi := &file_archive_proto_msgTypes[49] + mi := &file_archive_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2796,7 +2841,7 @@ func (x *GetLatestTickResponse) String() string { func (*GetLatestTickResponse) ProtoMessage() {} func (x *GetLatestTickResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[49] + mi := &file_archive_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2809,7 +2854,7 @@ func (x *GetLatestTickResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestTickResponse.ProtoReflect.Descriptor instead. func (*GetLatestTickResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{49} + return file_archive_proto_rawDescGZIP(), []int{50} } func (x *GetLatestTickResponse) GetLatestTick() uint32 { @@ -2830,7 +2875,7 @@ type GetTickRequestV2 struct { func (x *GetTickRequestV2) Reset() { *x = GetTickRequestV2{} - mi := &file_archive_proto_msgTypes[50] + mi := &file_archive_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2842,7 +2887,7 @@ func (x *GetTickRequestV2) String() string { func (*GetTickRequestV2) ProtoMessage() {} func (x *GetTickRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[50] + mi := &file_archive_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2855,7 +2900,7 @@ func (x *GetTickRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickRequestV2.ProtoReflect.Descriptor instead. func (*GetTickRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{50} + return file_archive_proto_rawDescGZIP(), []int{51} } func (x *GetTickRequestV2) GetTickNumber() uint32 { @@ -2875,7 +2920,7 @@ type GetTickTransactionsResponseV2 struct { func (x *GetTickTransactionsResponseV2) Reset() { *x = GetTickTransactionsResponseV2{} - mi := &file_archive_proto_msgTypes[51] + mi := &file_archive_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2887,7 +2932,7 @@ func (x *GetTickTransactionsResponseV2) String() string { func (*GetTickTransactionsResponseV2) ProtoMessage() {} func (x *GetTickTransactionsResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[51] + mi := &file_archive_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2900,7 +2945,7 @@ func (x *GetTickTransactionsResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickTransactionsResponseV2.ProtoReflect.Descriptor instead. func (*GetTickTransactionsResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{51} + return file_archive_proto_rawDescGZIP(), []int{52} } func (x *GetTickTransactionsResponseV2) GetTransactions() []*TransactionData { @@ -2921,7 +2966,7 @@ type GetTransactionRequestV2 struct { func (x *GetTransactionRequestV2) Reset() { *x = GetTransactionRequestV2{} - mi := &file_archive_proto_msgTypes[52] + mi := &file_archive_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2933,7 +2978,7 @@ func (x *GetTransactionRequestV2) String() string { func (*GetTransactionRequestV2) ProtoMessage() {} func (x *GetTransactionRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[52] + mi := &file_archive_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2946,7 +2991,7 @@ func (x *GetTransactionRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionRequestV2.ProtoReflect.Descriptor instead. func (*GetTransactionRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{52} + return file_archive_proto_rawDescGZIP(), []int{53} } func (x *GetTransactionRequestV2) GetTxId() string { @@ -2968,7 +3013,7 @@ type GetTransactionResponseV2 struct { func (x *GetTransactionResponseV2) Reset() { *x = GetTransactionResponseV2{} - mi := &file_archive_proto_msgTypes[53] + mi := &file_archive_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2980,7 +3025,7 @@ func (x *GetTransactionResponseV2) String() string { func (*GetTransactionResponseV2) ProtoMessage() {} func (x *GetTransactionResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[53] + mi := &file_archive_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2993,7 +3038,7 @@ func (x *GetTransactionResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionResponseV2.ProtoReflect.Descriptor instead. func (*GetTransactionResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{53} + return file_archive_proto_rawDescGZIP(), []int{54} } func (x *GetTransactionResponseV2) GetTransaction() *Transaction { @@ -3029,7 +3074,7 @@ type GetTickTransactionsRequestV2 struct { func (x *GetTickTransactionsRequestV2) Reset() { *x = GetTickTransactionsRequestV2{} - mi := &file_archive_proto_msgTypes[54] + mi := &file_archive_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3041,7 +3086,7 @@ func (x *GetTickTransactionsRequestV2) String() string { func (*GetTickTransactionsRequestV2) ProtoMessage() {} func (x *GetTickTransactionsRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[54] + mi := &file_archive_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3054,7 +3099,7 @@ func (x *GetTickTransactionsRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickTransactionsRequestV2.ProtoReflect.Descriptor instead. func (*GetTickTransactionsRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{54} + return file_archive_proto_rawDescGZIP(), []int{55} } func (x *GetTickTransactionsRequestV2) GetTickNumber() uint32 { @@ -3092,7 +3137,7 @@ type GetTransferTransactionsPerTickRequestV2 struct { func (x *GetTransferTransactionsPerTickRequestV2) Reset() { *x = GetTransferTransactionsPerTickRequestV2{} - mi := &file_archive_proto_msgTypes[55] + mi := &file_archive_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3104,7 +3149,7 @@ func (x *GetTransferTransactionsPerTickRequestV2) String() string { func (*GetTransferTransactionsPerTickRequestV2) ProtoMessage() {} func (x *GetTransferTransactionsPerTickRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[55] + mi := &file_archive_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3117,7 +3162,7 @@ func (x *GetTransferTransactionsPerTickRequestV2) ProtoReflect() protoreflect.Me // Deprecated: Use GetTransferTransactionsPerTickRequestV2.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{55} + return file_archive_proto_rawDescGZIP(), []int{56} } func (x *GetTransferTransactionsPerTickRequestV2) GetIdentity() string { @@ -3170,7 +3215,7 @@ type Pagination struct { func (x *Pagination) Reset() { *x = Pagination{} - mi := &file_archive_proto_msgTypes[56] + mi := &file_archive_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3182,7 +3227,7 @@ func (x *Pagination) String() string { func (*Pagination) ProtoMessage() {} func (x *Pagination) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[56] + mi := &file_archive_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3195,7 +3240,7 @@ func (x *Pagination) ProtoReflect() protoreflect.Message { // Deprecated: Use Pagination.ProtoReflect.Descriptor instead. func (*Pagination) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{56} + return file_archive_proto_rawDescGZIP(), []int{57} } func (x *Pagination) GetTotalRecords() int32 { @@ -3252,7 +3297,7 @@ type GetEmptyTickListRequestV2 struct { func (x *GetEmptyTickListRequestV2) Reset() { *x = GetEmptyTickListRequestV2{} - mi := &file_archive_proto_msgTypes[57] + mi := &file_archive_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3264,7 +3309,7 @@ func (x *GetEmptyTickListRequestV2) String() string { func (*GetEmptyTickListRequestV2) ProtoMessage() {} func (x *GetEmptyTickListRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[57] + mi := &file_archive_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3277,7 +3322,7 @@ func (x *GetEmptyTickListRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEmptyTickListRequestV2.ProtoReflect.Descriptor instead. func (*GetEmptyTickListRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{57} + return file_archive_proto_rawDescGZIP(), []int{58} } func (x *GetEmptyTickListRequestV2) GetEpoch() uint32 { @@ -3312,7 +3357,7 @@ type GetEmptyTickListResponseV2 struct { func (x *GetEmptyTickListResponseV2) Reset() { *x = GetEmptyTickListResponseV2{} - mi := &file_archive_proto_msgTypes[58] + mi := &file_archive_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3324,7 +3369,7 @@ func (x *GetEmptyTickListResponseV2) String() string { func (*GetEmptyTickListResponseV2) ProtoMessage() {} func (x *GetEmptyTickListResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[58] + mi := &file_archive_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3337,7 +3382,7 @@ func (x *GetEmptyTickListResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEmptyTickListResponseV2.ProtoReflect.Descriptor instead. func (*GetEmptyTickListResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{58} + return file_archive_proto_rawDescGZIP(), []int{59} } func (x *GetEmptyTickListResponseV2) GetPagination() *Pagination { @@ -3365,7 +3410,7 @@ type TickStatus struct { func (x *TickStatus) Reset() { *x = TickStatus{} - mi := &file_archive_proto_msgTypes[59] + mi := &file_archive_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3377,7 +3422,7 @@ func (x *TickStatus) String() string { func (*TickStatus) ProtoMessage() {} func (x *TickStatus) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[59] + mi := &file_archive_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3390,7 +3435,7 @@ func (x *TickStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use TickStatus.ProtoReflect.Descriptor instead. func (*TickStatus) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{59} + return file_archive_proto_rawDescGZIP(), []int{60} } func (x *TickStatus) GetTickNumber() uint32 { @@ -3420,7 +3465,7 @@ type GetEpochTickListRequestV2 struct { func (x *GetEpochTickListRequestV2) Reset() { *x = GetEpochTickListRequestV2{} - mi := &file_archive_proto_msgTypes[60] + mi := &file_archive_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3432,7 +3477,7 @@ func (x *GetEpochTickListRequestV2) String() string { func (*GetEpochTickListRequestV2) ProtoMessage() {} func (x *GetEpochTickListRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[60] + mi := &file_archive_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3445,7 +3490,7 @@ func (x *GetEpochTickListRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEpochTickListRequestV2.ProtoReflect.Descriptor instead. func (*GetEpochTickListRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{60} + return file_archive_proto_rawDescGZIP(), []int{61} } func (x *GetEpochTickListRequestV2) GetEpoch() uint32 { @@ -3487,7 +3532,7 @@ type GetEpochTickListResponseV2 struct { func (x *GetEpochTickListResponseV2) Reset() { *x = GetEpochTickListResponseV2{} - mi := &file_archive_proto_msgTypes[61] + mi := &file_archive_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3499,7 +3544,7 @@ func (x *GetEpochTickListResponseV2) String() string { func (*GetEpochTickListResponseV2) ProtoMessage() {} func (x *GetEpochTickListResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[61] + mi := &file_archive_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3512,7 +3557,7 @@ func (x *GetEpochTickListResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEpochTickListResponseV2.ProtoReflect.Descriptor instead. func (*GetEpochTickListResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{61} + return file_archive_proto_rawDescGZIP(), []int{62} } func (x *GetEpochTickListResponseV2) GetPagination() *Pagination { @@ -3761,502 +3806,531 @@ var file_archive_proto_rawDesc = []byte{ 0x64, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x3b, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x51, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x10, 0x71, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0xaf, 0x02, 0x0a, 0x23, 0x4c, 0x61, + 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x73, 0x12, 0x92, 0x01, 0x0a, 0x18, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x73, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x50, + 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x15, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x50, 0x65, 0x72, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x73, 0x0a, 0x1a, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x44, 0x61, 0x74, 0x61, 0x50, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, - 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x66, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x2b, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x09, 0x63, 0x6f, - 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, - 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0xed, 0x05, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, - 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x90, 0x01, 0x0a, 0x1e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x4c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, - 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x0d, 0x73, - 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, - 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, - 0x73, 0x12, 0x85, 0x01, 0x0a, 0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x70, - 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, - 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x1e, 0x70, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x77, 0x0a, 0x15, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x51, + 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, + 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x72, + 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x1f, 0x47, 0x65, + 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x59, 0x0a, + 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x66, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, + 0x22, 0x2b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5a, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, - 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, - 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x1f, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, - 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7d, 0x0a, 0x25, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x26, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x71, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x1b, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, - 0x54, 0x69, 0x63, 0x6b, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, - 0x6b, 0x22, 0x36, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, - 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x22, 0x7d, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, - 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, - 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x61, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, - 0x86, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x22, 0xb1, 0x02, 0x0a, 0x04, 0x54, 0x69, 0x63, - 0x6b, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, - 0x0a, 0x76, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x66, - 0x65, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x46, 0x65, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x51, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, - 0x32, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, - 0xa7, 0x01, 0x0a, 0x18, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, - 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x29, 0x47, 0x65, - 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x57, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0xed, 0x05, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x58, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, - 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x43, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, - 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, - 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x09, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, - 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x12, 0x13, - 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x78, 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x90, 0x01, 0x0a, 0x1e, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, + 0x63, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, + 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x54, 0x0a, + 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, + 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, + 0x63, 0x6b, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, + 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x1e, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x77, 0x0a, 0x15, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, + 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x12, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x1f, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, + 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7d, 0x0a, 0x25, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x26, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x70, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, + 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, + 0x69, 0x63, 0x6b, 0x22, 0x36, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x78, 0x44, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x22, 0x7d, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, + 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, + 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, + 0x6b, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, + 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x22, 0xb1, 0x02, 0x0a, 0x04, 0x54, + 0x69, 0x63, 0x6b, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x36, - 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, - 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x50, 0x0a, 0x0b, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x65, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x51, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x56, 0x32, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x44, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x29, + 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x57, 0x0a, 0x0c, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x72, 0x54, + 0x69, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x43, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x49, 0x0a, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, - 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x48, - 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, - 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, - 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x22, - 0x33, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, - 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x56, 0x32, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, - 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x79, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, - 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, - 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, - 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x63, 0x5f, 0x6f, 0x6e, 0x6c, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x63, 0x4f, 0x6e, 0x6c, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x22, 0xd4, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x65, 0x78, - 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, - 0x73, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x72, - 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x67, 0x65, 0x22, 0x62, 0x0a, 0x19, 0x47, 0x65, - 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x83, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x45, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, - 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, - 0x69, 0x63, 0x6b, 0x73, 0x22, 0x48, 0x0a, 0x0a, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x76, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xa0, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, + 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, + 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, + 0x22, 0x36, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x56, 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x50, 0x0a, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x98, 0x01, 0x0a, + 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, + 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, + 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x22, 0x33, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x56, 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x56, 0x32, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, - 0x74, 0x69, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x05, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x32, 0xa5, 0x1e, 0x0a, 0x0e, 0x41, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa5, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x61, - 0x74, 0x61, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, - 0x32, 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, - 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2d, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x98, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x79, 0x0a, 0x1c, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x56, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x63, 0x5f, 0x6f, + 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x63, 0x4f, 0x6e, 0x6c, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xd4, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, + 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x67, 0x65, 0x22, 0x62, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x83, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, + 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, + 0x69, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x22, 0x48, 0x0a, 0x0a, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x76, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xa0, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x9e, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x48, 0x61, 0x73, 0x68, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, + 0x0a, 0x05, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x32, 0xa5, 0x1e, 0x0a, 0x0e, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa5, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x44, 0x61, 0x74, 0x61, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x56, 0x32, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x74, 0x56, 0x32, 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, - 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, 0x68, 0x61, 0x73, 0x68, - 0x12, 0xb8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, 0x71, 0x75, 0x62, + 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, + 0x6d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0x98, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, + 0x63, 0x6b, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x56, 0x32, 0x12, 0x2b, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x2c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, - 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, - 0x12, 0x32, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x56, 0x32, 0x1a, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x18, - 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x3a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x56, 0x32, 0x1a, 0x3b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, - 0x32, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x32, 0x2f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x6d, 0x61, 0x6e, 0x79, 0x12, 0xda, 0x01, 0x0a, - 0x21, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x56, 0x32, 0x12, 0x42, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, + 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, 0x68, 0x61, + 0x73, 0x68, 0x12, 0xb8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, + 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, + 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9d, 0x01, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x12, 0x32, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x44, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x2b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x7d, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, - 0x12, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x20, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x73, 0x2f, 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x12, - 0xa9, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x35, 0x2e, 0x71, - 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x56, 0x32, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x32, - 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, - 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2d, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x75, 0x62, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbe, 0x01, + 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x3a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, - 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, - 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, - 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2d, 0x74, - 0x69, 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, - 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc3, 0x01, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, + 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x3b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x56, 0x32, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x32, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, + 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x6d, 0x61, 0x6e, 0x79, 0x12, 0xda, + 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x56, 0x32, 0x12, 0x42, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x44, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x2b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x56, 0x32, 0x12, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x63, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, + 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x2f, 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, + 0x73, 0x12, 0xa9, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, + 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x35, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, + 0x76, 0x32, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x7d, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2d, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x12, 0x97, 0x01, + 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, - 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, + 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x69, + 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x51, + 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, + 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x2d, 0x74, 0x69, 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, - 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2d, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0xc3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, + 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2d, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, + 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, @@ -4264,86 +4338,76 @@ var file_archive_proto_rawDesc = []byte{ 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0xa6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x40, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, - 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0xa6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2d, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1e, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x40, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, - 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, - 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x74, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, - 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2f, 0x67, 0x6f, 0x2d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x66, 0x2f, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x41, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x73, 0x2f, 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x6f, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, + 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x74, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2f, 0x67, 0x6f, 0x2d, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x66, 0x2f, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4358,7 +4422,7 @@ func file_archive_proto_rawDescGZIP() []byte { return file_archive_proto_rawDescData } -var file_archive_proto_msgTypes = make([]protoimpl.MessageInfo, 66) +var file_archive_proto_msgTypes = make([]protoimpl.MessageInfo, 68) var file_archive_proto_goTypes = []any{ (*TickData)(nil), // 0: qubic.archiver.archive.pb.TickData (*GetTickDataRequest)(nil), // 1: qubic.archiver.archive.pb.GetTickDataRequest @@ -4383,50 +4447,52 @@ var file_archive_proto_goTypes = []any{ (*SkippedTicksIntervalList)(nil), // 20: qubic.archiver.archive.pb.SkippedTicksIntervalList (*QuorumTickDataStored)(nil), // 21: qubic.archiver.archive.pb.QuorumTickDataStored (*QuorumDiffStored)(nil), // 22: qubic.archiver.archive.pb.QuorumDiffStored - (*GetQuorumTickDataRequest)(nil), // 23: qubic.archiver.archive.pb.GetQuorumTickDataRequest - (*GetQuorumTickDataResponse)(nil), // 24: qubic.archiver.archive.pb.GetQuorumTickDataResponse - (*GetQuorumTickDataResponseStored)(nil), // 25: qubic.archiver.archive.pb.GetQuorumTickDataResponseStored - (*Computors)(nil), // 26: qubic.archiver.archive.pb.Computors - (*GetComputorsRequest)(nil), // 27: qubic.archiver.archive.pb.GetComputorsRequest - (*GetComputorsResponse)(nil), // 28: qubic.archiver.archive.pb.GetComputorsResponse - (*TransferTransactionsPerTick)(nil), // 29: qubic.archiver.archive.pb.TransferTransactionsPerTick - (*ProcessedTick)(nil), // 30: qubic.archiver.archive.pb.ProcessedTick - (*GetStatusResponse)(nil), // 31: qubic.archiver.archive.pb.GetStatusResponse - (*GetHealthCheckResponse)(nil), // 32: qubic.archiver.archive.pb.GetHealthCheckResponse - (*GetTransferTransactionsPerTickRequest)(nil), // 33: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest - (*GetTransferTransactionsPerTickResponse)(nil), // 34: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse - (*GetChainHashRequest)(nil), // 35: qubic.archiver.archive.pb.GetChainHashRequest - (*GetChainHashResponse)(nil), // 36: qubic.archiver.archive.pb.GetChainHashResponse - (*ProcessedTickInterval)(nil), // 37: qubic.archiver.archive.pb.ProcessedTickInterval - (*ProcessedTickIntervalsPerEpoch)(nil), // 38: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch - (*Tick)(nil), // 39: qubic.archiver.archive.pb.Tick - (*GetTickResponseV2)(nil), // 40: qubic.archiver.archive.pb.GetTickResponseV2 - (*PerTickIdentityTransfers)(nil), // 41: qubic.archiver.archive.pb.PerTickIdentityTransfers - (*GetIdentityTransfersInTickRangeResponseV2)(nil), // 42: qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2 - (*SendManyTransfer)(nil), // 43: qubic.archiver.archive.pb.SendManyTransfer - (*SendManyTransaction)(nil), // 44: qubic.archiver.archive.pb.SendManyTransaction - (*SendManyTransactionData)(nil), // 45: qubic.archiver.archive.pb.SendManyTransactionData - (*GetSendManyTransactionRequestV2)(nil), // 46: qubic.archiver.archive.pb.GetSendManyTransactionRequestV2 - (*GetSendManyTransactionResponseV2)(nil), // 47: qubic.archiver.archive.pb.GetSendManyTransactionResponseV2 - (*TransactionData)(nil), // 48: qubic.archiver.archive.pb.TransactionData - (*GetLatestTickResponse)(nil), // 49: qubic.archiver.archive.pb.GetLatestTickResponse - (*GetTickRequestV2)(nil), // 50: qubic.archiver.archive.pb.GetTickRequestV2 - (*GetTickTransactionsResponseV2)(nil), // 51: qubic.archiver.archive.pb.GetTickTransactionsResponseV2 - (*GetTransactionRequestV2)(nil), // 52: qubic.archiver.archive.pb.GetTransactionRequestV2 - (*GetTransactionResponseV2)(nil), // 53: qubic.archiver.archive.pb.GetTransactionResponseV2 - (*GetTickTransactionsRequestV2)(nil), // 54: qubic.archiver.archive.pb.GetTickTransactionsRequestV2 - (*GetTransferTransactionsPerTickRequestV2)(nil), // 55: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequestV2 - (*Pagination)(nil), // 56: qubic.archiver.archive.pb.Pagination - (*GetEmptyTickListRequestV2)(nil), // 57: qubic.archiver.archive.pb.GetEmptyTickListRequestV2 - (*GetEmptyTickListResponseV2)(nil), // 58: qubic.archiver.archive.pb.GetEmptyTickListResponseV2 - (*TickStatus)(nil), // 59: qubic.archiver.archive.pb.TickStatus - (*GetEpochTickListRequestV2)(nil), // 60: qubic.archiver.archive.pb.GetEpochTickListRequestV2 - (*GetEpochTickListResponseV2)(nil), // 61: qubic.archiver.archive.pb.GetEpochTickListResponseV2 - nil, // 62: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry - nil, // 63: qubic.archiver.archive.pb.QuorumTickDataStored.QuorumDiffPerComputorEntry - nil, // 64: qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry - nil, // 65: qubic.archiver.archive.pb.GetStatusResponse.EmptyTicksPerEpochEntry - (*emptypb.Empty)(nil), // 66: google.protobuf.Empty + (*LastTickQuorumDataPerEpochIntervals)(nil), // 23: qubic.archiver.archive.pb.LastTickQuorumDataPerEpochIntervals + (*GetQuorumTickDataRequest)(nil), // 24: qubic.archiver.archive.pb.GetQuorumTickDataRequest + (*GetQuorumTickDataResponse)(nil), // 25: qubic.archiver.archive.pb.GetQuorumTickDataResponse + (*GetQuorumTickDataResponseStored)(nil), // 26: qubic.archiver.archive.pb.GetQuorumTickDataResponseStored + (*Computors)(nil), // 27: qubic.archiver.archive.pb.Computors + (*GetComputorsRequest)(nil), // 28: qubic.archiver.archive.pb.GetComputorsRequest + (*GetComputorsResponse)(nil), // 29: qubic.archiver.archive.pb.GetComputorsResponse + (*TransferTransactionsPerTick)(nil), // 30: qubic.archiver.archive.pb.TransferTransactionsPerTick + (*ProcessedTick)(nil), // 31: qubic.archiver.archive.pb.ProcessedTick + (*GetStatusResponse)(nil), // 32: qubic.archiver.archive.pb.GetStatusResponse + (*GetHealthCheckResponse)(nil), // 33: qubic.archiver.archive.pb.GetHealthCheckResponse + (*GetTransferTransactionsPerTickRequest)(nil), // 34: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + (*GetTransferTransactionsPerTickResponse)(nil), // 35: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse + (*GetChainHashRequest)(nil), // 36: qubic.archiver.archive.pb.GetChainHashRequest + (*GetChainHashResponse)(nil), // 37: qubic.archiver.archive.pb.GetChainHashResponse + (*ProcessedTickInterval)(nil), // 38: qubic.archiver.archive.pb.ProcessedTickInterval + (*ProcessedTickIntervalsPerEpoch)(nil), // 39: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch + (*Tick)(nil), // 40: qubic.archiver.archive.pb.Tick + (*GetTickResponseV2)(nil), // 41: qubic.archiver.archive.pb.GetTickResponseV2 + (*PerTickIdentityTransfers)(nil), // 42: qubic.archiver.archive.pb.PerTickIdentityTransfers + (*GetIdentityTransfersInTickRangeResponseV2)(nil), // 43: qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2 + (*SendManyTransfer)(nil), // 44: qubic.archiver.archive.pb.SendManyTransfer + (*SendManyTransaction)(nil), // 45: qubic.archiver.archive.pb.SendManyTransaction + (*SendManyTransactionData)(nil), // 46: qubic.archiver.archive.pb.SendManyTransactionData + (*GetSendManyTransactionRequestV2)(nil), // 47: qubic.archiver.archive.pb.GetSendManyTransactionRequestV2 + (*GetSendManyTransactionResponseV2)(nil), // 48: qubic.archiver.archive.pb.GetSendManyTransactionResponseV2 + (*TransactionData)(nil), // 49: qubic.archiver.archive.pb.TransactionData + (*GetLatestTickResponse)(nil), // 50: qubic.archiver.archive.pb.GetLatestTickResponse + (*GetTickRequestV2)(nil), // 51: qubic.archiver.archive.pb.GetTickRequestV2 + (*GetTickTransactionsResponseV2)(nil), // 52: qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + (*GetTransactionRequestV2)(nil), // 53: qubic.archiver.archive.pb.GetTransactionRequestV2 + (*GetTransactionResponseV2)(nil), // 54: qubic.archiver.archive.pb.GetTransactionResponseV2 + (*GetTickTransactionsRequestV2)(nil), // 55: qubic.archiver.archive.pb.GetTickTransactionsRequestV2 + (*GetTransferTransactionsPerTickRequestV2)(nil), // 56: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequestV2 + (*Pagination)(nil), // 57: qubic.archiver.archive.pb.Pagination + (*GetEmptyTickListRequestV2)(nil), // 58: qubic.archiver.archive.pb.GetEmptyTickListRequestV2 + (*GetEmptyTickListResponseV2)(nil), // 59: qubic.archiver.archive.pb.GetEmptyTickListResponseV2 + (*TickStatus)(nil), // 60: qubic.archiver.archive.pb.TickStatus + (*GetEpochTickListRequestV2)(nil), // 61: qubic.archiver.archive.pb.GetEpochTickListRequestV2 + (*GetEpochTickListResponseV2)(nil), // 62: qubic.archiver.archive.pb.GetEpochTickListResponseV2 + nil, // 63: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry + nil, // 64: qubic.archiver.archive.pb.QuorumTickDataStored.QuorumDiffPerComputorEntry + nil, // 65: qubic.archiver.archive.pb.LastTickQuorumDataPerEpochIntervals.QuorumDataPerIntervalEntry + nil, // 66: qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry + nil, // 67: qubic.archiver.archive.pb.GetStatusResponse.EmptyTicksPerEpochEntry + (*emptypb.Empty)(nil), // 68: google.protobuf.Empty } var file_archive_proto_depIdxs = []int32{ 0, // 0: qubic.archiver.archive.pb.GetTickDataResponse.tick_data:type_name -> qubic.archiver.archive.pb.TickData @@ -4436,86 +4502,88 @@ var file_archive_proto_depIdxs = []int32{ 3, // 4: qubic.archiver.archive.pb.GetTickTransactionsResponse.transactions:type_name -> qubic.archiver.archive.pb.Transaction 3, // 5: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse.approved_transactions:type_name -> qubic.archiver.archive.pb.Transaction 17, // 6: qubic.archiver.archive.pb.QuorumTickData.quorum_tick_structure:type_name -> qubic.archiver.archive.pb.QuorumTickStructure - 62, // 7: qubic.archiver.archive.pb.QuorumTickData.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry + 63, // 7: qubic.archiver.archive.pb.QuorumTickData.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry 19, // 8: qubic.archiver.archive.pb.SkippedTicksIntervalList.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval 17, // 9: qubic.archiver.archive.pb.QuorumTickDataStored.quorum_tick_structure:type_name -> qubic.archiver.archive.pb.QuorumTickStructure - 63, // 10: qubic.archiver.archive.pb.QuorumTickDataStored.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickDataStored.QuorumDiffPerComputorEntry - 16, // 11: qubic.archiver.archive.pb.GetQuorumTickDataResponse.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickData - 21, // 12: qubic.archiver.archive.pb.GetQuorumTickDataResponseStored.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickDataStored - 26, // 13: qubic.archiver.archive.pb.GetComputorsResponse.computors:type_name -> qubic.archiver.archive.pb.Computors - 3, // 14: qubic.archiver.archive.pb.TransferTransactionsPerTick.transactions:type_name -> qubic.archiver.archive.pb.Transaction - 30, // 15: qubic.archiver.archive.pb.GetStatusResponse.last_processed_tick:type_name -> qubic.archiver.archive.pb.ProcessedTick - 64, // 16: qubic.archiver.archive.pb.GetStatusResponse.last_processed_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry - 19, // 17: qubic.archiver.archive.pb.GetStatusResponse.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval - 38, // 18: qubic.archiver.archive.pb.GetStatusResponse.processed_tick_intervals_per_epoch:type_name -> qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch - 65, // 19: qubic.archiver.archive.pb.GetStatusResponse.empty_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.EmptyTicksPerEpochEntry - 29, // 20: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse.transfer_transactions_per_tick:type_name -> qubic.archiver.archive.pb.TransferTransactionsPerTick - 37, // 21: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch.intervals:type_name -> qubic.archiver.archive.pb.ProcessedTickInterval - 39, // 22: qubic.archiver.archive.pb.GetTickResponseV2.tick_Data:type_name -> qubic.archiver.archive.pb.Tick - 48, // 23: qubic.archiver.archive.pb.PerTickIdentityTransfers.transactions:type_name -> qubic.archiver.archive.pb.TransactionData - 41, // 24: qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2.transactions:type_name -> qubic.archiver.archive.pb.PerTickIdentityTransfers - 43, // 25: qubic.archiver.archive.pb.SendManyTransaction.transfers:type_name -> qubic.archiver.archive.pb.SendManyTransfer - 44, // 26: qubic.archiver.archive.pb.SendManyTransactionData.transaction:type_name -> qubic.archiver.archive.pb.SendManyTransaction - 44, // 27: qubic.archiver.archive.pb.GetSendManyTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.SendManyTransaction - 3, // 28: qubic.archiver.archive.pb.TransactionData.transaction:type_name -> qubic.archiver.archive.pb.Transaction - 48, // 29: qubic.archiver.archive.pb.GetTickTransactionsResponseV2.transactions:type_name -> qubic.archiver.archive.pb.TransactionData - 3, // 30: qubic.archiver.archive.pb.GetTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.Transaction - 56, // 31: qubic.archiver.archive.pb.GetEmptyTickListResponseV2.pagination:type_name -> qubic.archiver.archive.pb.Pagination - 56, // 32: qubic.archiver.archive.pb.GetEpochTickListResponseV2.pagination:type_name -> qubic.archiver.archive.pb.Pagination - 59, // 33: qubic.archiver.archive.pb.GetEpochTickListResponseV2.ticks:type_name -> qubic.archiver.archive.pb.TickStatus - 18, // 34: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiff - 22, // 35: qubic.archiver.archive.pb.QuorumTickDataStored.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiffStored - 50, // 36: qubic.archiver.archive.pb.ArchiveService.GetTickQuorumDataV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 - 50, // 37: qubic.archiver.archive.pb.ArchiveService.GetTickChainHashV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 - 50, // 38: qubic.archiver.archive.pb.ArchiveService.GetTickStoreHashV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 - 54, // 39: qubic.archiver.archive.pb.ArchiveService.GetTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 - 52, // 40: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:input_type -> qubic.archiver.archive.pb.GetTransactionRequestV2 - 46, // 41: qubic.archiver.archive.pb.ArchiveService.GetSendManyTransactionV2:input_type -> qubic.archiver.archive.pb.GetSendManyTransactionRequestV2 - 55, // 42: qubic.archiver.archive.pb.ArchiveService.GetIdentityTransfersInTickRangeV2:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequestV2 - 60, // 43: qubic.archiver.archive.pb.ArchiveService.GetEpochTickListV2:input_type -> qubic.archiver.archive.pb.GetEpochTickListRequestV2 - 57, // 44: qubic.archiver.archive.pb.ArchiveService.GetEmptyTickListV2:input_type -> qubic.archiver.archive.pb.GetEmptyTickListRequestV2 - 1, // 45: qubic.archiver.archive.pb.ArchiveService.GetTickData:input_type -> qubic.archiver.archive.pb.GetTickDataRequest - 23, // 46: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:input_type -> qubic.archiver.archive.pb.GetQuorumTickDataRequest - 12, // 47: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest - 12, // 48: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest - 14, // 49: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:input_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest - 35, // 50: qubic.archiver.archive.pb.ArchiveService.GetChainHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest - 35, // 51: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest - 8, // 52: qubic.archiver.archive.pb.ArchiveService.GetTransaction:input_type -> qubic.archiver.archive.pb.GetTransactionRequest - 10, // 53: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:input_type -> qubic.archiver.archive.pb.GetTransactionStatusRequest - 33, // 54: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest - 27, // 55: qubic.archiver.archive.pb.ArchiveService.GetComputors:input_type -> qubic.archiver.archive.pb.GetComputorsRequest - 66, // 56: qubic.archiver.archive.pb.ArchiveService.GetStatus:input_type -> google.protobuf.Empty - 66, // 57: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:input_type -> google.protobuf.Empty - 66, // 58: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:input_type -> google.protobuf.Empty - 24, // 59: qubic.archiver.archive.pb.ArchiveService.GetTickQuorumDataV2:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse - 36, // 60: qubic.archiver.archive.pb.ArchiveService.GetTickChainHashV2:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 36, // 61: qubic.archiver.archive.pb.ArchiveService.GetTickStoreHashV2:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 51, // 62: qubic.archiver.archive.pb.ArchiveService.GetTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 - 53, // 63: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:output_type -> qubic.archiver.archive.pb.GetTransactionResponseV2 - 47, // 64: qubic.archiver.archive.pb.ArchiveService.GetSendManyTransactionV2:output_type -> qubic.archiver.archive.pb.GetSendManyTransactionResponseV2 - 42, // 65: qubic.archiver.archive.pb.ArchiveService.GetIdentityTransfersInTickRangeV2:output_type -> qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2 - 61, // 66: qubic.archiver.archive.pb.ArchiveService.GetEpochTickListV2:output_type -> qubic.archiver.archive.pb.GetEpochTickListResponseV2 - 58, // 67: qubic.archiver.archive.pb.ArchiveService.GetEmptyTickListV2:output_type -> qubic.archiver.archive.pb.GetEmptyTickListResponseV2 - 2, // 68: qubic.archiver.archive.pb.ArchiveService.GetTickData:output_type -> qubic.archiver.archive.pb.GetTickDataResponse - 24, // 69: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse - 13, // 70: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse - 13, // 71: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse - 15, // 72: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:output_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse - 36, // 73: qubic.archiver.archive.pb.ArchiveService.GetChainHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 36, // 74: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 9, // 75: qubic.archiver.archive.pb.ArchiveService.GetTransaction:output_type -> qubic.archiver.archive.pb.GetTransactionResponse - 11, // 76: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:output_type -> qubic.archiver.archive.pb.GetTransactionStatusResponse - 34, // 77: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:output_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse - 28, // 78: qubic.archiver.archive.pb.ArchiveService.GetComputors:output_type -> qubic.archiver.archive.pb.GetComputorsResponse - 31, // 79: qubic.archiver.archive.pb.ArchiveService.GetStatus:output_type -> qubic.archiver.archive.pb.GetStatusResponse - 49, // 80: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:output_type -> qubic.archiver.archive.pb.GetLatestTickResponse - 32, // 81: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:output_type -> qubic.archiver.archive.pb.GetHealthCheckResponse - 59, // [59:82] is the sub-list for method output_type - 36, // [36:59] is the sub-list for method input_type - 36, // [36:36] is the sub-list for extension type_name - 36, // [36:36] is the sub-list for extension extendee - 0, // [0:36] is the sub-list for field type_name + 64, // 10: qubic.archiver.archive.pb.QuorumTickDataStored.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickDataStored.QuorumDiffPerComputorEntry + 65, // 11: qubic.archiver.archive.pb.LastTickQuorumDataPerEpochIntervals.quorum_data_per_interval:type_name -> qubic.archiver.archive.pb.LastTickQuorumDataPerEpochIntervals.QuorumDataPerIntervalEntry + 16, // 12: qubic.archiver.archive.pb.GetQuorumTickDataResponse.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickData + 21, // 13: qubic.archiver.archive.pb.GetQuorumTickDataResponseStored.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickDataStored + 27, // 14: qubic.archiver.archive.pb.GetComputorsResponse.computors:type_name -> qubic.archiver.archive.pb.Computors + 3, // 15: qubic.archiver.archive.pb.TransferTransactionsPerTick.transactions:type_name -> qubic.archiver.archive.pb.Transaction + 31, // 16: qubic.archiver.archive.pb.GetStatusResponse.last_processed_tick:type_name -> qubic.archiver.archive.pb.ProcessedTick + 66, // 17: qubic.archiver.archive.pb.GetStatusResponse.last_processed_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry + 19, // 18: qubic.archiver.archive.pb.GetStatusResponse.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval + 39, // 19: qubic.archiver.archive.pb.GetStatusResponse.processed_tick_intervals_per_epoch:type_name -> qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch + 67, // 20: qubic.archiver.archive.pb.GetStatusResponse.empty_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.EmptyTicksPerEpochEntry + 30, // 21: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse.transfer_transactions_per_tick:type_name -> qubic.archiver.archive.pb.TransferTransactionsPerTick + 38, // 22: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch.intervals:type_name -> qubic.archiver.archive.pb.ProcessedTickInterval + 40, // 23: qubic.archiver.archive.pb.GetTickResponseV2.tick_Data:type_name -> qubic.archiver.archive.pb.Tick + 49, // 24: qubic.archiver.archive.pb.PerTickIdentityTransfers.transactions:type_name -> qubic.archiver.archive.pb.TransactionData + 42, // 25: qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2.transactions:type_name -> qubic.archiver.archive.pb.PerTickIdentityTransfers + 44, // 26: qubic.archiver.archive.pb.SendManyTransaction.transfers:type_name -> qubic.archiver.archive.pb.SendManyTransfer + 45, // 27: qubic.archiver.archive.pb.SendManyTransactionData.transaction:type_name -> qubic.archiver.archive.pb.SendManyTransaction + 45, // 28: qubic.archiver.archive.pb.GetSendManyTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.SendManyTransaction + 3, // 29: qubic.archiver.archive.pb.TransactionData.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 49, // 30: qubic.archiver.archive.pb.GetTickTransactionsResponseV2.transactions:type_name -> qubic.archiver.archive.pb.TransactionData + 3, // 31: qubic.archiver.archive.pb.GetTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 57, // 32: qubic.archiver.archive.pb.GetEmptyTickListResponseV2.pagination:type_name -> qubic.archiver.archive.pb.Pagination + 57, // 33: qubic.archiver.archive.pb.GetEpochTickListResponseV2.pagination:type_name -> qubic.archiver.archive.pb.Pagination + 60, // 34: qubic.archiver.archive.pb.GetEpochTickListResponseV2.ticks:type_name -> qubic.archiver.archive.pb.TickStatus + 18, // 35: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiff + 22, // 36: qubic.archiver.archive.pb.QuorumTickDataStored.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiffStored + 16, // 37: qubic.archiver.archive.pb.LastTickQuorumDataPerEpochIntervals.QuorumDataPerIntervalEntry.value:type_name -> qubic.archiver.archive.pb.QuorumTickData + 51, // 38: qubic.archiver.archive.pb.ArchiveService.GetTickQuorumDataV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 51, // 39: qubic.archiver.archive.pb.ArchiveService.GetTickChainHashV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 51, // 40: qubic.archiver.archive.pb.ArchiveService.GetTickStoreHashV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 55, // 41: qubic.archiver.archive.pb.ArchiveService.GetTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 + 53, // 42: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:input_type -> qubic.archiver.archive.pb.GetTransactionRequestV2 + 47, // 43: qubic.archiver.archive.pb.ArchiveService.GetSendManyTransactionV2:input_type -> qubic.archiver.archive.pb.GetSendManyTransactionRequestV2 + 56, // 44: qubic.archiver.archive.pb.ArchiveService.GetIdentityTransfersInTickRangeV2:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequestV2 + 61, // 45: qubic.archiver.archive.pb.ArchiveService.GetEpochTickListV2:input_type -> qubic.archiver.archive.pb.GetEpochTickListRequestV2 + 58, // 46: qubic.archiver.archive.pb.ArchiveService.GetEmptyTickListV2:input_type -> qubic.archiver.archive.pb.GetEmptyTickListRequestV2 + 1, // 47: qubic.archiver.archive.pb.ArchiveService.GetTickData:input_type -> qubic.archiver.archive.pb.GetTickDataRequest + 24, // 48: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:input_type -> qubic.archiver.archive.pb.GetQuorumTickDataRequest + 12, // 49: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest + 12, // 50: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest + 14, // 51: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:input_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest + 36, // 52: qubic.archiver.archive.pb.ArchiveService.GetChainHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest + 36, // 53: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest + 8, // 54: qubic.archiver.archive.pb.ArchiveService.GetTransaction:input_type -> qubic.archiver.archive.pb.GetTransactionRequest + 10, // 55: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:input_type -> qubic.archiver.archive.pb.GetTransactionStatusRequest + 34, // 56: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + 28, // 57: qubic.archiver.archive.pb.ArchiveService.GetComputors:input_type -> qubic.archiver.archive.pb.GetComputorsRequest + 68, // 58: qubic.archiver.archive.pb.ArchiveService.GetStatus:input_type -> google.protobuf.Empty + 68, // 59: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:input_type -> google.protobuf.Empty + 68, // 60: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:input_type -> google.protobuf.Empty + 25, // 61: qubic.archiver.archive.pb.ArchiveService.GetTickQuorumDataV2:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse + 37, // 62: qubic.archiver.archive.pb.ArchiveService.GetTickChainHashV2:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 37, // 63: qubic.archiver.archive.pb.ArchiveService.GetTickStoreHashV2:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 52, // 64: qubic.archiver.archive.pb.ArchiveService.GetTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 54, // 65: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:output_type -> qubic.archiver.archive.pb.GetTransactionResponseV2 + 48, // 66: qubic.archiver.archive.pb.ArchiveService.GetSendManyTransactionV2:output_type -> qubic.archiver.archive.pb.GetSendManyTransactionResponseV2 + 43, // 67: qubic.archiver.archive.pb.ArchiveService.GetIdentityTransfersInTickRangeV2:output_type -> qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2 + 62, // 68: qubic.archiver.archive.pb.ArchiveService.GetEpochTickListV2:output_type -> qubic.archiver.archive.pb.GetEpochTickListResponseV2 + 59, // 69: qubic.archiver.archive.pb.ArchiveService.GetEmptyTickListV2:output_type -> qubic.archiver.archive.pb.GetEmptyTickListResponseV2 + 2, // 70: qubic.archiver.archive.pb.ArchiveService.GetTickData:output_type -> qubic.archiver.archive.pb.GetTickDataResponse + 25, // 71: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse + 13, // 72: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse + 13, // 73: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse + 15, // 74: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:output_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse + 37, // 75: qubic.archiver.archive.pb.ArchiveService.GetChainHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 37, // 76: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 9, // 77: qubic.archiver.archive.pb.ArchiveService.GetTransaction:output_type -> qubic.archiver.archive.pb.GetTransactionResponse + 11, // 78: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:output_type -> qubic.archiver.archive.pb.GetTransactionStatusResponse + 35, // 79: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:output_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse + 29, // 80: qubic.archiver.archive.pb.ArchiveService.GetComputors:output_type -> qubic.archiver.archive.pb.GetComputorsResponse + 32, // 81: qubic.archiver.archive.pb.ArchiveService.GetStatus:output_type -> qubic.archiver.archive.pb.GetStatusResponse + 50, // 82: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:output_type -> qubic.archiver.archive.pb.GetLatestTickResponse + 33, // 83: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:output_type -> qubic.archiver.archive.pb.GetHealthCheckResponse + 61, // [61:84] is the sub-list for method output_type + 38, // [38:61] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name } func init() { file_archive_proto_init() } @@ -4529,7 +4597,7 @@ func file_archive_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_archive_proto_rawDesc, NumEnums: 0, - NumMessages: 66, + NumMessages: 68, NumExtensions: 0, NumServices: 1, }, diff --git a/protobuff/archive.proto b/protobuff/archive.proto index 4aa8ed3..5930fab 100644 --- a/protobuff/archive.proto +++ b/protobuff/archive.proto @@ -131,6 +131,10 @@ message QuorumDiffStored { string signature_hex = 6; } +message LastTickQuorumDataPerEpochIntervals { + map quorum_data_per_interval = 1; +} + message GetQuorumTickDataRequest { uint32 tick_number = 1; } diff --git a/protobuff/archive_grpc.pb.go b/protobuff/archive_grpc.pb.go index 84a64a7..7bf47be 100644 --- a/protobuff/archive_grpc.pb.go +++ b/protobuff/archive_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v5.28.2 +// - protoc v5.28.3 // source: archive.proto package protobuff diff --git a/rpc/rpc_server.go b/rpc/rpc_server.go index 0d0932a..b5d2f33 100644 --- a/rpc/rpc_server.go +++ b/rpc/rpc_server.go @@ -4,7 +4,6 @@ import ( "context" "encoding/hex" "encoding/json" - "fmt" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "github.com/pkg/errors" "github.com/qubic/go-archiver/protobuff" @@ -101,7 +100,7 @@ func (s *Server) GetTickData(ctx context.Context, req *protobuff.GetTickDataRequ return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -150,7 +149,7 @@ func (s *Server) GetTickTransactions(ctx context.Context, req *protobuff.GetTick return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -192,7 +191,7 @@ func (s *Server) GetTickTransferTransactions(ctx context.Context, req *protobuff return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -244,28 +243,28 @@ func (s *Server) GetQuorumTickData(ctx context.Context, req *protobuff.GetQuorum return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - epoch, err := getTickEpoch(req.TickNumber, processedTickIntervalsPerEpoch) + epoch, err := tick.GetTickEpoch(req.TickNumber, processedTickIntervalsPerEpoch) if err != nil { return nil, status.Errorf(codes.Internal, "getting tick epoch :%v", err) } - lastTickFlag, err := isLastTick(req.TickNumber, epoch, processedTickIntervalsPerEpoch) + lastTickFlag, index, err := tick.IsLast(req.TickNumber, epoch, processedTickIntervalsPerEpoch) if err != nil { return nil, status.Errorf(codes.Internal, "checking if tick is last tick in it's epoch: %v", err) } if lastTickFlag { - lastTickQuorumData, err := s.store.GetLastTickQuorumDataPerEpoch(epoch) + lastQuorumDataPerEpochInterval, err := s.store.GetLastTickQuorumDataListPerEpochInterval(epoch) if err != nil { return nil, status.Errorf(codes.Internal, "getting quorum data for last processed tick: %v", err) } return &protobuff.GetQuorumTickDataResponse{ - QuorumTickData: lastTickQuorumData, + QuorumTickData: lastQuorumDataPerEpochInterval.QuorumDataPerInterval[int32(index)], }, nil } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -347,7 +346,7 @@ func (s *Server) GetComputors(ctx context.Context, req *protobuff.GetComputorsRe } func (s *Server) GetStatus(ctx context.Context, _ *emptypb.Empty) (*protobuff.GetStatusResponse, error) { - tick, err := s.store.GetLastProcessedTick(ctx) + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) if err != nil { return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) } @@ -360,7 +359,7 @@ func (s *Server) GetStatus(ctx context.Context, _ *emptypb.Empty) (*protobuff.Ge skippedTicks, err := s.store.GetSkippedTicksInterval(ctx) if err != nil { if errors.Is(err, store.ErrNotFound) { - return &protobuff.GetStatusResponse{LastProcessedTick: tick, LastProcessedTicksPerEpoch: lastProcessedTicksPerEpoch}, nil + return &protobuff.GetStatusResponse{LastProcessedTick: lastProcessedTick, LastProcessedTicksPerEpoch: lastProcessedTicksPerEpoch}, nil } return nil, status.Errorf(codes.Internal, "getting skipped ticks: %v", err) @@ -382,7 +381,7 @@ func (s *Server) GetStatus(ctx context.Context, _ *emptypb.Empty) (*protobuff.Ge } return &protobuff.GetStatusResponse{ - LastProcessedTick: tick, + LastProcessedTick: lastProcessedTick, LastProcessedTicksPerEpoch: lastProcessedTicksPerEpoch, SkippedTicks: skippedTicks.SkippedTicks, ProcessedTickIntervalsPerEpoch: ptie, @@ -490,7 +489,7 @@ func (s *Server) GetTickApprovedTransactions(ctx context.Context, req *protobuff return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -547,65 +546,6 @@ func (s *Server) GetTickApprovedTransactions(ctx context.Context, req *protobuff return &protobuff.GetTickApprovedTransactionsResponse{ApprovedTransactions: approvedTxs}, nil } -func wasTickSkippedByArchive(tick uint32, processedTicksIntervalPerEpoch []*protobuff.ProcessedTickIntervalsPerEpoch) (bool, uint32) { - if len(processedTicksIntervalPerEpoch) == 0 { - return false, 0 - } - for _, epochInterval := range processedTicksIntervalPerEpoch { - for _, interval := range epochInterval.Intervals { - if tick < interval.InitialProcessedTick { - return true, interval.InitialProcessedTick - } - if tick >= interval.InitialProcessedTick && tick <= interval.LastProcessedTick { - return false, 0 - } - } - } - return false, 0 -} - -func getTickEpoch(tickNumber uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (uint32, error) { - if len(intervals) == 0 { - return 0, errors.New("processed tick interval list is empty") - } - - for _, epochInterval := range intervals { - for _, interval := range epochInterval.Intervals { - if tickNumber >= interval.InitialProcessedTick && tickNumber <= interval.LastProcessedTick { - return epochInterval.Epoch, nil - } - } - } - - return 0, errors.New(fmt.Sprintf("unable to find the epoch for tick %d", tickNumber)) -} - -func getProcessedTickIntervalsForEpoch(epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (*protobuff.ProcessedTickIntervalsPerEpoch, error) { - for _, interval := range intervals { - if interval.Epoch != epoch { - continue - } - return interval, nil - } - - return nil, errors.New(fmt.Sprintf("unable to find processed tick intervals for epoch %d", epoch)) -} - -func isLastTick(tickNumber uint32, epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (bool, error) { - epochIntervals, err := getProcessedTickIntervalsForEpoch(epoch, intervals) - if err != nil { - return false, errors.Wrap(err, "getting processed tick intervals per epoch") - } - - for _, interval := range epochIntervals.Intervals { - if interval.LastProcessedTick == tickNumber { - return true, nil - } - } - - return false, nil -} - func (s *Server) GetTransactionStatus(ctx context.Context, req *protobuff.GetTransactionStatusRequest) (*protobuff.GetTransactionStatusResponse, error) { id := types.Identity(req.TxId) pubKey, err := id.ToPubKey(true) diff --git a/rpc/v2_endpoints.go b/rpc/v2_endpoints.go index 3c65ded..79b30c2 100644 --- a/rpc/v2_endpoints.go +++ b/rpc/v2_endpoints.go @@ -5,6 +5,7 @@ import ( "context" "encoding/hex" "github.com/cockroachdb/pebble" + "github.com/qubic/go-archiver/validator/tick" "slices" "github.com/pkg/errors" @@ -71,7 +72,7 @@ func (s *Server) GetAllTickTransactionsV2(ctx context.Context, req *protobuff.Ge return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -130,7 +131,7 @@ func (s *Server) GetTransferTickTransactionsV2(ctx context.Context, req *protobu return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -189,7 +190,7 @@ func (s *Server) GetApprovedTickTransactionsV2(ctx context.Context, req *protobu return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") } - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + wasSkipped, nextAvailableTick := tick.WasSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) if wasSkipped == true { st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) @@ -469,18 +470,18 @@ func (s *Server) GetEpochTickListV2(ctx context.Context, req *protobuff.GetEpoch } } - for _, tick := range emptyTicksForEpoch { - _, exists := tickMap[tick] + for _, tickNumber := range emptyTicksForEpoch { + _, exists := tickMap[tickNumber] if exists { - tickMap[tick] = true + tickMap[tickNumber] = true } } var result []*protobuff.TickStatus - for tick, isEmpty := range tickMap { + for tickNumber, isEmpty := range tickMap { result = append(result, &protobuff.TickStatus{ - TickNumber: tick, + TickNumber: tickNumber, IsEmpty: isEmpty, }) } diff --git a/store/keys.go b/store/keys.go index 416a0f6..5e4cf2a 100644 --- a/store/keys.go +++ b/store/keys.go @@ -5,22 +5,22 @@ import ( ) const ( - TickData = 0x00 - QuorumData = 0x01 - ComputorList = 0x02 - Transaction = 0x03 - LastProcessedTick = 0x04 - LastProcessedTickPerEpoch = 0x05 - SkippedTicksInterval = 0x06 - IdentityTransferTransactions = 0x07 - ChainDigest = 0x08 - ProcessedTickIntervals = 0x09 - TickTransactionsStatus = 0x10 - TransactionStatus = 0x11 - StoreDigest = 0x12 - EmptyTicksPerEpoch = 0x13 - LastTickQuorumDataPerEpoch = 0x14 - EmptyTickListPerEpoch = 0x15 + TickData = 0x00 + QuorumData = 0x01 + ComputorList = 0x02 + Transaction = 0x03 + LastProcessedTick = 0x04 + LastProcessedTickPerEpoch = 0x05 + SkippedTicksInterval = 0x06 + IdentityTransferTransactions = 0x07 + ChainDigest = 0x08 + ProcessedTickIntervals = 0x09 + TickTransactionsStatus = 0x10 + TransactionStatus = 0x11 + StoreDigest = 0x12 + EmptyTicksPerEpoch = 0x13 + LastTickQuorumDataPerEpochInterval = 0x14 + EmptyTickListPerEpoch = 0x15 ) func emptyTickListPerEpochKey(epoch uint32) []byte { @@ -29,8 +29,8 @@ func emptyTickListPerEpochKey(epoch uint32) []byte { return key } -func lastTickQuorumDataPerEpochKey(epoch uint32) []byte { - key := []byte{LastTickQuorumDataPerEpoch} +func lastTickQuorumDataPerEpochIntervalKey(epoch uint32) []byte { + key := []byte{LastTickQuorumDataPerEpochInterval} key = binary.BigEndian.AppendUint64(key, uint64(epoch)) return key } diff --git a/store/store.go b/store/store.go index 25f6b02..e674534 100644 --- a/store/store.go +++ b/store/store.go @@ -700,41 +700,79 @@ func (s *PebbleStore) DeleteEmptyTicksKeyForEpoch(epoch uint32) error { return nil } -func (s *PebbleStore) SetLastTickQuorumDataPerEpoch(quorumData *protobuff.QuorumTickData, epoch uint32) error { - key := lastTickQuorumDataPerEpochKey(epoch) +func (s *PebbleStore) SetLastTickQuorumDataPerEpochIntervals(epoch uint32, lastQuorumDataPerEpochIntervals *protobuff.LastTickQuorumDataPerEpochIntervals) error { - serialized, err := proto.Marshal(quorumData) + for key, qd := range lastQuorumDataPerEpochIntervals.QuorumDataPerInterval { + + if qd != nil { + fmt.Printf("DEBUG: %d %d\n", key, qd.QuorumTickStructure.TickNumber) + continue + } + fmt.Printf("DEBUG: %d NIL\n", key) + } + + key := lastTickQuorumDataPerEpochIntervalKey(epoch) + + value, err := proto.Marshal(lastQuorumDataPerEpochIntervals) if err != nil { - return errors.Wrapf(err, "serializing quorum tick data for last tick of epoch %d", epoch) + return errors.Wrapf(err, "serializing last quorum data per epoch intervals for epoch %d", epoch) } - err = s.db.Set(key, serialized, pebble.Sync) + err = s.db.Set(key, value, pebble.Sync) if err != nil { - return errors.Wrapf(err, "setting last tick quorum tick data for epoch %d", epoch) + return errors.Wrapf(err, "setting last quorum data per epoch intervals for epoch %d", epoch) } return nil } -func (s *PebbleStore) GetLastTickQuorumDataPerEpoch(epoch uint32) (*protobuff.QuorumTickData, error) { - key := lastTickQuorumDataPerEpochKey(epoch) +func (s *PebbleStore) GetLastTickQuorumDataListPerEpochInterval(epoch uint32) (*protobuff.LastTickQuorumDataPerEpochIntervals, error) { + key := lastTickQuorumDataPerEpochIntervalKey(epoch) value, closer, err := s.db.Get(key) if err != nil { if errors.Is(err, pebble.ErrNotFound) { - return nil, err + return &protobuff.LastTickQuorumDataPerEpochIntervals{ + QuorumDataPerInterval: make(map[int32]*protobuff.QuorumTickData), + }, nil } - return nil, errors.Wrapf(err, "getting last tick quorum data for epoch %d", epoch) + return nil, errors.Wrapf(err, "getting quorum data list for the intervals of epoch %d", epoch) } defer closer.Close() - var quorumData protobuff.QuorumTickData + var lastQuorumDataPerEpochIntervals protobuff.LastTickQuorumDataPerEpochIntervals + err = proto.Unmarshal(value, &lastQuorumDataPerEpochIntervals) + if err != nil { + return nil, errors.Wrapf(err, "de-serializing last quorum data per epoch intervals for epoch %d", epoch) + } + + return &lastQuorumDataPerEpochIntervals, err +} - err = proto.Unmarshal(value, &quorumData) +func (s *PebbleStore) SetQuorumDataForCurrentEpochInterval(epoch uint32, quorumData *protobuff.QuorumTickData) error { + + processedIntervals, err := s.getProcessedTickIntervalsPerEpoch(nil, epoch) + if err != nil { + return errors.Wrapf(err, "getting processed tick intervals for epoch %d", epoch) + } + + intervalIndex := len(processedIntervals.Intervals) - 1 + if intervalIndex < 0 { + intervalIndex = 0 + } + + quorumDataPerIntervals, err := s.GetLastTickQuorumDataListPerEpochInterval(epoch) if err != nil { - return nil, errors.Wrapf(err, "deserializing quorum tick data for last tick of epoch %d", epoch) + return errors.Wrap(err, "getting last quorum data list for epoch intervals") } - return &quorumData, nil + quorumDataPerIntervals.QuorumDataPerInterval[int32(intervalIndex)] = quorumData + + err = s.SetLastTickQuorumDataPerEpochIntervals(epoch, quorumDataPerIntervals) + if err != nil { + return errors.Wrap(err, "setting last quorum data list for epoch intervals") + } + + return nil } func (s *PebbleStore) SetEmptyTickListPerEpoch(epoch uint32, emptyTicks []uint32) error { diff --git a/validator/quorum/validator.go b/validator/quorum/validator.go index 4da2f10..e721707 100644 --- a/validator/quorum/validator.go +++ b/validator/quorum/validator.go @@ -165,7 +165,7 @@ func Store(ctx context.Context, store *store.PebbleStore, tickNumber uint32, quo fullProtoModel := qubicToProto(quorumVotes) - err = store.SetLastTickQuorumDataPerEpoch(fullProtoModel, protoModel.QuorumTickStructure.Epoch) + err = store.SetQuorumDataForCurrentEpochInterval(fullProtoModel.QuorumTickStructure.Epoch, fullProtoModel) if err != nil { return errors.Wrap(err, "setting last quorum tick data") } diff --git a/validator/tick/models.go b/validator/tick/models.go index 762360d..5d3c32b 100644 --- a/validator/tick/models.go +++ b/validator/tick/models.go @@ -2,6 +2,7 @@ package tick import ( "encoding/hex" + "fmt" "github.com/pkg/errors" "github.com/qubic/go-archiver/protobuff" "github.com/qubic/go-node-connector/types" @@ -58,3 +59,62 @@ func contractFeesToProto(contractFees [1024]int64) []int64 { } return protoContractFees } + +func WasSkippedByArchive(tick uint32, processedTicksIntervalPerEpoch []*protobuff.ProcessedTickIntervalsPerEpoch) (bool, uint32) { + if len(processedTicksIntervalPerEpoch) == 0 { + return false, 0 + } + for _, epochInterval := range processedTicksIntervalPerEpoch { + for _, interval := range epochInterval.Intervals { + if tick < interval.InitialProcessedTick { + return true, interval.InitialProcessedTick + } + if tick >= interval.InitialProcessedTick && tick <= interval.LastProcessedTick { + return false, 0 + } + } + } + return false, 0 +} + +func GetTickEpoch(tickNumber uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (uint32, error) { + if len(intervals) == 0 { + return 0, errors.New("processed tick interval list is empty") + } + + for _, epochInterval := range intervals { + for _, interval := range epochInterval.Intervals { + if tickNumber >= interval.InitialProcessedTick && tickNumber <= interval.LastProcessedTick { + return epochInterval.Epoch, nil + } + } + } + + return 0, errors.New(fmt.Sprintf("unable to find the epoch for tick %d", tickNumber)) +} + +func GetProcessedTickIntervalsForEpoch(epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (*protobuff.ProcessedTickIntervalsPerEpoch, error) { + for _, interval := range intervals { + if interval.Epoch != epoch { + continue + } + return interval, nil + } + + return nil, errors.New(fmt.Sprintf("unable to find processed tick intervals for epoch %d", epoch)) +} + +func IsLast(tickNumber uint32, epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (bool, int, error) { + epochIntervals, err := GetProcessedTickIntervalsForEpoch(epoch, intervals) + if err != nil { + return false, -1, errors.Wrap(err, "getting processed tick intervals per epoch") + } + + for index, interval := range epochIntervals.Intervals { + if interval.LastProcessedTick == tickNumber { + return true, index, nil + } + } + + return false, -1, nil +} From fc26655a864b740d3472674e936ae8bbdd1364d6 Mon Sep 17 00:00:00 2001 From: LINCKODE Date: Mon, 2 Dec 2024 14:31:47 +0200 Subject: [PATCH 2/4] Fix variable name collision. --- rpc/rpc_server.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpc/rpc_server.go b/rpc/rpc_server.go index b5d2f33..63549e0 100644 --- a/rpc/rpc_server.go +++ b/rpc/rpc_server.go @@ -416,13 +416,13 @@ func fetchChainTick(ctx context.Context, url string) (int, error) { return 0, errors.Wrap(err, "unmarshalling response") } - tick := resp.ChainTick + tickNumber := resp.ChainTick - if tick == 0 { + if tickNumber == 0 { return 0, errors.New("response has no chain tick or chain tick is 0") } - return tick, nil + return tickNumber, nil } From 74aec208038f6de5050a50402b317546576dec03 Mon Sep 17 00:00:00 2001 From: LINCKODE Date: Tue, 3 Dec 2024 16:27:13 +0200 Subject: [PATCH 3/4] Deploy to docker --- ...empty-ticks-endpoint.yaml => push-interval-quorum-data.yaml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{push-empty-ticks-endpoint.yaml => push-interval-quorum-data.yaml} (95%) diff --git a/.github/workflows/push-empty-ticks-endpoint.yaml b/.github/workflows/push-interval-quorum-data.yaml similarity index 95% rename from .github/workflows/push-empty-ticks-endpoint.yaml rename to .github/workflows/push-interval-quorum-data.yaml index 2b04026..91f065b 100644 --- a/.github/workflows/push-empty-ticks-endpoint.yaml +++ b/.github/workflows/push-interval-quorum-data.yaml @@ -3,7 +3,7 @@ name: Deploy dev images to GHCR on: push: branches: - - 'empty-ticks-endpoint' + - 'interval-quorum-data' jobs: push-store-image: From 84f4f55484787fc60b7f84e9368cbc6dfc57c853 Mon Sep 17 00:00:00 2001 From: LINCKODE Date: Tue, 3 Dec 2024 18:17:09 +0200 Subject: [PATCH 4/4] Implement requested changes. --- rpc/rpc_server.go | 2 +- store/store.go | 12 +----------- validator/tick/models.go | 7 +++---- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/rpc/rpc_server.go b/rpc/rpc_server.go index 63549e0..35a47c2 100644 --- a/rpc/rpc_server.go +++ b/rpc/rpc_server.go @@ -248,7 +248,7 @@ func (s *Server) GetQuorumTickData(ctx context.Context, req *protobuff.GetQuorum return nil, status.Errorf(codes.Internal, "getting tick epoch :%v", err) } - lastTickFlag, index, err := tick.IsLast(req.TickNumber, epoch, processedTickIntervalsPerEpoch) + lastTickFlag, index, err := tick.IsTickLastInAnyEpochInterval(req.TickNumber, epoch, processedTickIntervalsPerEpoch) if err != nil { return nil, status.Errorf(codes.Internal, "checking if tick is last tick in it's epoch: %v", err) } diff --git a/store/store.go b/store/store.go index e674534..87c521d 100644 --- a/store/store.go +++ b/store/store.go @@ -3,7 +3,6 @@ package store import ( "context" "encoding/binary" - "fmt" "github.com/cockroachdb/pebble" "github.com/pkg/errors" "github.com/qubic/go-archiver/protobuff" @@ -702,15 +701,6 @@ func (s *PebbleStore) DeleteEmptyTicksKeyForEpoch(epoch uint32) error { func (s *PebbleStore) SetLastTickQuorumDataPerEpochIntervals(epoch uint32, lastQuorumDataPerEpochIntervals *protobuff.LastTickQuorumDataPerEpochIntervals) error { - for key, qd := range lastQuorumDataPerEpochIntervals.QuorumDataPerInterval { - - if qd != nil { - fmt.Printf("DEBUG: %d %d\n", key, qd.QuorumTickStructure.TickNumber) - continue - } - fmt.Printf("DEBUG: %d NIL\n", key) - } - key := lastTickQuorumDataPerEpochIntervalKey(epoch) value, err := proto.Marshal(lastQuorumDataPerEpochIntervals) @@ -804,7 +794,7 @@ func (s *PebbleStore) GetEmptyTickListPerEpoch(epoch uint32) ([]uint32, error) { defer closer.Close() if len(value)%4 != 0 { - return nil, errors.New(fmt.Sprintf("corrupted empty tick list for epoch %d. array length mod 4 != 0. length: %d", epoch, len(value))) + return nil, errors.Errorf("corrupted empty tick list for epoch %d. array length mod 4 != 0. length: %d", epoch, len(value)) } var emptyTicks []uint32 diff --git a/validator/tick/models.go b/validator/tick/models.go index 5d3c32b..558ae3e 100644 --- a/validator/tick/models.go +++ b/validator/tick/models.go @@ -2,7 +2,6 @@ package tick import ( "encoding/hex" - "fmt" "github.com/pkg/errors" "github.com/qubic/go-archiver/protobuff" "github.com/qubic/go-node-connector/types" @@ -90,7 +89,7 @@ func GetTickEpoch(tickNumber uint32, intervals []*protobuff.ProcessedTickInterva } } - return 0, errors.New(fmt.Sprintf("unable to find the epoch for tick %d", tickNumber)) + return 0, errors.Errorf("unable to find the epoch for tick %d", tickNumber) } func GetProcessedTickIntervalsForEpoch(epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (*protobuff.ProcessedTickIntervalsPerEpoch, error) { @@ -101,10 +100,10 @@ func GetProcessedTickIntervalsForEpoch(epoch uint32, intervals []*protobuff.Proc return interval, nil } - return nil, errors.New(fmt.Sprintf("unable to find processed tick intervals for epoch %d", epoch)) + return nil, errors.Errorf("unable to find processed tick intervals for epoch %d", epoch) } -func IsLast(tickNumber uint32, epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (bool, int, error) { +func IsTickLastInAnyEpochInterval(tickNumber uint32, epoch uint32, intervals []*protobuff.ProcessedTickIntervalsPerEpoch) (bool, int, error) { epochIntervals, err := GetProcessedTickIntervalsForEpoch(epoch, intervals) if err != nil { return false, -1, errors.Wrap(err, "getting processed tick intervals per epoch")