From b5a59b585cac1722217a779bc88f70347c8cb383 Mon Sep 17 00:00:00 2001 From: Wen Sun Date: Mon, 11 Jul 2022 16:01:56 +0800 Subject: [PATCH] Implement QueryVaultEvents rpc (#28) * Implement QueryVaultEvents rpc Also add ID to vault event response. * Fix test case, regenerate mock code * fixup! Implement QueryVaultEvents rpc --- Makefile | 2 +- core/vault.go | 6 + handler/rpc/pando/pando.pb.go | 1066 +++++++++++++++++------------- handler/rpc/pando/pando.twirp.go | 643 +++++++++++++----- handler/rpc/server.go | 39 ++ handler/rpc/views/vault.go | 3 + mock/gen.go | 2 +- mock/mock_gen.go | 31 + store/vault/vault.go | 17 + 9 files changed, 1177 insertions(+), 632 deletions(-) diff --git a/Makefile b/Makefile index c024b24..a080c7e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ TMPDIR := $(shell mktemp -d) sync-protos: git clone --branch gen-go git@github.com:fox-one/pando-protos.git $(TMPDIR) - cd $(TMPDIR); git reset --hard 9cb6d2b418a5e33a9f2d28e69874577935512b3a + cd $(TMPDIR); git reset --hard 3776e377a8d7112ce1dc1b830fa618b06a8595a9 cp -r $(TMPDIR)/pando/v1/* handler/rpc/pando diff --git a/core/vault.go b/core/vault.go index 1ff097e..6b7eeea 100644 --- a/core/vault.go +++ b/core/vault.go @@ -48,6 +48,11 @@ type ( Limit int } + QueryVaultEventsRequest struct { + FromID int64 + Limit int + } + VaultStore interface { Create(ctx context.Context, vault *Vault) error Update(ctx context.Context, vault *Vault, version int64) error @@ -59,5 +64,6 @@ type ( CreateEvent(ctx context.Context, event *VaultEvent) error FindEvent(ctx context.Context, vaultID string, version int64) (*VaultEvent, error) ListVaultEvents(ctx context.Context, vaultID string) ([]*VaultEvent, error) + QueryVaultEvents(ctx context.Context, req QueryVaultEventsRequest) ([]*VaultEvent, error) } ) diff --git a/handler/rpc/pando/pando.pb.go b/handler/rpc/pando/pando.pb.go index d27a1b7..18d0ac3 100644 --- a/handler/rpc/pando/pando.pb.go +++ b/handler/rpc/pando/pando.pb.go @@ -1463,6 +1463,7 @@ type Vault_Event struct { Dink string `protobuf:"bytes,4,opt,name=dink,proto3" json:"dink,omitempty"` Dart string `protobuf:"bytes,5,opt,name=dart,proto3" json:"dart,omitempty"` Debt string `protobuf:"bytes,6,opt,name=debt,proto3" json:"debt,omitempty"` + Id string `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"` } func (x *Vault_Event) Reset() { @@ -1539,6 +1540,13 @@ func (x *Vault_Event) GetDebt() string { return "" } +func (x *Vault_Event) GetId() string { + if x != nil { + return x.Id + } + return "" +} + type Flip_Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2181,6 +2189,61 @@ func (x *Req_ListVaultEvents) GetId() string { return "" } +type Req_QueryVaultEvents struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cursor string `protobuf:"bytes,1,opt,name=cursor,proto3" json:"cursor,omitempty"` + Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` +} + +func (x *Req_QueryVaultEvents) Reset() { + *x = Req_QueryVaultEvents{} + if protoimpl.UnsafeEnabled { + mi := &file_pando_v1_pando_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Req_QueryVaultEvents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Req_QueryVaultEvents) ProtoMessage() {} + +func (x *Req_QueryVaultEvents) ProtoReflect() protoreflect.Message { + mi := &file_pando_v1_pando_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Req_QueryVaultEvents.ProtoReflect.Descriptor instead. +func (*Req_QueryVaultEvents) Descriptor() ([]byte, []int) { + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 10} +} + +func (x *Req_QueryVaultEvents) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +func (x *Req_QueryVaultEvents) GetLimit() int64 { + if x != nil { + return x.Limit + } + return 0 +} + type Req_FindFlip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2193,7 +2256,7 @@ type Req_FindFlip struct { func (x *Req_FindFlip) Reset() { *x = Req_FindFlip{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[25] + mi := &file_pando_v1_pando_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2206,7 +2269,7 @@ func (x *Req_FindFlip) String() string { func (*Req_FindFlip) ProtoMessage() {} func (x *Req_FindFlip) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[25] + mi := &file_pando_v1_pando_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2219,7 +2282,7 @@ func (x *Req_FindFlip) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_FindFlip.ProtoReflect.Descriptor instead. func (*Req_FindFlip) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 10} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 11} } func (x *Req_FindFlip) GetId() string { @@ -2241,7 +2304,7 @@ type Req_ListFlips struct { func (x *Req_ListFlips) Reset() { *x = Req_ListFlips{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[26] + mi := &file_pando_v1_pando_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2254,7 +2317,7 @@ func (x *Req_ListFlips) String() string { func (*Req_ListFlips) ProtoMessage() {} func (x *Req_ListFlips) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[26] + mi := &file_pando_v1_pando_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2267,7 +2330,7 @@ func (x *Req_ListFlips) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_ListFlips.ProtoReflect.Descriptor instead. func (*Req_ListFlips) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 11} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 12} } func (x *Req_ListFlips) GetCursor() string { @@ -2299,7 +2362,7 @@ type Req_QueryFlips struct { func (x *Req_QueryFlips) Reset() { *x = Req_QueryFlips{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[27] + mi := &file_pando_v1_pando_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2312,7 +2375,7 @@ func (x *Req_QueryFlips) String() string { func (*Req_QueryFlips) ProtoMessage() {} func (x *Req_QueryFlips) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[27] + mi := &file_pando_v1_pando_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2325,7 +2388,7 @@ func (x *Req_QueryFlips) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_QueryFlips.ProtoReflect.Descriptor instead. func (*Req_QueryFlips) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 12} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 13} } func (x *Req_QueryFlips) GetOffset() int64 { @@ -2374,7 +2437,7 @@ type Req_ListFlipEvents struct { func (x *Req_ListFlipEvents) Reset() { *x = Req_ListFlipEvents{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[28] + mi := &file_pando_v1_pando_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2387,7 +2450,7 @@ func (x *Req_ListFlipEvents) String() string { func (*Req_ListFlipEvents) ProtoMessage() {} func (x *Req_ListFlipEvents) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[28] + mi := &file_pando_v1_pando_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2400,7 +2463,7 @@ func (x *Req_ListFlipEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_ListFlipEvents.ProtoReflect.Descriptor instead. func (*Req_ListFlipEvents) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 13} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 14} } func (x *Req_ListFlipEvents) GetId() string { @@ -2423,7 +2486,7 @@ type Req_FindTransaction struct { func (x *Req_FindTransaction) Reset() { *x = Req_FindTransaction{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[29] + mi := &file_pando_v1_pando_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2436,7 +2499,7 @@ func (x *Req_FindTransaction) String() string { func (*Req_FindTransaction) ProtoMessage() {} func (x *Req_FindTransaction) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[29] + mi := &file_pando_v1_pando_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2449,7 +2512,7 @@ func (x *Req_FindTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_FindTransaction.ProtoReflect.Descriptor instead. func (*Req_FindTransaction) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 14} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 15} } func (x *Req_FindTransaction) GetId() string { @@ -2471,7 +2534,7 @@ type Req_ListTransactions struct { func (x *Req_ListTransactions) Reset() { *x = Req_ListTransactions{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[30] + mi := &file_pando_v1_pando_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2484,7 +2547,7 @@ func (x *Req_ListTransactions) String() string { func (*Req_ListTransactions) ProtoMessage() {} func (x *Req_ListTransactions) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[30] + mi := &file_pando_v1_pando_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2497,7 +2560,7 @@ func (x *Req_ListTransactions) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_ListTransactions.ProtoReflect.Descriptor instead. func (*Req_ListTransactions) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 15} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 16} } func (x *Req_ListTransactions) GetCursor() string { @@ -2526,7 +2589,7 @@ type Req_ListProposals struct { func (x *Req_ListProposals) Reset() { *x = Req_ListProposals{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[31] + mi := &file_pando_v1_pando_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2539,7 +2602,7 @@ func (x *Req_ListProposals) String() string { func (*Req_ListProposals) ProtoMessage() {} func (x *Req_ListProposals) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[31] + mi := &file_pando_v1_pando_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2552,7 +2615,7 @@ func (x *Req_ListProposals) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_ListProposals.ProtoReflect.Descriptor instead. func (*Req_ListProposals) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 16} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 17} } func (x *Req_ListProposals) GetCursor() string { @@ -2581,7 +2644,7 @@ type Req_FindProposal struct { func (x *Req_FindProposal) Reset() { *x = Req_FindProposal{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[32] + mi := &file_pando_v1_pando_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2594,7 +2657,7 @@ func (x *Req_FindProposal) String() string { func (*Req_FindProposal) ProtoMessage() {} func (x *Req_FindProposal) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[32] + mi := &file_pando_v1_pando_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2607,7 +2670,7 @@ func (x *Req_FindProposal) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_FindProposal.ProtoReflect.Descriptor instead. func (*Req_FindProposal) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 17} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 18} } func (x *Req_FindProposal) GetId() string { @@ -2632,7 +2695,7 @@ type Req_ListStats struct { func (x *Req_ListStats) Reset() { *x = Req_ListStats{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[33] + mi := &file_pando_v1_pando_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2645,7 +2708,7 @@ func (x *Req_ListStats) String() string { func (*Req_ListStats) ProtoMessage() {} func (x *Req_ListStats) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[33] + mi := &file_pando_v1_pando_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2658,7 +2721,7 @@ func (x *Req_ListStats) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_ListStats.ProtoReflect.Descriptor instead. func (*Req_ListStats) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 18} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 19} } func (x *Req_ListStats) GetId() string { @@ -2694,7 +2757,7 @@ type Req_ListAggregatedStats struct { func (x *Req_ListAggregatedStats) Reset() { *x = Req_ListAggregatedStats{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[34] + mi := &file_pando_v1_pando_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2707,7 +2770,7 @@ func (x *Req_ListAggregatedStats) String() string { func (*Req_ListAggregatedStats) ProtoMessage() {} func (x *Req_ListAggregatedStats) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[34] + mi := &file_pando_v1_pando_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2720,7 +2783,7 @@ func (x *Req_ListAggregatedStats) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_ListAggregatedStats.ProtoReflect.Descriptor instead. func (*Req_ListAggregatedStats) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 19} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 20} } func (x *Req_ListAggregatedStats) GetFrom() int64 { @@ -2746,7 +2809,7 @@ type Req_GetInfo struct { func (x *Req_GetInfo) Reset() { *x = Req_GetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[35] + mi := &file_pando_v1_pando_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2759,7 +2822,7 @@ func (x *Req_GetInfo) String() string { func (*Req_GetInfo) ProtoMessage() {} func (x *Req_GetInfo) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[35] + mi := &file_pando_v1_pando_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2772,7 +2835,7 @@ func (x *Req_GetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use Req_GetInfo.ProtoReflect.Descriptor instead. func (*Req_GetInfo) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 20} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{10, 21} } type Resp_ListAssets struct { @@ -2786,7 +2849,7 @@ type Resp_ListAssets struct { func (x *Resp_ListAssets) Reset() { *x = Resp_ListAssets{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[36] + mi := &file_pando_v1_pando_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2799,7 +2862,7 @@ func (x *Resp_ListAssets) String() string { func (*Resp_ListAssets) ProtoMessage() {} func (x *Resp_ListAssets) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[36] + mi := &file_pando_v1_pando_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2833,7 +2896,7 @@ type Resp_ListOracles struct { func (x *Resp_ListOracles) Reset() { *x = Resp_ListOracles{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[37] + mi := &file_pando_v1_pando_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2846,7 +2909,7 @@ func (x *Resp_ListOracles) String() string { func (*Resp_ListOracles) ProtoMessage() {} func (x *Resp_ListOracles) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[37] + mi := &file_pando_v1_pando_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2880,7 +2943,7 @@ type Resp_ListCollaterals struct { func (x *Resp_ListCollaterals) Reset() { *x = Resp_ListCollaterals{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[38] + mi := &file_pando_v1_pando_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2893,7 +2956,7 @@ func (x *Resp_ListCollaterals) String() string { func (*Resp_ListCollaterals) ProtoMessage() {} func (x *Resp_ListCollaterals) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[38] + mi := &file_pando_v1_pando_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2928,7 +2991,7 @@ type Resp_ListVaults struct { func (x *Resp_ListVaults) Reset() { *x = Resp_ListVaults{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[39] + mi := &file_pando_v1_pando_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2941,7 +3004,7 @@ func (x *Resp_ListVaults) String() string { func (*Resp_ListVaults) ProtoMessage() {} func (x *Resp_ListVaults) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[39] + mi := &file_pando_v1_pando_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2982,7 +3045,7 @@ type Resp_ListMyVaults struct { func (x *Resp_ListMyVaults) Reset() { *x = Resp_ListMyVaults{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[40] + mi := &file_pando_v1_pando_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2995,7 +3058,7 @@ func (x *Resp_ListMyVaults) String() string { func (*Resp_ListMyVaults) ProtoMessage() {} func (x *Resp_ListMyVaults) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[40] + mi := &file_pando_v1_pando_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3029,7 +3092,7 @@ type Resp_ListVaultEvents struct { func (x *Resp_ListVaultEvents) Reset() { *x = Resp_ListVaultEvents{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[41] + mi := &file_pando_v1_pando_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3042,7 +3105,7 @@ func (x *Resp_ListVaultEvents) String() string { func (*Resp_ListVaultEvents) ProtoMessage() {} func (x *Resp_ListVaultEvents) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[41] + mi := &file_pando_v1_pando_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3065,6 +3128,61 @@ func (x *Resp_ListVaultEvents) GetEvents() []*Vault_Event { return nil } +type Resp_QueryVaultEvents struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Events []*Vault_Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *Resp_QueryVaultEvents) Reset() { + *x = Resp_QueryVaultEvents{} + if protoimpl.UnsafeEnabled { + mi := &file_pando_v1_pando_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Resp_QueryVaultEvents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Resp_QueryVaultEvents) ProtoMessage() {} + +func (x *Resp_QueryVaultEvents) ProtoReflect() protoreflect.Message { + mi := &file_pando_v1_pando_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Resp_QueryVaultEvents.ProtoReflect.Descriptor instead. +func (*Resp_QueryVaultEvents) Descriptor() ([]byte, []int) { + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 6} +} + +func (x *Resp_QueryVaultEvents) GetEvents() []*Vault_Event { + if x != nil { + return x.Events + } + return nil +} + +func (x *Resp_QueryVaultEvents) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + type Resp_ListFlips struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3077,7 +3195,7 @@ type Resp_ListFlips struct { func (x *Resp_ListFlips) Reset() { *x = Resp_ListFlips{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[42] + mi := &file_pando_v1_pando_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3090,7 +3208,7 @@ func (x *Resp_ListFlips) String() string { func (*Resp_ListFlips) ProtoMessage() {} func (x *Resp_ListFlips) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[42] + mi := &file_pando_v1_pando_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3103,7 +3221,7 @@ func (x *Resp_ListFlips) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_ListFlips.ProtoReflect.Descriptor instead. func (*Resp_ListFlips) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 6} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 7} } func (x *Resp_ListFlips) GetFlips() []*Flip { @@ -3132,7 +3250,7 @@ type Resp_QueryFlips struct { func (x *Resp_QueryFlips) Reset() { *x = Resp_QueryFlips{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[43] + mi := &file_pando_v1_pando_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3145,7 +3263,7 @@ func (x *Resp_QueryFlips) String() string { func (*Resp_QueryFlips) ProtoMessage() {} func (x *Resp_QueryFlips) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[43] + mi := &file_pando_v1_pando_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3158,7 +3276,7 @@ func (x *Resp_QueryFlips) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_QueryFlips.ProtoReflect.Descriptor instead. func (*Resp_QueryFlips) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 7} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 8} } func (x *Resp_QueryFlips) GetFlips() []*Flip { @@ -3186,7 +3304,7 @@ type Resp_ListFlipEvents struct { func (x *Resp_ListFlipEvents) Reset() { *x = Resp_ListFlipEvents{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[44] + mi := &file_pando_v1_pando_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3199,7 +3317,7 @@ func (x *Resp_ListFlipEvents) String() string { func (*Resp_ListFlipEvents) ProtoMessage() {} func (x *Resp_ListFlipEvents) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[44] + mi := &file_pando_v1_pando_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3212,7 +3330,7 @@ func (x *Resp_ListFlipEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_ListFlipEvents.ProtoReflect.Descriptor instead. func (*Resp_ListFlipEvents) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 8} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 9} } func (x *Resp_ListFlipEvents) GetEvents() []*Flip_Event { @@ -3234,7 +3352,7 @@ type Resp_ListTransactions struct { func (x *Resp_ListTransactions) Reset() { *x = Resp_ListTransactions{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[45] + mi := &file_pando_v1_pando_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3247,7 +3365,7 @@ func (x *Resp_ListTransactions) String() string { func (*Resp_ListTransactions) ProtoMessage() {} func (x *Resp_ListTransactions) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[45] + mi := &file_pando_v1_pando_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3260,7 +3378,7 @@ func (x *Resp_ListTransactions) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_ListTransactions.ProtoReflect.Descriptor instead. func (*Resp_ListTransactions) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 9} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 10} } func (x *Resp_ListTransactions) GetTransactions() []*Transaction { @@ -3289,7 +3407,7 @@ type Resp_ListProposals struct { func (x *Resp_ListProposals) Reset() { *x = Resp_ListProposals{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[46] + mi := &file_pando_v1_pando_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3302,7 +3420,7 @@ func (x *Resp_ListProposals) String() string { func (*Resp_ListProposals) ProtoMessage() {} func (x *Resp_ListProposals) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[46] + mi := &file_pando_v1_pando_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3315,7 +3433,7 @@ func (x *Resp_ListProposals) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_ListProposals.ProtoReflect.Descriptor instead. func (*Resp_ListProposals) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 10} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 11} } func (x *Resp_ListProposals) GetProposals() []*Proposal { @@ -3343,7 +3461,7 @@ type Resp_ListStats struct { func (x *Resp_ListStats) Reset() { *x = Resp_ListStats{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[47] + mi := &file_pando_v1_pando_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3356,7 +3474,7 @@ func (x *Resp_ListStats) String() string { func (*Resp_ListStats) ProtoMessage() {} func (x *Resp_ListStats) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[47] + mi := &file_pando_v1_pando_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3369,7 +3487,7 @@ func (x *Resp_ListStats) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_ListStats.ProtoReflect.Descriptor instead. func (*Resp_ListStats) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 11} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 12} } func (x *Resp_ListStats) GetStats() []*Stat { @@ -3390,7 +3508,7 @@ type Resp_ListAggregatedStats struct { func (x *Resp_ListAggregatedStats) Reset() { *x = Resp_ListAggregatedStats{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[48] + mi := &file_pando_v1_pando_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3403,7 +3521,7 @@ func (x *Resp_ListAggregatedStats) String() string { func (*Resp_ListAggregatedStats) ProtoMessage() {} func (x *Resp_ListAggregatedStats) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[48] + mi := &file_pando_v1_pando_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3416,7 +3534,7 @@ func (x *Resp_ListAggregatedStats) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_ListAggregatedStats.ProtoReflect.Descriptor instead. func (*Resp_ListAggregatedStats) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 12} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 13} } func (x *Resp_ListAggregatedStats) GetStats() []*AggregatedStat { @@ -3440,7 +3558,7 @@ type Resp_GetInfo struct { func (x *Resp_GetInfo) Reset() { *x = Resp_GetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pando_v1_pando_proto_msgTypes[49] + mi := &file_pando_v1_pando_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3453,7 +3571,7 @@ func (x *Resp_GetInfo) String() string { func (*Resp_GetInfo) ProtoMessage() {} func (x *Resp_GetInfo) ProtoReflect() protoreflect.Message { - mi := &file_pando_v1_pando_proto_msgTypes[49] + mi := &file_pando_v1_pando_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3466,7 +3584,7 @@ func (x *Resp_GetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use Resp_GetInfo.ProtoReflect.Descriptor instead. func (*Resp_GetInfo) Descriptor() ([]byte, []int) { - return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 13} + return file_pando_v1_pando_proto_rawDescGZIP(), []int{11, 14} } func (x *Resp_GetInfo) GetOauthClientId() string { @@ -3557,7 +3675,7 @@ var file_pando_v1_pando_proto_rawDesc = []byte{ 0x6f, 0x78, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x6f, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x8b, 0x03, + 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x9b, 0x03, 0x0a, 0x05, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, @@ -3569,7 +3687,7 @@ var file_pando_v1_pando_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x6e, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x1a, 0xcc, 0x01, 0x0a, + 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x1a, 0xdc, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, @@ -3582,7 +3700,8 @@ var file_pando_v1_pando_proto_rawDesc = []byte{ 0x12, 0x0a, 0x04, 0x64, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x62, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x62, 0x74, 0x22, 0xa8, 0x05, 0x0a, 0x04, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x62, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa8, 0x05, 0x0a, 0x04, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, @@ -3715,7 +3834,7 @@ var file_pando_v1_pando_proto_rawDesc = []byte{ 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x65, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x69, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x69, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x07, 0x0a, 0x03, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x0a, 0x09, 0x46, + 0x6c, 0x75, 0x65, 0x22, 0x99, 0x08, 0x0a, 0x03, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x0a, 0x09, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x0c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, 0x1c, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x72, @@ -3740,272 +3859,291 @@ var file_pando_v1_pando_proto_rawDesc = []byte{ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x21, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x1a, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x64, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x39, 0x0a, 0x09, - 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x86, 0x01, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x79, - 0x5f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x79, 0x5f, 0x62, 0x69, - 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x79, 0x42, 0x69, 0x64, 0x73, - 0x1a, 0x20, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x1a, 0x21, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x40, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x3d, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x1a, 0x40, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x1a, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x64, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x39, + 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x86, 0x01, 0x0a, 0x0a, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x1e, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x3f, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x6f, 0x1a, 0x39, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x72, - 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x74, 0x6f, 0x1a, 0x09, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xbc, 0x0a, - 0x0a, 0x04, 0x52, 0x65, 0x73, 0x70, 0x1a, 0x3e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, - 0x73, 0x65, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, 0x42, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, - 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x52, 0x07, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x1a, 0x52, 0x0a, 0x0f, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x0a, - 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, 0x7d, - 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, - 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, - 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3d, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x40, 0x0a, - 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x30, 0x0a, - 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x1a, - 0x49, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x79, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x66, 0x6c, 0x69, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, - 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, - 0x05, 0x66, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, - 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6c, - 0x69, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x66, 0x6c, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x05, 0x66, 0x6c, 0x69, - 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x1a, 0x47, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, - 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, - 0x6c, 0x69, 0x70, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x1a, 0x95, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, - 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 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, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x89, 0x01, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x79, 0x5f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x79, 0x5f, + 0x62, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x79, 0x42, 0x69, + 0x64, 0x73, 0x1a, 0x20, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x1a, 0x21, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x40, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x3d, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x1e, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x3f, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x6f, 0x1a, 0x39, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x74, 0x6f, 0x1a, 0x09, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0xc8, 0x0b, 0x0a, 0x04, 0x52, 0x65, 0x73, 0x70, 0x1a, 0x3e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, + 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, 0x42, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x72, 0x61, 0x63, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, + 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x72, 0x61, + 0x63, 0x6c, 0x65, 0x52, 0x07, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x1a, 0x52, 0x0a, 0x0f, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, + 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x1a, 0x7d, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x30, + 0x0a, 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, - 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x1a, 0x4e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, - 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x1a, 0x88, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, - 0x0f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x2a, 0x97, 0x03, 0x0a, - 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x05, 0x0a, 0x01, 0x5f, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x01, 0x12, - 0x15, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x4d, 0x61, 0x6b, 0x65, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x75, 0x74, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x10, 0x0d, 0x12, 0x0d, 0x0a, - 0x09, 0x43, 0x61, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0x15, 0x12, 0x0d, 0x0a, 0x09, - 0x43, 0x61, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x10, 0x16, 0x12, 0x0b, 0x0a, 0x07, 0x43, - 0x61, 0x74, 0x45, 0x64, 0x69, 0x74, 0x10, 0x17, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x46, - 0x6f, 0x6c, 0x64, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x4d, 0x6f, 0x76, 0x65, - 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x1a, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x6c, 0x10, 0x1b, 0x12, 0x0b, 0x0a, 0x07, - 0x56, 0x61, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0x1f, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x61, 0x74, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x10, 0x20, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x61, 0x74, - 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x21, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x61, - 0x74, 0x50, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x22, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x61, - 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, 0x23, 0x12, 0x0c, 0x0a, 0x08, 0x46, - 0x6c, 0x69, 0x70, 0x4b, 0x69, 0x63, 0x6b, 0x10, 0x29, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x69, - 0x70, 0x42, 0x69, 0x64, 0x10, 0x2a, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x6c, 0x69, 0x70, 0x44, 0x65, - 0x61, 0x6c, 0x10, 0x2b, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x10, 0x33, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x45, 0x64, 0x69, 0x74, 0x10, 0x34, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x50, 0x6f, 0x6b, 0x65, 0x10, 0x35, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x52, 0x65, 0x6c, 0x79, 0x10, 0x36, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x44, 0x65, 0x6e, 0x79, 0x10, 0x37, 0x32, 0xb0, 0x0e, 0x0a, 0x05, 0x50, 0x61, 0x6e, 0x64, 0x6f, - 0x12, 0x47, 0x0a, 0x09, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x20, 0x2e, - 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x1a, + 0x63, 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x40, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x30, 0x0a, 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x0a, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, - 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, 0x22, 0x2e, 0x66, 0x6f, 0x78, - 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x4a, - 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x21, 0x2e, 0x66, - 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x1a, - 0x19, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x66, 0x6f, 0x78, 0x2e, - 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, - 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x1a, 0x23, 0x2e, + 0x69, 0x63, 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x76, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x1a, 0x49, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x89, 0x01, 0x0a, + 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x36, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, 0x27, 0x2e, - 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, - 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x25, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, - 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, - 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x1a, - 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x47, - 0x0a, 0x09, 0x46, 0x69, 0x6e, 0x64, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x2e, 0x66, 0x6f, + 0x65, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x79, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x66, 0x6c, 0x69, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x05, 0x66, + 0x6c, 0x69, 0x70, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, + 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6c, 0x69, 0x70, + 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x66, 0x6c, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x52, 0x05, 0x66, 0x6c, 0x69, 0x70, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x1a, 0x47, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, + 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, + 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6c, 0x69, + 0x70, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, + 0x95, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6f, 0x78, + 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 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, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, + 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x89, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, + 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, + 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, + 0x4e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, + 0x88, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0f, 0x6f, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x2a, 0x97, 0x03, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x05, 0x0a, 0x01, 0x5f, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x53, 0x79, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x01, 0x12, 0x15, 0x0a, + 0x11, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x4d, 0x61, 0x6b, 0x65, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x75, 0x74, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x43, + 0x61, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0x15, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x61, + 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x10, 0x16, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, + 0x45, 0x64, 0x69, 0x74, 0x10, 0x17, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x46, 0x6f, 0x6c, + 0x64, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x10, 0x19, + 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x1a, 0x12, 0x0b, 0x0a, + 0x07, 0x43, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x6c, 0x10, 0x1b, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x61, + 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0x1f, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x61, 0x74, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x10, 0x20, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x61, 0x74, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x21, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x61, 0x74, 0x50, + 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x22, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x61, 0x74, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, 0x23, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x6c, 0x69, + 0x70, 0x4b, 0x69, 0x63, 0x6b, 0x10, 0x29, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x69, 0x70, 0x42, + 0x69, 0x64, 0x10, 0x2a, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x6c, 0x69, 0x70, 0x44, 0x65, 0x61, 0x6c, + 0x10, 0x2b, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x10, 0x33, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x45, 0x64, + 0x69, 0x74, 0x10, 0x34, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x50, 0x6f, + 0x6b, 0x65, 0x10, 0x35, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x52, 0x65, + 0x6c, 0x79, 0x10, 0x36, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x65, + 0x6e, 0x79, 0x10, 0x37, 0x32, 0x97, 0x0f, 0x0a, 0x05, 0x50, 0x61, 0x6e, 0x64, 0x6f, 0x12, 0x47, + 0x0a, 0x09, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x18, 0x2e, + 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x53, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x56, - 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, + 0x65, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x22, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, + 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, 0x22, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x66, - 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, - 0x73, 0x1a, 0x24, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, - 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6f, 0x78, + 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0a, + 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, - 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x1a, 0x27, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x46, - 0x69, 0x6e, 0x64, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x1f, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, + 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x1a, 0x19, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x46, 0x6c, 0x69, 0x70, 0x1a, 0x17, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, - 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6c, 0x69, - 0x70, 0x12, 0x50, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x20, - 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x73, - 0x1a, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, - 0x69, 0x70, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x26, 0x2e, 0x66, - 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6c, 0x69, - 0x70, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x46, 0x6c, 0x69, 0x70, 0x73, 0x1a, 0x22, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x46, 0x69, 0x6e, - 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x66, - 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1e, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, - 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x28, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x46, - 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x23, 0x2e, 0x66, 0x6f, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x1a, 0x23, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x1a, 0x1b, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x5c, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x24, - 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x1a, 0x25, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x50, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, - 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x21, 0x2e, 0x66, 0x6f, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, + 0x12, 0x62, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, 0x27, 0x2e, 0x66, 0x6f, + 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x25, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, + 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x1a, 0x1d, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x09, + 0x46, 0x69, 0x6e, 0x64, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x2e, 0x66, 0x6f, 0x78, 0x2e, + 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, + 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x18, 0x2e, 0x66, 0x6f, + 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x53, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x22, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, + 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x4d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x6e, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x1a, 0x2b, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4a, 0x0a, - 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, + 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x1a, + 0x24, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x79, 0x56, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, - 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x1f, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, - 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6f, 0x78, 0x2d, 0x6f, 0x6e, 0x65, 0x2f, - 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x61, 0x6e, - 0x64, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x1a, 0x27, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, + 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x65, 0x0a, 0x10, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x28, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, + 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x44, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x64, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x1f, 0x2e, 0x66, + 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x46, 0x6c, 0x69, 0x70, 0x1a, 0x17, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x46, 0x6c, 0x69, 0x70, 0x12, 0x50, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, + 0x69, 0x70, 0x73, 0x12, 0x20, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x6c, 0x69, 0x70, 0x73, 0x1a, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x66, 0x6f, 0x78, + 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x1a, 0x26, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x6c, 0x69, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0a, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, + 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x1a, 0x22, 0x2e, 0x66, 0x6f, 0x78, + 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x73, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x59, + 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1e, 0x2e, 0x66, 0x6f, 0x78, 0x2e, + 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x28, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, + 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x50, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x12, 0x23, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x1b, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x5c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x1a, 0x25, 0x2e, 0x66, 0x6f, 0x78, 0x2e, + 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, + 0x12, 0x50, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x20, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, + 0x21, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6f, 0x78, 0x2e, + 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, + 0x71, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x2b, 0x2e, 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x52, 0x65, 0x71, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x1f, 0x2e, + 0x66, 0x6f, 0x78, 0x2e, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x30, + 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6f, 0x78, + 0x2d, 0x6f, 0x6e, 0x65, 0x2f, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x2f, 0x70, 0x61, 0x6e, 0x64, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x61, 0x6e, 0x64, 0x6f, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4021,7 +4159,7 @@ func file_pando_v1_pando_proto_rawDescGZIP() []byte { } var file_pando_v1_pando_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_pando_v1_pando_proto_msgTypes = make([]protoimpl.MessageInfo, 50) +var file_pando_v1_pando_proto_msgTypes = make([]protoimpl.MessageInfo, 52) var file_pando_v1_pando_proto_goTypes = []interface{}{ (Action)(0), // 0: fox.pando.service.Action (Flip_Tag)(0), // 1: fox.pando.service.Flip.Tag @@ -4051,56 +4189,58 @@ var file_pando_v1_pando_proto_goTypes = []interface{}{ (*Req_ListVaults)(nil), // 25: fox.pando.service.Req.ListVaults (*Req_ListMyVaults)(nil), // 26: fox.pando.service.Req.ListMyVaults (*Req_ListVaultEvents)(nil), // 27: fox.pando.service.Req.ListVaultEvents - (*Req_FindFlip)(nil), // 28: fox.pando.service.Req.FindFlip - (*Req_ListFlips)(nil), // 29: fox.pando.service.Req.ListFlips - (*Req_QueryFlips)(nil), // 30: fox.pando.service.Req.QueryFlips - (*Req_ListFlipEvents)(nil), // 31: fox.pando.service.Req.ListFlipEvents - (*Req_FindTransaction)(nil), // 32: fox.pando.service.Req.FindTransaction - (*Req_ListTransactions)(nil), // 33: fox.pando.service.Req.ListTransactions - (*Req_ListProposals)(nil), // 34: fox.pando.service.Req.ListProposals - (*Req_FindProposal)(nil), // 35: fox.pando.service.Req.FindProposal - (*Req_ListStats)(nil), // 36: fox.pando.service.Req.ListStats - (*Req_ListAggregatedStats)(nil), // 37: fox.pando.service.Req.ListAggregatedStats - (*Req_GetInfo)(nil), // 38: fox.pando.service.Req.GetInfo - (*Resp_ListAssets)(nil), // 39: fox.pando.service.Resp.ListAssets - (*Resp_ListOracles)(nil), // 40: fox.pando.service.Resp.ListOracles - (*Resp_ListCollaterals)(nil), // 41: fox.pando.service.Resp.ListCollaterals - (*Resp_ListVaults)(nil), // 42: fox.pando.service.Resp.ListVaults - (*Resp_ListMyVaults)(nil), // 43: fox.pando.service.Resp.ListMyVaults - (*Resp_ListVaultEvents)(nil), // 44: fox.pando.service.Resp.ListVaultEvents - (*Resp_ListFlips)(nil), // 45: fox.pando.service.Resp.ListFlips - (*Resp_QueryFlips)(nil), // 46: fox.pando.service.Resp.QueryFlips - (*Resp_ListFlipEvents)(nil), // 47: fox.pando.service.Resp.ListFlipEvents - (*Resp_ListTransactions)(nil), // 48: fox.pando.service.Resp.ListTransactions - (*Resp_ListProposals)(nil), // 49: fox.pando.service.Resp.ListProposals - (*Resp_ListStats)(nil), // 50: fox.pando.service.Resp.ListStats - (*Resp_ListAggregatedStats)(nil), // 51: fox.pando.service.Resp.ListAggregatedStats - (*Resp_GetInfo)(nil), // 52: fox.pando.service.Resp.GetInfo - (*timestamppb.Timestamp)(nil), // 53: google.protobuf.Timestamp + (*Req_QueryVaultEvents)(nil), // 28: fox.pando.service.Req.QueryVaultEvents + (*Req_FindFlip)(nil), // 29: fox.pando.service.Req.FindFlip + (*Req_ListFlips)(nil), // 30: fox.pando.service.Req.ListFlips + (*Req_QueryFlips)(nil), // 31: fox.pando.service.Req.QueryFlips + (*Req_ListFlipEvents)(nil), // 32: fox.pando.service.Req.ListFlipEvents + (*Req_FindTransaction)(nil), // 33: fox.pando.service.Req.FindTransaction + (*Req_ListTransactions)(nil), // 34: fox.pando.service.Req.ListTransactions + (*Req_ListProposals)(nil), // 35: fox.pando.service.Req.ListProposals + (*Req_FindProposal)(nil), // 36: fox.pando.service.Req.FindProposal + (*Req_ListStats)(nil), // 37: fox.pando.service.Req.ListStats + (*Req_ListAggregatedStats)(nil), // 38: fox.pando.service.Req.ListAggregatedStats + (*Req_GetInfo)(nil), // 39: fox.pando.service.Req.GetInfo + (*Resp_ListAssets)(nil), // 40: fox.pando.service.Resp.ListAssets + (*Resp_ListOracles)(nil), // 41: fox.pando.service.Resp.ListOracles + (*Resp_ListCollaterals)(nil), // 42: fox.pando.service.Resp.ListCollaterals + (*Resp_ListVaults)(nil), // 43: fox.pando.service.Resp.ListVaults + (*Resp_ListMyVaults)(nil), // 44: fox.pando.service.Resp.ListMyVaults + (*Resp_ListVaultEvents)(nil), // 45: fox.pando.service.Resp.ListVaultEvents + (*Resp_QueryVaultEvents)(nil), // 46: fox.pando.service.Resp.QueryVaultEvents + (*Resp_ListFlips)(nil), // 47: fox.pando.service.Resp.ListFlips + (*Resp_QueryFlips)(nil), // 48: fox.pando.service.Resp.QueryFlips + (*Resp_ListFlipEvents)(nil), // 49: fox.pando.service.Resp.ListFlipEvents + (*Resp_ListTransactions)(nil), // 50: fox.pando.service.Resp.ListTransactions + (*Resp_ListProposals)(nil), // 51: fox.pando.service.Resp.ListProposals + (*Resp_ListStats)(nil), // 52: fox.pando.service.Resp.ListStats + (*Resp_ListAggregatedStats)(nil), // 53: fox.pando.service.Resp.ListAggregatedStats + (*Resp_GetInfo)(nil), // 54: fox.pando.service.Resp.GetInfo + (*timestamppb.Timestamp)(nil), // 55: google.protobuf.Timestamp } var file_pando_v1_pando_proto_depIdxs = []int32{ 4, // 0: fox.pando.service.Asset.chain:type_name -> fox.pando.service.Asset - 53, // 1: fox.pando.service.Collateral.created_at:type_name -> google.protobuf.Timestamp - 53, // 2: fox.pando.service.Collateral.rho:type_name -> google.protobuf.Timestamp - 53, // 3: fox.pando.service.Vault.created_at:type_name -> google.protobuf.Timestamp - 53, // 4: fox.pando.service.Flip.created_at:type_name -> google.protobuf.Timestamp - 53, // 5: fox.pando.service.Flip.tic:type_name -> google.protobuf.Timestamp - 53, // 6: fox.pando.service.Flip.end:type_name -> google.protobuf.Timestamp + 55, // 1: fox.pando.service.Collateral.created_at:type_name -> google.protobuf.Timestamp + 55, // 2: fox.pando.service.Collateral.rho:type_name -> google.protobuf.Timestamp + 55, // 3: fox.pando.service.Vault.created_at:type_name -> google.protobuf.Timestamp + 55, // 4: fox.pando.service.Flip.created_at:type_name -> google.protobuf.Timestamp + 55, // 5: fox.pando.service.Flip.tic:type_name -> google.protobuf.Timestamp + 55, // 6: fox.pando.service.Flip.end:type_name -> google.protobuf.Timestamp 0, // 7: fox.pando.service.Flip.action:type_name -> fox.pando.service.Action 1, // 8: fox.pando.service.Flip.tags:type_name -> fox.pando.service.Flip.Tag - 53, // 9: fox.pando.service.Proposal.created_at:type_name -> google.protobuf.Timestamp - 53, // 10: fox.pando.service.Proposal.passed_at:type_name -> google.protobuf.Timestamp + 55, // 9: fox.pando.service.Proposal.created_at:type_name -> google.protobuf.Timestamp + 55, // 10: fox.pando.service.Proposal.passed_at:type_name -> google.protobuf.Timestamp 0, // 11: fox.pando.service.Proposal.action:type_name -> fox.pando.service.Action 17, // 12: fox.pando.service.Proposal.items:type_name -> fox.pando.service.Proposal.Item - 53, // 13: fox.pando.service.Oracle.peek_at:type_name -> google.protobuf.Timestamp - 53, // 14: fox.pando.service.Transaction.created_at:type_name -> google.protobuf.Timestamp + 55, // 13: fox.pando.service.Oracle.peek_at:type_name -> google.protobuf.Timestamp + 55, // 14: fox.pando.service.Transaction.created_at:type_name -> google.protobuf.Timestamp 0, // 15: fox.pando.service.Transaction.action:type_name -> fox.pando.service.Action 2, // 16: fox.pando.service.Transaction.status:type_name -> fox.pando.service.Transaction.Status - 53, // 17: fox.pando.service.Stat.date:type_name -> google.protobuf.Timestamp - 53, // 18: fox.pando.service.AggregatedStat.date:type_name -> google.protobuf.Timestamp - 53, // 19: fox.pando.service.Vault.Event.created_at:type_name -> google.protobuf.Timestamp + 55, // 17: fox.pando.service.Stat.date:type_name -> google.protobuf.Timestamp + 55, // 18: fox.pando.service.AggregatedStat.date:type_name -> google.protobuf.Timestamp + 55, // 19: fox.pando.service.Vault.Event.created_at:type_name -> google.protobuf.Timestamp 0, // 20: fox.pando.service.Vault.Event.action:type_name -> fox.pando.service.Action - 53, // 21: fox.pando.service.Flip.Event.created_at:type_name -> google.protobuf.Timestamp + 55, // 21: fox.pando.service.Flip.Event.created_at:type_name -> google.protobuf.Timestamp 0, // 22: fox.pando.service.Flip.Event.action:type_name -> fox.pando.service.Action 4, // 23: fox.pando.service.Resp.ListAssets.assets:type_name -> fox.pando.service.Asset 9, // 24: fox.pando.service.Resp.ListOracles.oracles:type_name -> fox.pando.service.Oracle @@ -4109,63 +4249,67 @@ var file_pando_v1_pando_proto_depIdxs = []int32{ 3, // 27: fox.pando.service.Resp.ListVaults.pagination:type_name -> fox.pando.service.Pagination 6, // 28: fox.pando.service.Resp.ListMyVaults.vaults:type_name -> fox.pando.service.Vault 15, // 29: fox.pando.service.Resp.ListVaultEvents.events:type_name -> fox.pando.service.Vault.Event - 7, // 30: fox.pando.service.Resp.ListFlips.flips:type_name -> fox.pando.service.Flip - 3, // 31: fox.pando.service.Resp.ListFlips.pagination:type_name -> fox.pando.service.Pagination - 7, // 32: fox.pando.service.Resp.QueryFlips.flips:type_name -> fox.pando.service.Flip - 16, // 33: fox.pando.service.Resp.ListFlipEvents.events:type_name -> fox.pando.service.Flip.Event - 10, // 34: fox.pando.service.Resp.ListTransactions.transactions:type_name -> fox.pando.service.Transaction - 3, // 35: fox.pando.service.Resp.ListTransactions.pagination:type_name -> fox.pando.service.Pagination - 8, // 36: fox.pando.service.Resp.ListProposals.proposals:type_name -> fox.pando.service.Proposal - 3, // 37: fox.pando.service.Resp.ListProposals.pagination:type_name -> fox.pando.service.Pagination - 11, // 38: fox.pando.service.Resp.ListStats.stats:type_name -> fox.pando.service.Stat - 12, // 39: fox.pando.service.Resp.ListAggregatedStats.stats:type_name -> fox.pando.service.AggregatedStat - 18, // 40: fox.pando.service.Pando.FindAsset:input_type -> fox.pando.service.Req.FindAsset - 19, // 41: fox.pando.service.Pando.ListAssets:input_type -> fox.pando.service.Req.ListAssets - 20, // 42: fox.pando.service.Pando.FindOracle:input_type -> fox.pando.service.Req.FindOracle - 21, // 43: fox.pando.service.Pando.ListOracles:input_type -> fox.pando.service.Req.ListOracles - 22, // 44: fox.pando.service.Pando.ListCollaterals:input_type -> fox.pando.service.Req.ListCollaterals - 23, // 45: fox.pando.service.Pando.FindCollateral:input_type -> fox.pando.service.Req.FindCollateral - 24, // 46: fox.pando.service.Pando.FindVault:input_type -> fox.pando.service.Req.FindVault - 25, // 47: fox.pando.service.Pando.ListVaults:input_type -> fox.pando.service.Req.ListVaults - 26, // 48: fox.pando.service.Pando.ListMyVaults:input_type -> fox.pando.service.Req.ListMyVaults - 27, // 49: fox.pando.service.Pando.ListVaultEvents:input_type -> fox.pando.service.Req.ListVaultEvents - 28, // 50: fox.pando.service.Pando.FindFlip:input_type -> fox.pando.service.Req.FindFlip - 29, // 51: fox.pando.service.Pando.ListFlips:input_type -> fox.pando.service.Req.ListFlips - 31, // 52: fox.pando.service.Pando.ListFlipEvents:input_type -> fox.pando.service.Req.ListFlipEvents - 30, // 53: fox.pando.service.Pando.QueryFlips:input_type -> fox.pando.service.Req.QueryFlips - 32, // 54: fox.pando.service.Pando.FindTransaction:input_type -> fox.pando.service.Req.FindTransaction - 33, // 55: fox.pando.service.Pando.ListTransactions:input_type -> fox.pando.service.Req.ListTransactions - 35, // 56: fox.pando.service.Pando.FindProposal:input_type -> fox.pando.service.Req.FindProposal - 34, // 57: fox.pando.service.Pando.ListProposals:input_type -> fox.pando.service.Req.ListProposals - 36, // 58: fox.pando.service.Pando.ListStats:input_type -> fox.pando.service.Req.ListStats - 37, // 59: fox.pando.service.Pando.ListAggregatedStats:input_type -> fox.pando.service.Req.ListAggregatedStats - 38, // 60: fox.pando.service.Pando.GetInfo:input_type -> fox.pando.service.Req.GetInfo - 4, // 61: fox.pando.service.Pando.FindAsset:output_type -> fox.pando.service.Asset - 39, // 62: fox.pando.service.Pando.ListAssets:output_type -> fox.pando.service.Resp.ListAssets - 9, // 63: fox.pando.service.Pando.FindOracle:output_type -> fox.pando.service.Oracle - 40, // 64: fox.pando.service.Pando.ListOracles:output_type -> fox.pando.service.Resp.ListOracles - 41, // 65: fox.pando.service.Pando.ListCollaterals:output_type -> fox.pando.service.Resp.ListCollaterals - 5, // 66: fox.pando.service.Pando.FindCollateral:output_type -> fox.pando.service.Collateral - 6, // 67: fox.pando.service.Pando.FindVault:output_type -> fox.pando.service.Vault - 42, // 68: fox.pando.service.Pando.ListVaults:output_type -> fox.pando.service.Resp.ListVaults - 43, // 69: fox.pando.service.Pando.ListMyVaults:output_type -> fox.pando.service.Resp.ListMyVaults - 44, // 70: fox.pando.service.Pando.ListVaultEvents:output_type -> fox.pando.service.Resp.ListVaultEvents - 7, // 71: fox.pando.service.Pando.FindFlip:output_type -> fox.pando.service.Flip - 45, // 72: fox.pando.service.Pando.ListFlips:output_type -> fox.pando.service.Resp.ListFlips - 47, // 73: fox.pando.service.Pando.ListFlipEvents:output_type -> fox.pando.service.Resp.ListFlipEvents - 46, // 74: fox.pando.service.Pando.QueryFlips:output_type -> fox.pando.service.Resp.QueryFlips - 10, // 75: fox.pando.service.Pando.FindTransaction:output_type -> fox.pando.service.Transaction - 48, // 76: fox.pando.service.Pando.ListTransactions:output_type -> fox.pando.service.Resp.ListTransactions - 8, // 77: fox.pando.service.Pando.FindProposal:output_type -> fox.pando.service.Proposal - 49, // 78: fox.pando.service.Pando.ListProposals:output_type -> fox.pando.service.Resp.ListProposals - 50, // 79: fox.pando.service.Pando.ListStats:output_type -> fox.pando.service.Resp.ListStats - 51, // 80: fox.pando.service.Pando.ListAggregatedStats:output_type -> fox.pando.service.Resp.ListAggregatedStats - 52, // 81: fox.pando.service.Pando.GetInfo:output_type -> fox.pando.service.Resp.GetInfo - 61, // [61:82] is the sub-list for method output_type - 40, // [40:61] is the sub-list for method input_type - 40, // [40:40] is the sub-list for extension type_name - 40, // [40:40] is the sub-list for extension extendee - 0, // [0:40] is the sub-list for field type_name + 15, // 30: fox.pando.service.Resp.QueryVaultEvents.events:type_name -> fox.pando.service.Vault.Event + 3, // 31: fox.pando.service.Resp.QueryVaultEvents.pagination:type_name -> fox.pando.service.Pagination + 7, // 32: fox.pando.service.Resp.ListFlips.flips:type_name -> fox.pando.service.Flip + 3, // 33: fox.pando.service.Resp.ListFlips.pagination:type_name -> fox.pando.service.Pagination + 7, // 34: fox.pando.service.Resp.QueryFlips.flips:type_name -> fox.pando.service.Flip + 16, // 35: fox.pando.service.Resp.ListFlipEvents.events:type_name -> fox.pando.service.Flip.Event + 10, // 36: fox.pando.service.Resp.ListTransactions.transactions:type_name -> fox.pando.service.Transaction + 3, // 37: fox.pando.service.Resp.ListTransactions.pagination:type_name -> fox.pando.service.Pagination + 8, // 38: fox.pando.service.Resp.ListProposals.proposals:type_name -> fox.pando.service.Proposal + 3, // 39: fox.pando.service.Resp.ListProposals.pagination:type_name -> fox.pando.service.Pagination + 11, // 40: fox.pando.service.Resp.ListStats.stats:type_name -> fox.pando.service.Stat + 12, // 41: fox.pando.service.Resp.ListAggregatedStats.stats:type_name -> fox.pando.service.AggregatedStat + 18, // 42: fox.pando.service.Pando.FindAsset:input_type -> fox.pando.service.Req.FindAsset + 19, // 43: fox.pando.service.Pando.ListAssets:input_type -> fox.pando.service.Req.ListAssets + 20, // 44: fox.pando.service.Pando.FindOracle:input_type -> fox.pando.service.Req.FindOracle + 21, // 45: fox.pando.service.Pando.ListOracles:input_type -> fox.pando.service.Req.ListOracles + 22, // 46: fox.pando.service.Pando.ListCollaterals:input_type -> fox.pando.service.Req.ListCollaterals + 23, // 47: fox.pando.service.Pando.FindCollateral:input_type -> fox.pando.service.Req.FindCollateral + 24, // 48: fox.pando.service.Pando.FindVault:input_type -> fox.pando.service.Req.FindVault + 25, // 49: fox.pando.service.Pando.ListVaults:input_type -> fox.pando.service.Req.ListVaults + 26, // 50: fox.pando.service.Pando.ListMyVaults:input_type -> fox.pando.service.Req.ListMyVaults + 27, // 51: fox.pando.service.Pando.ListVaultEvents:input_type -> fox.pando.service.Req.ListVaultEvents + 28, // 52: fox.pando.service.Pando.QueryVaultEvents:input_type -> fox.pando.service.Req.QueryVaultEvents + 29, // 53: fox.pando.service.Pando.FindFlip:input_type -> fox.pando.service.Req.FindFlip + 30, // 54: fox.pando.service.Pando.ListFlips:input_type -> fox.pando.service.Req.ListFlips + 32, // 55: fox.pando.service.Pando.ListFlipEvents:input_type -> fox.pando.service.Req.ListFlipEvents + 31, // 56: fox.pando.service.Pando.QueryFlips:input_type -> fox.pando.service.Req.QueryFlips + 33, // 57: fox.pando.service.Pando.FindTransaction:input_type -> fox.pando.service.Req.FindTransaction + 34, // 58: fox.pando.service.Pando.ListTransactions:input_type -> fox.pando.service.Req.ListTransactions + 36, // 59: fox.pando.service.Pando.FindProposal:input_type -> fox.pando.service.Req.FindProposal + 35, // 60: fox.pando.service.Pando.ListProposals:input_type -> fox.pando.service.Req.ListProposals + 37, // 61: fox.pando.service.Pando.ListStats:input_type -> fox.pando.service.Req.ListStats + 38, // 62: fox.pando.service.Pando.ListAggregatedStats:input_type -> fox.pando.service.Req.ListAggregatedStats + 39, // 63: fox.pando.service.Pando.GetInfo:input_type -> fox.pando.service.Req.GetInfo + 4, // 64: fox.pando.service.Pando.FindAsset:output_type -> fox.pando.service.Asset + 40, // 65: fox.pando.service.Pando.ListAssets:output_type -> fox.pando.service.Resp.ListAssets + 9, // 66: fox.pando.service.Pando.FindOracle:output_type -> fox.pando.service.Oracle + 41, // 67: fox.pando.service.Pando.ListOracles:output_type -> fox.pando.service.Resp.ListOracles + 42, // 68: fox.pando.service.Pando.ListCollaterals:output_type -> fox.pando.service.Resp.ListCollaterals + 5, // 69: fox.pando.service.Pando.FindCollateral:output_type -> fox.pando.service.Collateral + 6, // 70: fox.pando.service.Pando.FindVault:output_type -> fox.pando.service.Vault + 43, // 71: fox.pando.service.Pando.ListVaults:output_type -> fox.pando.service.Resp.ListVaults + 44, // 72: fox.pando.service.Pando.ListMyVaults:output_type -> fox.pando.service.Resp.ListMyVaults + 45, // 73: fox.pando.service.Pando.ListVaultEvents:output_type -> fox.pando.service.Resp.ListVaultEvents + 46, // 74: fox.pando.service.Pando.QueryVaultEvents:output_type -> fox.pando.service.Resp.QueryVaultEvents + 7, // 75: fox.pando.service.Pando.FindFlip:output_type -> fox.pando.service.Flip + 47, // 76: fox.pando.service.Pando.ListFlips:output_type -> fox.pando.service.Resp.ListFlips + 49, // 77: fox.pando.service.Pando.ListFlipEvents:output_type -> fox.pando.service.Resp.ListFlipEvents + 48, // 78: fox.pando.service.Pando.QueryFlips:output_type -> fox.pando.service.Resp.QueryFlips + 10, // 79: fox.pando.service.Pando.FindTransaction:output_type -> fox.pando.service.Transaction + 50, // 80: fox.pando.service.Pando.ListTransactions:output_type -> fox.pando.service.Resp.ListTransactions + 8, // 81: fox.pando.service.Pando.FindProposal:output_type -> fox.pando.service.Proposal + 51, // 82: fox.pando.service.Pando.ListProposals:output_type -> fox.pando.service.Resp.ListProposals + 52, // 83: fox.pando.service.Pando.ListStats:output_type -> fox.pando.service.Resp.ListStats + 53, // 84: fox.pando.service.Pando.ListAggregatedStats:output_type -> fox.pando.service.Resp.ListAggregatedStats + 54, // 85: fox.pando.service.Pando.GetInfo:output_type -> fox.pando.service.Resp.GetInfo + 64, // [64:86] is the sub-list for method output_type + 42, // [42:64] is the sub-list for method input_type + 42, // [42:42] is the sub-list for extension type_name + 42, // [42:42] is the sub-list for extension extendee + 0, // [0:42] is the sub-list for field type_name } func init() { file_pando_v1_pando_proto_init() } @@ -4475,7 +4619,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_FindFlip); i { + switch v := v.(*Req_QueryVaultEvents); i { case 0: return &v.state case 1: @@ -4487,7 +4631,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_ListFlips); i { + switch v := v.(*Req_FindFlip); i { case 0: return &v.state case 1: @@ -4499,7 +4643,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_QueryFlips); i { + switch v := v.(*Req_ListFlips); i { case 0: return &v.state case 1: @@ -4511,7 +4655,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_ListFlipEvents); i { + switch v := v.(*Req_QueryFlips); i { case 0: return &v.state case 1: @@ -4523,7 +4667,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_FindTransaction); i { + switch v := v.(*Req_ListFlipEvents); i { case 0: return &v.state case 1: @@ -4535,7 +4679,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_ListTransactions); i { + switch v := v.(*Req_FindTransaction); i { case 0: return &v.state case 1: @@ -4547,7 +4691,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_ListProposals); i { + switch v := v.(*Req_ListTransactions); i { case 0: return &v.state case 1: @@ -4559,7 +4703,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_FindProposal); i { + switch v := v.(*Req_ListProposals); i { case 0: return &v.state case 1: @@ -4571,7 +4715,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_ListStats); i { + switch v := v.(*Req_FindProposal); i { case 0: return &v.state case 1: @@ -4583,7 +4727,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_ListAggregatedStats); i { + switch v := v.(*Req_ListStats); i { case 0: return &v.state case 1: @@ -4595,7 +4739,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Req_GetInfo); i { + switch v := v.(*Req_ListAggregatedStats); i { case 0: return &v.state case 1: @@ -4607,7 +4751,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListAssets); i { + switch v := v.(*Req_GetInfo); i { case 0: return &v.state case 1: @@ -4619,7 +4763,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListOracles); i { + switch v := v.(*Resp_ListAssets); i { case 0: return &v.state case 1: @@ -4631,7 +4775,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListCollaterals); i { + switch v := v.(*Resp_ListOracles); i { case 0: return &v.state case 1: @@ -4643,7 +4787,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListVaults); i { + switch v := v.(*Resp_ListCollaterals); i { case 0: return &v.state case 1: @@ -4655,7 +4799,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListMyVaults); i { + switch v := v.(*Resp_ListVaults); i { case 0: return &v.state case 1: @@ -4667,7 +4811,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListVaultEvents); i { + switch v := v.(*Resp_ListMyVaults); i { case 0: return &v.state case 1: @@ -4679,7 +4823,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListFlips); i { + switch v := v.(*Resp_ListVaultEvents); i { case 0: return &v.state case 1: @@ -4691,7 +4835,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_QueryFlips); i { + switch v := v.(*Resp_QueryVaultEvents); i { case 0: return &v.state case 1: @@ -4703,7 +4847,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListFlipEvents); i { + switch v := v.(*Resp_ListFlips); i { case 0: return &v.state case 1: @@ -4715,7 +4859,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListTransactions); i { + switch v := v.(*Resp_QueryFlips); i { case 0: return &v.state case 1: @@ -4727,7 +4871,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListProposals); i { + switch v := v.(*Resp_ListFlipEvents); i { case 0: return &v.state case 1: @@ -4739,7 +4883,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListStats); i { + switch v := v.(*Resp_ListTransactions); i { case 0: return &v.state case 1: @@ -4751,7 +4895,7 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Resp_ListAggregatedStats); i { + switch v := v.(*Resp_ListProposals); i { case 0: return &v.state case 1: @@ -4763,6 +4907,30 @@ func file_pando_v1_pando_proto_init() { } } file_pando_v1_pando_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Resp_ListStats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pando_v1_pando_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Resp_ListAggregatedStats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pando_v1_pando_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Resp_GetInfo); i { case 0: return &v.state @@ -4781,7 +4949,7 @@ func file_pando_v1_pando_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pando_v1_pando_proto_rawDesc, NumEnums: 3, - NumMessages: 50, + NumMessages: 52, NumExtensions: 0, NumServices: 1, }, diff --git a/handler/rpc/pando/pando.twirp.go b/handler/rpc/pando/pando.twirp.go index 3f36090..787fc15 100644 --- a/handler/rpc/pando/pando.twirp.go +++ b/handler/rpc/pando/pando.twirp.go @@ -57,6 +57,8 @@ type Pando interface { ListVaultEvents(context.Context, *Req_ListVaultEvents) (*Resp_ListVaultEvents, error) + QueryVaultEvents(context.Context, *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) + // flips FindFlip(context.Context, *Req_FindFlip) (*Flip, error) @@ -91,7 +93,7 @@ type Pando interface { type pandoProtobufClient struct { client HTTPClient - urls [21]string + urls [22]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -119,7 +121,7 @@ func NewPandoProtobufClient(baseURL string, client HTTPClient, opts ...twirp.Cli // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "fox.pando.service", "Pando") - urls := [21]string{ + urls := [22]string{ serviceURL + "FindAsset", serviceURL + "ListAssets", serviceURL + "FindOracle", @@ -130,6 +132,7 @@ func NewPandoProtobufClient(baseURL string, client HTTPClient, opts ...twirp.Cli serviceURL + "ListVaults", serviceURL + "ListMyVaults", serviceURL + "ListVaultEvents", + serviceURL + "QueryVaultEvents", serviceURL + "FindFlip", serviceURL + "ListFlips", serviceURL + "ListFlipEvents", @@ -611,6 +614,52 @@ func (c *pandoProtobufClient) callListVaultEvents(ctx context.Context, in *Req_L return out, nil } +func (c *pandoProtobufClient) QueryVaultEvents(ctx context.Context, in *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + ctx = ctxsetters.WithPackageName(ctx, "fox.pando.service") + ctx = ctxsetters.WithServiceName(ctx, "Pando") + ctx = ctxsetters.WithMethodName(ctx, "QueryVaultEvents") + caller := c.callQueryVaultEvents + if c.interceptor != nil { + caller = func(ctx context.Context, req *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*Req_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*Req_QueryVaultEvents) when calling interceptor") + } + return c.callQueryVaultEvents(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*Resp_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*Resp_QueryVaultEvents) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *pandoProtobufClient) callQueryVaultEvents(ctx context.Context, in *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + out := new(Resp_QueryVaultEvents) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *pandoProtobufClient) FindFlip(ctx context.Context, in *Req_FindFlip) (*Flip, error) { ctx = ctxsetters.WithPackageName(ctx, "fox.pando.service") ctx = ctxsetters.WithServiceName(ctx, "Pando") @@ -642,7 +691,7 @@ func (c *pandoProtobufClient) FindFlip(ctx context.Context, in *Req_FindFlip) (* func (c *pandoProtobufClient) callFindFlip(ctx context.Context, in *Req_FindFlip) (*Flip, error) { out := new(Flip) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -688,7 +737,7 @@ func (c *pandoProtobufClient) ListFlips(ctx context.Context, in *Req_ListFlips) func (c *pandoProtobufClient) callListFlips(ctx context.Context, in *Req_ListFlips) (*Resp_ListFlips, error) { out := new(Resp_ListFlips) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -734,7 +783,7 @@ func (c *pandoProtobufClient) ListFlipEvents(ctx context.Context, in *Req_ListFl func (c *pandoProtobufClient) callListFlipEvents(ctx context.Context, in *Req_ListFlipEvents) (*Resp_ListFlipEvents, error) { out := new(Resp_ListFlipEvents) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -780,7 +829,7 @@ func (c *pandoProtobufClient) QueryFlips(ctx context.Context, in *Req_QueryFlips func (c *pandoProtobufClient) callQueryFlips(ctx context.Context, in *Req_QueryFlips) (*Resp_QueryFlips, error) { out := new(Resp_QueryFlips) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -826,7 +875,7 @@ func (c *pandoProtobufClient) FindTransaction(ctx context.Context, in *Req_FindT func (c *pandoProtobufClient) callFindTransaction(ctx context.Context, in *Req_FindTransaction) (*Transaction, error) { out := new(Transaction) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -872,7 +921,7 @@ func (c *pandoProtobufClient) ListTransactions(ctx context.Context, in *Req_List func (c *pandoProtobufClient) callListTransactions(ctx context.Context, in *Req_ListTransactions) (*Resp_ListTransactions, error) { out := new(Resp_ListTransactions) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[16], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -918,7 +967,7 @@ func (c *pandoProtobufClient) FindProposal(ctx context.Context, in *Req_FindProp func (c *pandoProtobufClient) callFindProposal(ctx context.Context, in *Req_FindProposal) (*Proposal, error) { out := new(Proposal) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[16], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[17], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -964,7 +1013,7 @@ func (c *pandoProtobufClient) ListProposals(ctx context.Context, in *Req_ListPro func (c *pandoProtobufClient) callListProposals(ctx context.Context, in *Req_ListProposals) (*Resp_ListProposals, error) { out := new(Resp_ListProposals) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[17], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[18], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1010,7 +1059,7 @@ func (c *pandoProtobufClient) ListStats(ctx context.Context, in *Req_ListStats) func (c *pandoProtobufClient) callListStats(ctx context.Context, in *Req_ListStats) (*Resp_ListStats, error) { out := new(Resp_ListStats) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[18], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[19], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1056,7 +1105,7 @@ func (c *pandoProtobufClient) ListAggregatedStats(ctx context.Context, in *Req_L func (c *pandoProtobufClient) callListAggregatedStats(ctx context.Context, in *Req_ListAggregatedStats) (*Resp_ListAggregatedStats, error) { out := new(Resp_ListAggregatedStats) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[19], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[20], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1102,7 +1151,7 @@ func (c *pandoProtobufClient) GetInfo(ctx context.Context, in *Req_GetInfo) (*Re func (c *pandoProtobufClient) callGetInfo(ctx context.Context, in *Req_GetInfo) (*Resp_GetInfo, error) { out := new(Resp_GetInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[20], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[21], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1123,7 +1172,7 @@ func (c *pandoProtobufClient) callGetInfo(ctx context.Context, in *Req_GetInfo) type pandoJSONClient struct { client HTTPClient - urls [21]string + urls [22]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -1151,7 +1200,7 @@ func NewPandoJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientO // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "fox.pando.service", "Pando") - urls := [21]string{ + urls := [22]string{ serviceURL + "FindAsset", serviceURL + "ListAssets", serviceURL + "FindOracle", @@ -1162,6 +1211,7 @@ func NewPandoJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientO serviceURL + "ListVaults", serviceURL + "ListMyVaults", serviceURL + "ListVaultEvents", + serviceURL + "QueryVaultEvents", serviceURL + "FindFlip", serviceURL + "ListFlips", serviceURL + "ListFlipEvents", @@ -1643,6 +1693,52 @@ func (c *pandoJSONClient) callListVaultEvents(ctx context.Context, in *Req_ListV return out, nil } +func (c *pandoJSONClient) QueryVaultEvents(ctx context.Context, in *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + ctx = ctxsetters.WithPackageName(ctx, "fox.pando.service") + ctx = ctxsetters.WithServiceName(ctx, "Pando") + ctx = ctxsetters.WithMethodName(ctx, "QueryVaultEvents") + caller := c.callQueryVaultEvents + if c.interceptor != nil { + caller = func(ctx context.Context, req *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*Req_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*Req_QueryVaultEvents) when calling interceptor") + } + return c.callQueryVaultEvents(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*Resp_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*Resp_QueryVaultEvents) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *pandoJSONClient) callQueryVaultEvents(ctx context.Context, in *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + out := new(Resp_QueryVaultEvents) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *pandoJSONClient) FindFlip(ctx context.Context, in *Req_FindFlip) (*Flip, error) { ctx = ctxsetters.WithPackageName(ctx, "fox.pando.service") ctx = ctxsetters.WithServiceName(ctx, "Pando") @@ -1674,7 +1770,7 @@ func (c *pandoJSONClient) FindFlip(ctx context.Context, in *Req_FindFlip) (*Flip func (c *pandoJSONClient) callFindFlip(ctx context.Context, in *Req_FindFlip) (*Flip, error) { out := new(Flip) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1720,7 +1816,7 @@ func (c *pandoJSONClient) ListFlips(ctx context.Context, in *Req_ListFlips) (*Re func (c *pandoJSONClient) callListFlips(ctx context.Context, in *Req_ListFlips) (*Resp_ListFlips, error) { out := new(Resp_ListFlips) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1766,7 +1862,7 @@ func (c *pandoJSONClient) ListFlipEvents(ctx context.Context, in *Req_ListFlipEv func (c *pandoJSONClient) callListFlipEvents(ctx context.Context, in *Req_ListFlipEvents) (*Resp_ListFlipEvents, error) { out := new(Resp_ListFlipEvents) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1812,7 +1908,7 @@ func (c *pandoJSONClient) QueryFlips(ctx context.Context, in *Req_QueryFlips) (* func (c *pandoJSONClient) callQueryFlips(ctx context.Context, in *Req_QueryFlips) (*Resp_QueryFlips, error) { out := new(Resp_QueryFlips) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1858,7 +1954,7 @@ func (c *pandoJSONClient) FindTransaction(ctx context.Context, in *Req_FindTrans func (c *pandoJSONClient) callFindTransaction(ctx context.Context, in *Req_FindTransaction) (*Transaction, error) { out := new(Transaction) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1904,7 +2000,7 @@ func (c *pandoJSONClient) ListTransactions(ctx context.Context, in *Req_ListTran func (c *pandoJSONClient) callListTransactions(ctx context.Context, in *Req_ListTransactions) (*Resp_ListTransactions, error) { out := new(Resp_ListTransactions) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[16], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1950,7 +2046,7 @@ func (c *pandoJSONClient) FindProposal(ctx context.Context, in *Req_FindProposal func (c *pandoJSONClient) callFindProposal(ctx context.Context, in *Req_FindProposal) (*Proposal, error) { out := new(Proposal) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[16], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[17], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1996,7 +2092,7 @@ func (c *pandoJSONClient) ListProposals(ctx context.Context, in *Req_ListProposa func (c *pandoJSONClient) callListProposals(ctx context.Context, in *Req_ListProposals) (*Resp_ListProposals, error) { out := new(Resp_ListProposals) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[17], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[18], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2042,7 +2138,7 @@ func (c *pandoJSONClient) ListStats(ctx context.Context, in *Req_ListStats) (*Re func (c *pandoJSONClient) callListStats(ctx context.Context, in *Req_ListStats) (*Resp_ListStats, error) { out := new(Resp_ListStats) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[18], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[19], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2088,7 +2184,7 @@ func (c *pandoJSONClient) ListAggregatedStats(ctx context.Context, in *Req_ListA func (c *pandoJSONClient) callListAggregatedStats(ctx context.Context, in *Req_ListAggregatedStats) (*Resp_ListAggregatedStats, error) { out := new(Resp_ListAggregatedStats) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[19], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[20], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2134,7 +2230,7 @@ func (c *pandoJSONClient) GetInfo(ctx context.Context, in *Req_GetInfo) (*Resp_G func (c *pandoJSONClient) callGetInfo(ctx context.Context, in *Req_GetInfo) (*Resp_GetInfo, error) { out := new(Resp_GetInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[20], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[21], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2276,6 +2372,9 @@ func (s *pandoServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { case "ListVaultEvents": s.serveListVaultEvents(ctx, resp, req) return + case "QueryVaultEvents": + s.serveQueryVaultEvents(ctx, resp, req) + return case "FindFlip": s.serveFindFlip(ctx, resp, req) return @@ -4116,6 +4215,186 @@ func (s *pandoServer) serveListVaultEventsProtobuf(ctx context.Context, resp htt callResponseSent(ctx, s.hooks) } +func (s *pandoServer) serveQueryVaultEvents(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveQueryVaultEventsJSON(ctx, resp, req) + case "application/protobuf": + s.serveQueryVaultEventsProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *pandoServer) serveQueryVaultEventsJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "QueryVaultEvents") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(Req_QueryVaultEvents) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.Pando.QueryVaultEvents + if s.interceptor != nil { + handler = func(ctx context.Context, req *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*Req_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*Req_QueryVaultEvents) when calling interceptor") + } + return s.Pando.QueryVaultEvents(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*Resp_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*Resp_QueryVaultEvents) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *Resp_QueryVaultEvents + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *Resp_QueryVaultEvents and nil error while calling QueryVaultEvents. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *pandoServer) serveQueryVaultEventsProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "QueryVaultEvents") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := ioutil.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(Req_QueryVaultEvents) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.Pando.QueryVaultEvents + if s.interceptor != nil { + handler = func(ctx context.Context, req *Req_QueryVaultEvents) (*Resp_QueryVaultEvents, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*Req_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*Req_QueryVaultEvents) when calling interceptor") + } + return s.Pando.QueryVaultEvents(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*Resp_QueryVaultEvents) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*Resp_QueryVaultEvents) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *Resp_QueryVaultEvents + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *Resp_QueryVaultEvents and nil error while calling QueryVaultEvents. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + func (s *pandoServer) serveFindFlip(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") @@ -6674,159 +6953,161 @@ func callClientError(ctx context.Context, h *twirp.ClientHooks, err twirp.Error) } var twirpFileDescriptor0 = []byte{ - // 2451 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcd, 0x6f, 0x1b, 0xc7, - 0x15, 0xcf, 0xf2, 0x9b, 0x8f, 0x92, 0xbc, 0xde, 0x38, 0xd1, 0x7a, 0x95, 0x58, 0x14, 0x1d, 0x3b, - 0x6a, 0x12, 0x53, 0xb1, 0xdc, 0xd8, 0x70, 0x5b, 0x37, 0x91, 0xe5, 0xd8, 0x55, 0x1c, 0xc7, 0xca, - 0xca, 0x50, 0x91, 0xa0, 0x00, 0x31, 0xe4, 0x8e, 0xc8, 0x81, 0xf6, 0x83, 0xd9, 0x19, 0xaa, 0xe2, - 0xa1, 0xd7, 0xa2, 0x45, 0xcf, 0x45, 0xfb, 0x27, 0xf4, 0xd8, 0x63, 0x0f, 0xbd, 0xf7, 0xd0, 0x1c, - 0x0b, 0x14, 0xfd, 0x63, 0x0a, 0x14, 0x6f, 0x66, 0x96, 0xbb, 0x14, 0xc9, 0x95, 0x15, 0x1b, 0xbd, - 0xcd, 0x7b, 0xf3, 0x9b, 0xb7, 0xef, 0x6b, 0xde, 0x7b, 0x43, 0xc2, 0x95, 0x21, 0x09, 0xbd, 0x68, - 0xeb, 0xe4, 0xf6, 0x96, 0x5c, 0xb4, 0x87, 0x71, 0x24, 0x22, 0xeb, 0xf2, 0x51, 0x74, 0xda, 0x56, - 0x0c, 0x4e, 0xe3, 0x13, 0xd6, 0xa3, 0xce, 0x7a, 0x3f, 0x8a, 0xfa, 0x3e, 0xdd, 0x92, 0x80, 0xee, - 0xe8, 0x68, 0x4b, 0xb0, 0x80, 0x72, 0x41, 0x82, 0xa1, 0x3a, 0xd3, 0xfa, 0x05, 0xc0, 0x3e, 0xe9, - 0xb3, 0x90, 0x08, 0x16, 0x85, 0xd6, 0x3a, 0x34, 0x42, 0x7a, 0x2a, 0x3a, 0xbd, 0x51, 0xcc, 0xa3, - 0xd8, 0x36, 0x9a, 0xc6, 0x66, 0xdd, 0x05, 0x64, 0xed, 0x4a, 0x8e, 0x75, 0x15, 0x6a, 0x03, 0xc2, - 0x3b, 0xc8, 0xb1, 0x0b, 0x4d, 0x63, 0xb3, 0xe6, 0x56, 0x07, 0x84, 0x7f, 0x45, 0x4f, 0x45, 0xeb, - 0x6f, 0x06, 0x94, 0x77, 0x38, 0xa7, 0xc2, 0x5a, 0x81, 0x02, 0xf3, 0xf4, 0xe1, 0x02, 0xf3, 0x2c, - 0x0b, 0x4a, 0x21, 0x09, 0xa8, 0x3c, 0x50, 0x77, 0xe5, 0xda, 0x7a, 0x1b, 0x2a, 0x7c, 0x1c, 0x74, - 0x23, 0xdf, 0x2e, 0x4a, 0xae, 0xa6, 0x10, 0xeb, 0x47, 0xfd, 0xc8, 0x2e, 0x29, 0x2c, 0xae, 0xf1, - 0xa3, 0xbd, 0x01, 0x61, 0x61, 0x87, 0x79, 0x76, 0x59, 0xf2, 0xab, 0x92, 0xde, 0xf3, 0xac, 0x36, - 0x94, 0xe5, 0xd2, 0xae, 0x34, 0x8d, 0xcd, 0xc6, 0xb6, 0xdd, 0x9e, 0x71, 0x41, 0x5b, 0xea, 0xe4, - 0x2a, 0x98, 0x75, 0x05, 0xca, 0xc3, 0x98, 0xf5, 0xa8, 0x5d, 0x95, 0x72, 0x14, 0xd1, 0xfa, 0x67, - 0x09, 0x60, 0x37, 0xf2, 0x7d, 0x22, 0x68, 0x4c, 0xfc, 0x19, 0xfd, 0xef, 0x03, 0xf4, 0x62, 0x4a, - 0x04, 0xf5, 0x3a, 0x44, 0x99, 0xdd, 0xd8, 0x76, 0xda, 0xca, 0xb3, 0xed, 0xc4, 0xb3, 0xed, 0x17, - 0x89, 0x67, 0xdd, 0xba, 0x46, 0xef, 0x88, 0x89, 0xe9, 0xc5, 0x8c, 0xe9, 0x26, 0x14, 0xfb, 0x34, - 0xd0, 0x16, 0xe2, 0x12, 0x39, 0x1e, 0x61, 0xda, 0x36, 0x5c, 0x22, 0x87, 0x85, 0xc7, 0xd2, 0xaa, - 0xba, 0x8b, 0x4b, 0xe4, 0x90, 0x58, 0x68, 0xbd, 0x71, 0x89, 0xb2, 0x63, 0x22, 0xa8, 0x5d, 0x53, - 0xb2, 0x71, 0x6d, 0x7d, 0x04, 0xc5, 0x78, 0x10, 0xd9, 0xf5, 0x73, 0x75, 0x44, 0x18, 0x4a, 0xf0, - 0x68, 0x57, 0xd8, 0xa0, 0x24, 0xe0, 0x5a, 0x06, 0x80, 0x85, 0xd4, 0x6e, 0xe8, 0x00, 0xb0, 0x90, - 0x4a, 0xdc, 0x88, 0x0b, 0x7b, 0x49, 0xe3, 0x46, 0x5c, 0xa4, 0x9e, 0x5c, 0xce, 0x78, 0x12, 0xb5, - 0x0c, 0x88, 0xb0, 0x57, 0x94, 0x96, 0x01, 0x11, 0xea, 0xac, 0x18, 0xdb, 0x97, 0x92, 0xb3, 0x62, - 0x8c, 0xbc, 0xde, 0x20, 0x1a, 0xda, 0xa6, 0xe2, 0xe1, 0x5a, 0xe1, 0xc2, 0x63, 0xfb, 0x72, 0x82, - 0x53, 0x36, 0x77, 0x69, 0xdf, 0xb6, 0x94, 0xb4, 0x2e, 0xed, 0x23, 0x47, 0x08, 0xdf, 0x7e, 0xb3, - 0x69, 0x6c, 0x96, 0x5d, 0x5c, 0x4a, 0x0e, 0x19, 0xd9, 0x57, 0x34, 0x87, 0x8c, 0x94, 0x05, 0x27, - 0xd4, 0x7e, 0x4b, 0xe6, 0xa7, 0x5c, 0x5b, 0x9b, 0x60, 0x86, 0xa3, 0xa0, 0x4b, 0xe3, 0x4e, 0x74, - 0xd4, 0x39, 0x21, 0x23, 0x5f, 0x70, 0xfb, 0xed, 0xa6, 0xb1, 0x59, 0x74, 0x57, 0x14, 0xff, 0xf9, - 0xd1, 0xa1, 0xe4, 0xca, 0x6f, 0x46, 0xa7, 0xf6, 0xaa, 0xfe, 0x66, 0x74, 0x8a, 0xa9, 0xea, 0x33, - 0x21, 0x68, 0x6c, 0xdb, 0x2a, 0x55, 0x15, 0x25, 0x53, 0x78, 0x34, 0x1c, 0xfa, 0x63, 0xfb, 0xaa, - 0x4e, 0x61, 0x49, 0xb5, 0xfe, 0x50, 0x84, 0xb2, 0x14, 0xf6, 0x3a, 0x13, 0xe9, 0x3a, 0x2c, 0xf7, - 0x26, 0x19, 0x8a, 0x17, 0x41, 0x65, 0xd4, 0x52, 0xca, 0xdc, 0xf3, 0x92, 0xac, 0x29, 0xcd, 0x64, - 0x4d, 0x39, 0xcd, 0x9a, 0x75, 0x68, 0x30, 0x8f, 0x86, 0x82, 0x89, 0x31, 0x8a, 0xa9, 0x48, 0x27, - 0x40, 0xc2, 0xda, 0xf3, 0x9c, 0xef, 0x0d, 0x28, 0x7f, 0x7e, 0x42, 0x43, 0x81, 0xf7, 0x4e, 0xba, - 0xaa, 0x33, 0x31, 0xa2, 0x2a, 0xe9, 0xbd, 0x57, 0xb2, 0xe4, 0x36, 0x54, 0x48, 0x0f, 0xab, 0x8d, - 0x34, 0x61, 0x65, 0xfb, 0xea, 0xbc, 0x3b, 0x2b, 0x01, 0xae, 0x06, 0xca, 0xdc, 0x48, 0x0d, 0x93, - 0x6b, 0xc9, 0x4b, 0x4d, 0x93, 0xeb, 0x49, 0x3e, 0x57, 0xd2, 0x7c, 0x6e, 0xfd, 0xa5, 0x0c, 0xa5, - 0xc7, 0x3e, 0x1b, 0xbe, 0xce, 0x60, 0x7c, 0x04, 0x45, 0xc1, 0x7a, 0x52, 0xff, 0x73, 0x6e, 0x99, - 0x60, 0x3d, 0x44, 0xd3, 0xd0, 0x93, 0xca, 0x9f, 0x83, 0xa6, 0xa1, 0x8c, 0x61, 0x77, 0x52, 0xe7, - 0x70, 0x89, 0x1c, 0x3f, 0x4a, 0x8c, 0xc2, 0xa5, 0xca, 0xf9, 0x6e, 0x52, 0x0b, 0x04, 0xe9, 0x26, - 0x71, 0xae, 0xa5, 0x71, 0x9e, 0x49, 0x98, 0xfa, 0x9c, 0x84, 0xc9, 0x46, 0x18, 0xa6, 0x23, 0x8c, - 0x55, 0x6a, 0x34, 0xd6, 0x65, 0x00, 0x97, 0x99, 0xc0, 0x2d, 0xbd, 0x6c, 0xe0, 0xb6, 0xa0, 0x24, - 0x48, 0x9f, 0xdb, 0xcb, 0xcd, 0xe2, 0xe6, 0xca, 0xf6, 0xda, 0x9c, 0x03, 0x18, 0x9a, 0xf6, 0x0b, - 0xd2, 0x77, 0x25, 0xd0, 0xf9, 0xc7, 0x24, 0xf9, 0x56, 0xa1, 0x7a, 0xe4, 0xb3, 0x61, 0x9a, 0x7b, - 0x15, 0x24, 0xff, 0xef, 0xa9, 0xa7, 0xc3, 0x51, 0x9a, 0x09, 0x47, 0x39, 0x0d, 0xc7, 0x9b, 0x50, - 0x66, 0xbc, 0x13, 0x50, 0x19, 0xa2, 0x9a, 0x5b, 0x62, 0xfc, 0x19, 0x6d, 0xdd, 0x86, 0xe2, 0x0b, - 0xd2, 0xb7, 0x1a, 0x50, 0x7d, 0x36, 0x96, 0xd5, 0xc0, 0x7c, 0xc3, 0x32, 0x61, 0x69, 0x9f, 0xc4, - 0x82, 0xf5, 0xd8, 0x10, 0x35, 0x32, 0x0d, 0xdc, 0xfe, 0x92, 0x12, 0x8f, 0x85, 0x7d, 0xb3, 0xd0, - 0xfa, 0xbe, 0x08, 0xb5, 0xfd, 0x38, 0x1a, 0x46, 0xfc, 0xf5, 0x36, 0xa1, 0x7b, 0x50, 0x1f, 0x12, - 0xce, 0xd5, 0xc9, 0xf3, 0x93, 0xb6, 0xa6, 0xc0, 0x3b, 0xc2, 0xb2, 0xa1, 0x2a, 0xa5, 0x44, 0xb1, - 0x76, 0x40, 0x42, 0x62, 0xe2, 0x20, 0x48, 0x64, 0x5a, 0xb2, 0xa4, 0xf7, 0x3c, 0x2c, 0x8b, 0x24, - 0x88, 0x46, 0x61, 0x92, 0xb1, 0x9a, 0xca, 0x38, 0xbf, 0x7a, 0x91, 0x7b, 0x4f, 0x04, 0x49, 0x3a, - 0x1c, 0xae, 0xb1, 0xef, 0x9c, 0x44, 0x82, 0x72, 0xbb, 0xde, 0x2c, 0x62, 0xdf, 0x91, 0x84, 0x75, - 0x17, 0xca, 0x4c, 0xd0, 0x80, 0xdb, 0xd0, 0x2c, 0x6e, 0x36, 0xb6, 0x9b, 0x73, 0x64, 0x27, 0x9e, - 0x6d, 0xef, 0x09, 0x1a, 0xb8, 0x0a, 0xee, 0x7c, 0x0b, 0x25, 0x24, 0x31, 0xa8, 0xc7, 0x74, 0xac, - 0xdd, 0x8d, 0x4b, 0xf9, 0x1d, 0xe2, 0x8f, 0x92, 0xa9, 0x45, 0x11, 0xa8, 0xd1, 0x80, 0x85, 0x22, - 0xe9, 0xe7, 0xb8, 0x96, 0x06, 0x2b, 0xc3, 0x4a, 0xda, 0x60, 0x49, 0xb5, 0xfe, 0x65, 0x40, 0xe5, - 0x79, 0x4c, 0x7a, 0x3e, 0x9d, 0x72, 0x97, 0x31, 0xed, 0x2e, 0x13, 0x8a, 0xd8, 0x0a, 0x0b, 0xaa, - 0x7f, 0x61, 0x27, 0x44, 0xaf, 0x8f, 0xe2, 0x98, 0x4e, 0x3e, 0x93, 0x90, 0x72, 0x9a, 0xc0, 0xc9, - 0x4b, 0xd7, 0x41, 0x5c, 0x5b, 0x77, 0xa0, 0x3a, 0xa4, 0xf4, 0x18, 0x43, 0x5b, 0x3e, 0x37, 0xb4, - 0x15, 0x84, 0xee, 0x08, 0xeb, 0x1d, 0xa8, 0x8b, 0x41, 0x4c, 0xf9, 0x20, 0xf2, 0x55, 0x0b, 0x28, - 0xbb, 0x29, 0x03, 0x77, 0xfb, 0xd1, 0x09, 0x8d, 0xc3, 0x28, 0xe6, 0x76, 0x55, 0xba, 0x39, 0x65, - 0xb4, 0xfe, 0x53, 0x80, 0xc6, 0x8b, 0x98, 0x84, 0x5c, 0x07, 0xe9, 0x35, 0x26, 0x6a, 0xd6, 0x4d, - 0xc5, 0x45, 0x59, 0x55, 0x5a, 0x90, 0x55, 0xe5, 0x97, 0xcd, 0xaa, 0x07, 0x50, 0xe1, 0x82, 0x88, - 0x11, 0x97, 0x96, 0xaf, 0x6c, 0xdf, 0x98, 0x73, 0x24, 0x63, 0x60, 0xfb, 0x40, 0x82, 0x5d, 0x7d, - 0x48, 0x8e, 0x38, 0xbc, 0x9f, 0x14, 0xdf, 0x80, 0xf7, 0xad, 0x6b, 0x00, 0x43, 0x12, 0x93, 0x80, - 0x0a, 0x1a, 0x73, 0x9d, 0xac, 0x19, 0x4e, 0x6b, 0x13, 0x2a, 0x4a, 0x06, 0x5e, 0xf7, 0x7d, 0x1a, - 0xca, 0xeb, 0xfe, 0x86, 0x55, 0x87, 0xf2, 0x4e, 0x37, 0x8a, 0x85, 0x69, 0x58, 0x15, 0x28, 0x3c, - 0x7f, 0x6a, 0x16, 0x5a, 0xff, 0x35, 0xa0, 0x84, 0xd0, 0xd9, 0xea, 0x6d, 0xcc, 0xa9, 0xde, 0x6d, - 0x79, 0x3d, 0xe8, 0x4b, 0xf8, 0x58, 0xe2, 0x64, 0xd4, 0x13, 0x96, 0xf4, 0x6f, 0xd1, 0x4d, 0x19, - 0x3f, 0x70, 0x2c, 0x4d, 0x5a, 0x6e, 0x35, 0x33, 0x42, 0xae, 0x41, 0xbd, 0x4f, 0x83, 0x8e, 0x1a, - 0x0f, 0x95, 0x3b, 0x6a, 0x7d, 0x1a, 0xec, 0xcb, 0x09, 0x71, 0x0d, 0xea, 0x1e, 0x61, 0x7a, 0x53, - 0xf5, 0xa4, 0x9a, 0x47, 0x98, 0xdc, 0x6c, 0xfd, 0xd9, 0x80, 0x95, 0x9d, 0x7e, 0x3f, 0xa6, 0x7d, - 0xcc, 0x08, 0xe9, 0x89, 0xc4, 0x48, 0xe3, 0x87, 0x18, 0x59, 0x38, 0x6b, 0xa4, 0x56, 0x4d, 0xdd, - 0xec, 0xe2, 0x44, 0xb5, 0x43, 0x79, 0xb9, 0xb5, 0x6a, 0x6a, 0xb3, 0x3c, 0x51, 0x4d, 0x6e, 0xb6, - 0xfe, 0x5d, 0x85, 0xa2, 0x4b, 0xbf, 0x73, 0xd6, 0xa0, 0xfe, 0x98, 0x85, 0xde, 0xdc, 0x97, 0x8e, - 0xb3, 0x04, 0xf0, 0x25, 0xe3, 0x42, 0x6e, 0x72, 0xe7, 0x1d, 0x00, 0x84, 0xea, 0x1a, 0x70, 0x16, - 0xbb, 0x0c, 0x0d, 0xc4, 0xaa, 0x5d, 0xee, 0x5c, 0x86, 0x4b, 0x48, 0xa6, 0xcf, 0x10, 0xee, 0x34, - 0x61, 0x05, 0xcf, 0x2f, 0x7e, 0x99, 0x24, 0xca, 0xcc, 0x9d, 0x36, 0x9d, 0x53, 0xa5, 0x8c, 0x9e, - 0x6b, 0x5f, 0x2a, 0xa3, 0x56, 0xa1, 0x3a, 0xe2, 0x34, 0xc6, 0x6d, 0x55, 0xf6, 0x2a, 0x48, 0xaa, - 0xeb, 0xa7, 0xdf, 0x84, 0xfa, 0xb9, 0xa6, 0x28, 0xac, 0x92, 0x3e, 0x0b, 0x98, 0xba, 0x95, 0x45, - 0x57, 0x11, 0xce, 0xcf, 0x60, 0x09, 0xbf, 0xac, 0x1b, 0x1f, 0xcf, 0x9c, 0x36, 0xe6, 0x9f, 0x2e, - 0x64, 0x4f, 0x6f, 0x28, 0x4f, 0xc8, 0xb3, 0x72, 0x16, 0xe0, 0x33, 0xa6, 0x39, 0x50, 0x43, 0xbb, - 0xe7, 0xcd, 0x75, 0xce, 0x7d, 0xa8, 0xe3, 0x71, 0xdc, 0xbb, 0xe8, 0x97, 0x7f, 0x6b, 0x00, 0x7c, - 0x3d, 0xa2, 0xf1, 0x78, 0x72, 0x38, 0x3a, 0x3a, 0xe2, 0x54, 0xc8, 0xc3, 0x45, 0x57, 0x53, 0xf3, - 0x0f, 0xcb, 0x07, 0xd1, 0x80, 0xf0, 0x24, 0xad, 0x14, 0x81, 0x39, 0x15, 0x8c, 0x93, 0x17, 0x87, - 0xba, 0x5b, 0xb5, 0x20, 0xf1, 0xcb, 0x2a, 0x54, 0x83, 0x71, 0xa7, 0xcb, 0x3c, 0xae, 0xd3, 0xad, - 0x12, 0x8c, 0x1f, 0x32, 0x4f, 0x46, 0x3e, 0xb1, 0x61, 0x81, 0x07, 0x36, 0xe0, 0x12, 0x7a, 0x20, - 0xa7, 0x10, 0x3b, 0x9f, 0x81, 0x89, 0x42, 0x32, 0x90, 0x8b, 0xfa, 0xe3, 0x01, 0x2c, 0xa3, 0x84, - 0xa4, 0x73, 0x5e, 0xf4, 0xf8, 0x35, 0x58, 0x42, 0x1d, 0x17, 0x8d, 0x34, 0xce, 0xa7, 0x2a, 0x52, - 0x78, 0xcd, 0xf9, 0xbc, 0x1f, 0x0d, 0x8e, 0xe2, 0x28, 0xd0, 0x12, 0xe5, 0x1a, 0x31, 0x22, 0xd2, - 0x95, 0xab, 0x20, 0x22, 0xe7, 0x3e, 0xbc, 0x29, 0xaf, 0xdb, 0x54, 0xc5, 0xe0, 0x93, 0xa3, 0xc6, - 0xcc, 0xd1, 0xc2, 0xe4, 0x68, 0x1d, 0xaa, 0x4f, 0xa8, 0xd8, 0x0b, 0x8f, 0xa2, 0xd6, 0xdf, 0x01, - 0x4a, 0x2e, 0xe5, 0x43, 0xe7, 0xe7, 0xd9, 0xdb, 0x6b, 0x7d, 0x0c, 0x15, 0xd9, 0x7c, 0xb8, 0x6d, - 0xc8, 0x99, 0x62, 0xf1, 0x6f, 0x0b, 0x1a, 0xe7, 0x3c, 0x9c, 0xba, 0xd1, 0xd8, 0x99, 0x23, 0xb5, - 0xd4, 0x12, 0xe6, 0xf5, 0x26, 0x05, 0x76, 0x13, 0xa4, 0xe3, 0xce, 0x94, 0x01, 0xeb, 0x53, 0x68, - 0xa4, 0x97, 0x34, 0x91, 0xf5, 0xee, 0x1c, 0x59, 0xe9, 0x21, 0x37, 0x7b, 0xc2, 0xf9, 0xcd, 0x54, - 0x21, 0xf8, 0x18, 0x2a, 0x3a, 0x1d, 0x17, 0xdb, 0x25, 0xa1, 0xae, 0xc6, 0x59, 0x0f, 0xb0, 0xbf, - 0x25, 0xbf, 0x11, 0xe9, 0x6e, 0x33, 0xef, 0xfb, 0xe9, 0x0f, 0x49, 0x6e, 0xe6, 0x80, 0xf3, 0xd9, - 0x99, 0x6a, 0x70, 0x61, 0x05, 0x9c, 0xbd, 0xd9, 0x8a, 0x70, 0x17, 0x2a, 0x54, 0xae, 0xb4, 0x90, - 0x6b, 0x8b, 0x84, 0xb4, 0xe5, 0x01, 0x57, 0xa3, 0x9d, 0x71, 0xb6, 0x3a, 0xdc, 0x82, 0x32, 0x3e, - 0x2a, 0x12, 0x19, 0xab, 0x0b, 0xde, 0x27, 0xae, 0x42, 0xbd, 0xaa, 0x1f, 0xbe, 0x9e, 0x2a, 0x2e, - 0x17, 0xfc, 0xf6, 0x15, 0x28, 0x8b, 0x48, 0x10, 0x5f, 0x0f, 0x8a, 0x8a, 0x70, 0x9e, 0xcc, 0xd4, - 0x89, 0x4f, 0xce, 0xf8, 0xe5, 0xdd, 0x45, 0x6f, 0xae, 0x69, 0xb7, 0xfc, 0xd1, 0x98, 0x53, 0x2c, - 0x1e, 0xc2, 0x92, 0xc8, 0xd0, 0x39, 0x9e, 0xce, 0x1c, 0x73, 0xa7, 0xce, 0xbc, 0xaa, 0xcf, 0x7e, - 0x6f, 0x9c, 0x2d, 0x41, 0xf7, 0xa1, 0x3e, 0x4c, 0x08, 0xad, 0xd1, 0x5a, 0xce, 0xb4, 0xef, 0xa6, - 0xe8, 0x57, 0xd5, 0xe5, 0x27, 0xd9, 0x72, 0x75, 0x0b, 0xca, 0x38, 0x0f, 0xe6, 0x85, 0x0f, 0x81, - 0xae, 0x42, 0x39, 0x5f, 0xcd, 0xaf, 0x54, 0xf7, 0xa6, 0xa5, 0x6c, 0xcc, 0x2b, 0x31, 0x53, 0x47, - 0x12, 0x79, 0xbf, 0x33, 0x26, 0xf5, 0xcb, 0xba, 0x09, 0x97, 0x22, 0x32, 0x12, 0x83, 0x4e, 0xcf, - 0x67, 0x34, 0xcc, 0xbc, 0x31, 0x96, 0x25, 0x7b, 0x57, 0x72, 0xf7, 0x3c, 0x7c, 0x57, 0x04, 0x34, - 0xe8, 0xe2, 0x8c, 0x5a, 0x90, 0x43, 0x7d, 0x42, 0x4e, 0x3f, 0x07, 0x8a, 0x67, 0x9f, 0x03, 0xef, - 0x02, 0x0c, 0x47, 0x5d, 0x9f, 0xf5, 0x3a, 0xf8, 0x44, 0x52, 0x3d, 0xac, 0xae, 0x38, 0x4f, 0xe9, - 0xf8, 0x83, 0x3f, 0x15, 0xa1, 0xa2, 0x26, 0x6c, 0xab, 0x0c, 0x46, 0xc7, 0x7c, 0xc3, 0xba, 0x04, - 0x8d, 0x83, 0x31, 0xff, 0x25, 0x13, 0x03, 0x2f, 0x26, 0xbf, 0x36, 0x0d, 0xeb, 0x2d, 0xb8, 0xac, - 0x10, 0x07, 0x63, 0x8e, 0x81, 0xa1, 0xb1, 0x18, 0x9b, 0x05, 0xf9, 0x1c, 0xd6, 0xc1, 0x79, 0x46, - 0x8e, 0xa9, 0xd9, 0xb0, 0x2e, 0xc3, 0x72, 0xc2, 0x39, 0x18, 0x44, 0x23, 0x61, 0x2e, 0x65, 0x41, - 0x87, 0x91, 0xa0, 0xe6, 0xb2, 0xb5, 0x0c, 0xf5, 0x5d, 0x22, 0x76, 0xe5, 0xab, 0xc1, 0x7c, 0x4b, - 0x93, 0x07, 0xf2, 0xb7, 0x37, 0xf3, 0x6d, 0x1c, 0xb1, 0x77, 0x89, 0xf8, 0xdc, 0x63, 0xc2, 0x5c, - 0xd5, 0xc4, 0xe3, 0xc8, 0xf7, 0x4c, 0x5b, 0x13, 0xcf, 0xa2, 0x13, 0x6a, 0x5e, 0xd5, 0xc4, 0x13, - 0xc2, 0x42, 0xd3, 0x49, 0x60, 0xcc, 0xf7, 0xcd, 0x35, 0x24, 0x0e, 0x89, 0x78, 0x3e, 0xa4, 0xa1, - 0xb9, 0x6e, 0xad, 0x00, 0x1c, 0x12, 0xf1, 0x88, 0x0e, 0x23, 0xce, 0x84, 0xd9, 0x44, 0xd3, 0x0e, - 0x89, 0x98, 0x98, 0xb6, 0xa1, 0x01, 0xfb, 0x64, 0xdc, 0x25, 0xbd, 0x63, 0xb3, 0xa5, 0x01, 0x4f, - 0x68, 0x48, 0x63, 0x54, 0xef, 0xba, 0xb5, 0x04, 0x35, 0xbc, 0x6f, 0x4f, 0x59, 0xef, 0xd8, 0xfc, - 0x11, 0x0a, 0x47, 0xea, 0x21, 0xf3, 0xcc, 0x0f, 0x92, 0xad, 0x47, 0x94, 0xf8, 0xe6, 0x87, 0x68, - 0xa8, 0x6a, 0x06, 0xda, 0xb2, 0x3b, 0x28, 0x5b, 0x71, 0xa4, 0x35, 0x3f, 0x4e, 0xe9, 0xfd, 0xe8, - 0x98, 0x9a, 0x9f, 0xa4, 0xb4, 0x4b, 0xfd, 0xb1, 0x79, 0x37, 0xa5, 0x1f, 0xd1, 0x70, 0x6c, 0xde, - 0xdb, 0xfe, 0xeb, 0x0a, 0x94, 0xf7, 0x31, 0x99, 0xac, 0x27, 0xd9, 0xa1, 0x75, 0xde, 0xe3, 0xd8, - 0xa5, 0xdf, 0xb5, 0x27, 0x08, 0x67, 0x61, 0xab, 0xb3, 0x0e, 0xa6, 0x5a, 0xe4, 0xc6, 0x02, 0x49, - 0x99, 0x19, 0xb8, 0x35, 0x17, 0xc2, 0x87, 0x19, 0x8c, 0xf5, 0xc5, 0xd4, 0x9c, 0xbc, 0x91, 0xa3, - 0x9e, 0x82, 0x38, 0x8b, 0x1b, 0xa9, 0x75, 0x38, 0xdd, 0x83, 0x5b, 0x39, 0x1a, 0x26, 0x93, 0xf7, - 0xf5, 0x3c, 0x15, 0x13, 0x41, 0xdd, 0xd9, 0xbe, 0x7c, 0x33, 0x47, 0x76, 0x76, 0x8c, 0x7f, 0x3f, - 0x4f, 0x7e, 0x56, 0xe0, 0xe1, 0xcc, 0xbc, 0x7f, 0x23, 0xc7, 0x17, 0x29, 0xcc, 0xc9, 0x1f, 0x06, - 0x92, 0xe8, 0xab, 0x57, 0x42, 0x5e, 0xf4, 0x25, 0xc2, 0x59, 0xd8, 0x8f, 0x93, 0xe8, 0xeb, 0x3e, - 0x9e, 0x17, 0x7d, 0x05, 0xc9, 0x8f, 0xbe, 0x16, 0xf3, 0xcd, 0x99, 0xf1, 0xe0, 0x7a, 0x8e, 0xd8, - 0x04, 0xe4, 0xbc, 0x97, 0x27, 0x78, 0x22, 0xaa, 0x3b, 0x3b, 0x37, 0xdc, 0x3c, 0x4f, 0x69, 0x85, - 0xcb, 0x0f, 0x5a, 0x56, 0xe0, 0xa3, 0xcc, 0x53, 0x64, 0x3d, 0xc7, 0xb7, 0x08, 0x70, 0x16, 0x75, - 0x79, 0x6b, 0x3f, 0x3b, 0x96, 0x34, 0x73, 0x74, 0x94, 0x08, 0x67, 0x23, 0x4f, 0x3b, 0x25, 0xa4, - 0x33, 0x33, 0x1a, 0xdc, 0x38, 0x47, 0xac, 0xb6, 0xfc, 0xe6, 0x79, 0xb2, 0xb5, 0xb8, 0x83, 0xa9, - 0x71, 0x66, 0x51, 0x32, 0xa4, 0x90, 0xc5, 0xc9, 0x90, 0x11, 0xf3, 0xcd, 0xec, 0xb3, 0xe6, 0x66, - 0x8e, 0x53, 0x33, 0x38, 0xe7, 0x9c, 0xb9, 0xc4, 0xa2, 0x73, 0x26, 0x9c, 0xf7, 0x73, 0x5c, 0x92, - 0x05, 0x3a, 0x9b, 0x79, 0x4e, 0x99, 0x12, 0xb9, 0x7f, 0xe6, 0xd1, 0x73, 0x3d, 0x47, 0xfd, 0x04, - 0xe4, 0xe4, 0x4d, 0x30, 0xd6, 0xaf, 0xce, 0x8e, 0x40, 0xef, 0xe5, 0x68, 0x3d, 0x41, 0x39, 0x37, - 0xf2, 0x54, 0x4e, 0x85, 0xed, 0x67, 0xa7, 0x9a, 0xbc, 0xcc, 0x93, 0x88, 0xfc, 0xcc, 0x53, 0x42, - 0xc2, 0xf9, 0xb3, 0xce, 0x07, 0x79, 0xcd, 0x62, 0x1a, 0xeb, 0x7c, 0x98, 0xdb, 0x35, 0xce, 0x08, - 0xfe, 0x22, 0x1d, 0x85, 0xae, 0x2d, 0xf8, 0x86, 0xde, 0x77, 0xd6, 0x17, 0xc9, 0xd5, 0x80, 0x87, - 0x1f, 0x7f, 0xdb, 0xee, 0x33, 0x31, 0x18, 0x75, 0xdb, 0xbd, 0x28, 0xd8, 0x3a, 0x8a, 0x4e, 0x6f, - 0x45, 0x21, 0x55, 0x7f, 0xb2, 0xdf, 0x92, 0x3f, 0x39, 0xf1, 0xad, 0xe4, 0xaf, 0xf7, 0x9f, 0xca, - 0x45, 0xb7, 0x22, 0xd9, 0x77, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x89, 0x54, 0x41, 0x93, - 0x1f, 0x00, 0x00, + // 2493 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xdd, 0x6e, 0x1b, 0xc7, + 0x15, 0xf6, 0xf2, 0x9f, 0x87, 0xfa, 0x59, 0xaf, 0x7f, 0xb4, 0x5e, 0xc5, 0x16, 0x45, 0xc7, 0xb6, + 0xea, 0xc4, 0x94, 0x2d, 0x37, 0x36, 0xdc, 0xd6, 0x4d, 0x64, 0x39, 0x76, 0x15, 0xc7, 0xb1, 0xb2, + 0x32, 0x54, 0x24, 0x28, 0x40, 0x0c, 0xb9, 0x23, 0x72, 0xa1, 0xfd, 0x61, 0x76, 0x86, 0xaa, 0x78, + 0xd1, 0xdb, 0xa2, 0x79, 0x80, 0x22, 0x2d, 0xfa, 0x02, 0x7d, 0x84, 0xbe, 0x41, 0x0b, 0xb4, 0x97, + 0xbd, 0x29, 0xd0, 0x57, 0x29, 0x50, 0x9c, 0x99, 0x59, 0x72, 0x49, 0x2e, 0x57, 0x96, 0x6d, 0xe4, + 0x6e, 0xce, 0xd9, 0x6f, 0xce, 0x9c, 0xbf, 0x39, 0x73, 0x0e, 0x41, 0xb8, 0xd8, 0x27, 0x81, 0x13, + 0x6e, 0x1e, 0xdf, 0xdb, 0x14, 0x8b, 0x66, 0x3f, 0x0a, 0x79, 0x68, 0x9c, 0x3f, 0x0c, 0x4f, 0x9a, + 0x92, 0xc1, 0x68, 0x74, 0xec, 0x76, 0xa8, 0xb5, 0xd6, 0x0d, 0xc3, 0xae, 0x47, 0x37, 0x05, 0xa0, + 0x3d, 0x38, 0xdc, 0xe4, 0xae, 0x4f, 0x19, 0x27, 0x7e, 0x5f, 0xee, 0x69, 0xfc, 0x0a, 0x60, 0x8f, + 0x74, 0xdd, 0x80, 0x70, 0x37, 0x0c, 0x8c, 0x35, 0xa8, 0x05, 0xf4, 0x84, 0xb7, 0x3a, 0x83, 0x88, + 0x85, 0x91, 0xa9, 0xd5, 0xb5, 0x8d, 0xaa, 0x0d, 0xc8, 0xda, 0x11, 0x1c, 0xe3, 0x0a, 0x54, 0x7a, + 0x84, 0xb5, 0x90, 0x63, 0xe6, 0xea, 0xda, 0x46, 0xc5, 0x2e, 0xf7, 0x08, 0xfb, 0x8a, 0x9e, 0xf0, + 0xc6, 0xdf, 0x34, 0x28, 0x6e, 0x33, 0x46, 0xb9, 0xb1, 0x04, 0x39, 0xd7, 0x51, 0x9b, 0x73, 0xae, + 0x63, 0x18, 0x50, 0x08, 0x88, 0x4f, 0xc5, 0x86, 0xaa, 0x2d, 0xd6, 0xc6, 0x65, 0x28, 0xb1, 0xa1, + 0xdf, 0x0e, 0x3d, 0x33, 0x2f, 0xb8, 0x8a, 0x42, 0xac, 0x17, 0x76, 0x43, 0xb3, 0x20, 0xb1, 0xb8, + 0xc6, 0x43, 0x3b, 0x3d, 0xe2, 0x06, 0x2d, 0xd7, 0x31, 0x8b, 0x82, 0x5f, 0x16, 0xf4, 0xae, 0x63, + 0x34, 0xa1, 0x28, 0x96, 0x66, 0xa9, 0xae, 0x6d, 0xd4, 0xb6, 0xcc, 0xe6, 0x8c, 0x0b, 0x9a, 0x42, + 0x27, 0x5b, 0xc2, 0x8c, 0x8b, 0x50, 0xec, 0x47, 0x6e, 0x87, 0x9a, 0x65, 0x21, 0x47, 0x12, 0x8d, + 0x7f, 0x16, 0x00, 0x76, 0x42, 0xcf, 0x23, 0x9c, 0x46, 0xc4, 0x9b, 0xd1, 0xff, 0x11, 0x40, 0x27, + 0xa2, 0x84, 0x53, 0xa7, 0x45, 0xa4, 0xd9, 0xb5, 0x2d, 0xab, 0x29, 0x3d, 0xdb, 0x8c, 0x3d, 0xdb, + 0x7c, 0x1d, 0x7b, 0xd6, 0xae, 0x2a, 0xf4, 0x36, 0x1f, 0x99, 0x9e, 0x4f, 0x98, 0xae, 0x43, 0xbe, + 0x4b, 0x7d, 0x65, 0x21, 0x2e, 0x91, 0xe3, 0x10, 0x57, 0xd9, 0x86, 0x4b, 0xe4, 0xb8, 0xc1, 0x91, + 0xb0, 0xaa, 0x6a, 0xe3, 0x12, 0x39, 0x24, 0xe2, 0x4a, 0x6f, 0x5c, 0xa2, 0xec, 0x88, 0x70, 0x6a, + 0x56, 0xa4, 0x6c, 0x5c, 0x1b, 0x1f, 0x43, 0x3e, 0xea, 0x85, 0x66, 0xf5, 0x54, 0x1d, 0x11, 0x86, + 0x12, 0x1c, 0xda, 0xe6, 0x26, 0x48, 0x09, 0xb8, 0x16, 0x01, 0x70, 0x03, 0x6a, 0xd6, 0x54, 0x00, + 0xdc, 0x80, 0x0a, 0xdc, 0x80, 0x71, 0x73, 0x41, 0xe1, 0x06, 0x8c, 0x8f, 0x3d, 0xb9, 0x98, 0xf0, + 0x24, 0x6a, 0xe9, 0x13, 0x6e, 0x2e, 0x49, 0x2d, 0x7d, 0xc2, 0xe5, 0x5e, 0x3e, 0x34, 0x97, 0xe3, + 0xbd, 0x7c, 0x88, 0xbc, 0x4e, 0x2f, 0xec, 0x9b, 0xba, 0xe4, 0xe1, 0x5a, 0xe2, 0x82, 0x23, 0xf3, + 0x7c, 0x8c, 0x93, 0x36, 0xb7, 0x69, 0xd7, 0x34, 0xa4, 0xb4, 0x36, 0xed, 0x22, 0x87, 0x73, 0xcf, + 0xbc, 0x50, 0xd7, 0x36, 0x8a, 0x36, 0x2e, 0x05, 0x87, 0x0c, 0xcc, 0x8b, 0x8a, 0x43, 0x06, 0xd2, + 0x82, 0x63, 0x6a, 0x5e, 0x12, 0xf9, 0x29, 0xd6, 0xc6, 0x06, 0xe8, 0xc1, 0xc0, 0x6f, 0xd3, 0xa8, + 0x15, 0x1e, 0xb6, 0x8e, 0xc9, 0xc0, 0xe3, 0xcc, 0xbc, 0x5c, 0xd7, 0x36, 0xf2, 0xf6, 0x92, 0xe4, + 0xbf, 0x3a, 0x3c, 0x10, 0x5c, 0x71, 0x66, 0x78, 0x62, 0xae, 0xa8, 0x33, 0xc3, 0x13, 0x4c, 0x55, + 0xcf, 0xe5, 0x9c, 0x46, 0xa6, 0x29, 0x53, 0x55, 0x52, 0x22, 0x85, 0x07, 0xfd, 0xbe, 0x37, 0x34, + 0xaf, 0xa8, 0x14, 0x16, 0x54, 0xe3, 0x2f, 0x79, 0x28, 0x0a, 0x61, 0xef, 0x33, 0x91, 0xae, 0xc3, + 0x62, 0x67, 0x94, 0xa1, 0x78, 0x11, 0x64, 0x46, 0x2d, 0x8c, 0x99, 0xbb, 0x4e, 0x9c, 0x35, 0x85, + 0x99, 0xac, 0x29, 0x8e, 0xb3, 0x66, 0x0d, 0x6a, 0xae, 0x43, 0x03, 0xee, 0xf2, 0x21, 0x8a, 0x29, + 0x09, 0x27, 0x40, 0xcc, 0xda, 0x75, 0xac, 0xff, 0x6a, 0x50, 0xfc, 0xfc, 0x98, 0x06, 0x1c, 0xef, + 0x9d, 0x70, 0x55, 0x6b, 0x64, 0x44, 0x59, 0xd0, 0xbb, 0xef, 0x64, 0xc9, 0x3d, 0x28, 0x91, 0x0e, + 0x56, 0x1b, 0x61, 0xc2, 0xd2, 0xd6, 0x95, 0xb4, 0x3b, 0x2b, 0x00, 0xb6, 0x02, 0x8a, 0xdc, 0x18, + 0x1b, 0x26, 0xd6, 0x82, 0x37, 0x36, 0x4d, 0xac, 0x47, 0xf9, 0x5c, 0x4a, 0xe4, 0xb3, 0x8c, 0x41, + 0x39, 0x8e, 0x41, 0xe3, 0xaf, 0x45, 0x28, 0x3c, 0xf3, 0xdc, 0xfe, 0xfb, 0x0c, 0xce, 0xc7, 0x90, + 0xe7, 0x6e, 0x47, 0xd8, 0x73, 0xca, 0xad, 0xe3, 0x6e, 0x07, 0xd1, 0x34, 0x70, 0x84, 0x31, 0xa7, + 0xa0, 0x69, 0x20, 0x62, 0xda, 0x1e, 0xd5, 0x3d, 0x5c, 0x22, 0xc7, 0x0b, 0x63, 0x23, 0x71, 0x29, + 0xef, 0x40, 0x3b, 0xae, 0x0d, 0x9c, 0xb4, 0xe3, 0xb8, 0x57, 0xc6, 0x71, 0x9f, 0x49, 0xa0, 0x6a, + 0x4a, 0x02, 0x25, 0x23, 0x0e, 0x93, 0x11, 0xc7, 0xaa, 0x35, 0x18, 0xaa, 0xb2, 0x80, 0xcb, 0x44, + 0x20, 0x17, 0xde, 0x34, 0x90, 0x9b, 0x50, 0xe0, 0xa4, 0xcb, 0xcc, 0xc5, 0x7a, 0x7e, 0x63, 0x69, + 0x6b, 0x35, 0x65, 0x03, 0x86, 0xa6, 0xf9, 0x9a, 0x74, 0x6d, 0x01, 0xb4, 0xfe, 0x3e, 0x4a, 0xc6, + 0x15, 0x28, 0x1f, 0x7a, 0x6e, 0x7f, 0x9c, 0x8b, 0x25, 0x24, 0x7f, 0xf4, 0x54, 0x54, 0xe1, 0x28, + 0xcc, 0x84, 0xa3, 0x38, 0x0e, 0xc7, 0x05, 0x28, 0xba, 0xac, 0xe5, 0x53, 0x11, 0xa2, 0x8a, 0x5d, + 0x70, 0xd9, 0x4b, 0xda, 0xb8, 0x07, 0xf9, 0xd7, 0xa4, 0x6b, 0xd4, 0xa0, 0xfc, 0x72, 0x28, 0xaa, + 0x83, 0x7e, 0xce, 0xd0, 0x61, 0x61, 0x8f, 0x44, 0xdc, 0xed, 0xb8, 0x7d, 0xd4, 0x48, 0xd7, 0xf0, + 0xf3, 0x97, 0x94, 0x38, 0x6e, 0xd0, 0xd5, 0x73, 0x8d, 0x7f, 0xe5, 0xa1, 0xb2, 0x17, 0x85, 0xfd, + 0x90, 0xbd, 0xdf, 0x47, 0xe9, 0x21, 0x54, 0xfb, 0x84, 0x31, 0xb9, 0xf3, 0xf4, 0xa4, 0xad, 0x48, + 0xf0, 0x36, 0x37, 0x4c, 0x28, 0x0b, 0x29, 0x61, 0xa4, 0x1c, 0x10, 0x93, 0x98, 0x38, 0x08, 0xe2, + 0x89, 0x27, 0x5a, 0xd0, 0xbb, 0x0e, 0x96, 0x49, 0xe2, 0x87, 0x83, 0x20, 0xce, 0x58, 0x45, 0x25, + 0x9c, 0x5f, 0x3e, 0x4b, 0x1d, 0x20, 0x9c, 0xc4, 0x2f, 0x1e, 0xae, 0xf1, 0x1d, 0x3a, 0x0e, 0x39, + 0x65, 0x66, 0xb5, 0x9e, 0xc7, 0x77, 0x48, 0x10, 0xc6, 0x03, 0x28, 0xba, 0x9c, 0xfa, 0xcc, 0x84, + 0x7a, 0x7e, 0xa3, 0xb6, 0x55, 0x4f, 0x91, 0x1d, 0x7b, 0xb6, 0xb9, 0xcb, 0xa9, 0x6f, 0x4b, 0xb8, + 0xf5, 0x2d, 0x14, 0x90, 0xc4, 0xa0, 0x1e, 0xd1, 0xa1, 0x72, 0x37, 0x2e, 0xc5, 0x39, 0xc4, 0x1b, + 0xc4, 0x5d, 0x8c, 0x24, 0x50, 0xa3, 0x9e, 0x1b, 0xf0, 0xf8, 0x7d, 0xc7, 0xb5, 0x30, 0x58, 0x1a, + 0x56, 0x50, 0x06, 0x0b, 0xaa, 0xf1, 0x6f, 0x0d, 0x4a, 0xaf, 0x22, 0xd2, 0xf1, 0xe8, 0x84, 0xbb, + 0xb4, 0x49, 0x77, 0xe9, 0x90, 0xc7, 0xa7, 0x31, 0x27, 0xdf, 0x33, 0x7c, 0x19, 0xd1, 0xeb, 0x83, + 0x28, 0xa2, 0xa3, 0x63, 0x62, 0x52, 0x74, 0x17, 0xd8, 0x89, 0xa9, 0xba, 0x88, 0x6b, 0xe3, 0x3e, + 0x94, 0xfb, 0x94, 0x1e, 0x61, 0x68, 0x8b, 0xa7, 0x86, 0xb6, 0x84, 0xd0, 0x6d, 0x6e, 0x7c, 0x00, + 0x55, 0xde, 0x8b, 0x28, 0xeb, 0x85, 0x9e, 0x7c, 0x12, 0x8a, 0xf6, 0x98, 0x81, 0x5f, 0xbb, 0xe1, + 0x31, 0x8d, 0x82, 0x30, 0x62, 0x66, 0x59, 0xb8, 0x79, 0xcc, 0x68, 0xfc, 0x27, 0x07, 0xb5, 0xd7, + 0x11, 0x09, 0x98, 0x0a, 0xd2, 0x7b, 0x4c, 0xd4, 0xa4, 0x9b, 0xf2, 0xf3, 0xb2, 0xaa, 0x30, 0x27, + 0xab, 0x8a, 0x6f, 0x9a, 0x55, 0x8f, 0xa1, 0xc4, 0x38, 0xe1, 0x03, 0x26, 0x2c, 0x5f, 0xda, 0xba, + 0x91, 0xb2, 0x25, 0x61, 0x60, 0x73, 0x5f, 0x80, 0x6d, 0xb5, 0x49, 0xb4, 0x3c, 0xac, 0x1b, 0x17, + 0x5f, 0x9f, 0x75, 0x8d, 0x6b, 0x00, 0x7d, 0x12, 0x11, 0x9f, 0x72, 0x1a, 0x31, 0x95, 0xac, 0x09, + 0x4e, 0x63, 0x03, 0x4a, 0x52, 0x06, 0x5e, 0xf7, 0x3d, 0x1a, 0x88, 0xeb, 0x7e, 0xce, 0xa8, 0x42, + 0x71, 0xbb, 0x1d, 0x46, 0x5c, 0xd7, 0x8c, 0x12, 0xe4, 0x5e, 0xbd, 0xd0, 0x73, 0x8d, 0xff, 0x69, + 0x50, 0x40, 0xe8, 0x6c, 0xf5, 0xd6, 0x52, 0xaa, 0x77, 0x53, 0x5c, 0x0f, 0xfa, 0x06, 0x3e, 0x16, + 0x38, 0x11, 0xf5, 0x98, 0x25, 0xfc, 0x9b, 0xb7, 0xc7, 0x8c, 0xb7, 0x6c, 0x53, 0xe3, 0x27, 0xb8, + 0x9c, 0x78, 0x82, 0x57, 0xa1, 0xda, 0xa5, 0x7e, 0x4b, 0xb6, 0x8b, 0xd2, 0x1d, 0x95, 0x2e, 0xf5, + 0xf7, 0x44, 0xc7, 0xb8, 0x0a, 0x55, 0x87, 0xb8, 0xea, 0xa3, 0x7c, 0x93, 0x2a, 0x0e, 0x71, 0xc5, + 0xc7, 0xc6, 0x9f, 0x34, 0x58, 0xda, 0xee, 0x76, 0x23, 0xda, 0xc5, 0x8c, 0x10, 0x9e, 0x88, 0x8d, + 0xd4, 0xde, 0xc6, 0xc8, 0xdc, 0xb4, 0x91, 0x4a, 0x35, 0x79, 0xb3, 0xf3, 0x23, 0xd5, 0x0e, 0xc4, + 0xe5, 0x56, 0xaa, 0xc9, 0x8f, 0xc5, 0x91, 0x6a, 0xe2, 0x63, 0xe3, 0xcf, 0x15, 0xc8, 0xdb, 0xf4, + 0x3b, 0x6b, 0x15, 0xaa, 0xcf, 0xdc, 0xc0, 0x49, 0x9d, 0x7c, 0xac, 0x05, 0x80, 0x2f, 0x5d, 0xc6, + 0xc5, 0x47, 0x66, 0x7d, 0x00, 0x80, 0x50, 0x55, 0x03, 0xa6, 0xb1, 0x8b, 0x50, 0x43, 0xac, 0xfc, + 0xca, 0xac, 0xf3, 0xb0, 0x8c, 0xe4, 0x78, 0x2c, 0x61, 0x56, 0x1d, 0x96, 0x70, 0xff, 0xfc, 0x49, + 0x25, 0x56, 0x26, 0xb5, 0xfb, 0xb4, 0x4e, 0xa4, 0x32, 0xaa, 0xcf, 0x7d, 0xa3, 0x8c, 0x5a, 0x81, + 0xf2, 0x80, 0xd1, 0x08, 0x3f, 0xcb, 0xb2, 0x57, 0x42, 0x52, 0x5e, 0x3f, 0x35, 0x23, 0xaa, 0xf1, + 0x4d, 0x52, 0x58, 0x25, 0x3d, 0xd7, 0x77, 0xe5, 0xad, 0xcc, 0xdb, 0x92, 0xb0, 0x7e, 0x01, 0x0b, + 0x78, 0xb2, 0x7a, 0xf8, 0x58, 0x62, 0xb7, 0x96, 0xbe, 0x3b, 0x97, 0xdc, 0xbd, 0x2e, 0x3d, 0x21, + 0xf6, 0x8a, 0x5e, 0x80, 0xcd, 0x98, 0xf6, 0x19, 0xe8, 0x5f, 0x0f, 0x68, 0x34, 0x4c, 0x62, 0xce, + 0x76, 0x88, 0x05, 0x15, 0xf4, 0x5c, 0x5a, 0x67, 0x68, 0x3d, 0x82, 0x2a, 0x2a, 0x80, 0xdf, 0xce, + 0x2a, 0xf6, 0xf7, 0x1a, 0x80, 0xd0, 0x6c, 0xb4, 0x39, 0x3c, 0x3c, 0x64, 0x94, 0x8b, 0xcd, 0x79, + 0x5b, 0x51, 0xe9, 0x9b, 0xc5, 0x88, 0xd5, 0x23, 0x2c, 0x4e, 0x4c, 0x49, 0x60, 0x56, 0xfa, 0xc3, + 0x78, 0x86, 0x91, 0xb7, 0xb3, 0xe2, 0xc7, 0x9e, 0x5d, 0x81, 0xb2, 0x3f, 0x6c, 0xb5, 0x5d, 0x87, + 0xa9, 0x84, 0x2d, 0xf9, 0xc3, 0x27, 0xae, 0x23, 0x72, 0x27, 0xb6, 0x61, 0x8e, 0x0f, 0xd7, 0x61, + 0x19, 0x3d, 0x90, 0x51, 0xca, 0xd1, 0xcd, 0x28, 0x24, 0x01, 0x39, 0xab, 0x3f, 0x1e, 0xc3, 0x22, + 0x4a, 0x88, 0xdf, 0xde, 0xb3, 0x6e, 0xbf, 0x06, 0x0b, 0xa8, 0xe3, 0xbc, 0xa6, 0xc8, 0xfa, 0x54, + 0x46, 0x0a, 0x0b, 0x05, 0x4b, 0xfb, 0x19, 0xe2, 0x30, 0x0a, 0x7d, 0x25, 0x51, 0xac, 0x11, 0xc3, + 0x43, 0x55, 0xfb, 0x72, 0x3c, 0xb4, 0x1e, 0xc1, 0x05, 0x71, 0x61, 0x27, 0x6a, 0x0e, 0x1b, 0x6d, + 0xd5, 0x66, 0xb6, 0xe6, 0x46, 0x5b, 0xab, 0x50, 0x7e, 0x4e, 0xf9, 0x6e, 0x70, 0x18, 0x36, 0xfe, + 0x51, 0x83, 0x82, 0x4d, 0x59, 0xdf, 0xfa, 0x65, 0xf2, 0xfe, 0x1b, 0x77, 0xa1, 0x24, 0x9e, 0x2f, + 0x66, 0x6a, 0xa2, 0x2b, 0x99, 0xff, 0x6b, 0x85, 0xc2, 0x59, 0x4f, 0x26, 0x6a, 0x02, 0xbe, 0xed, + 0xa1, 0x5c, 0x2a, 0x09, 0x69, 0xaf, 0x9b, 0x04, 0xdb, 0x31, 0xd2, 0xb2, 0x67, 0x0a, 0x89, 0xf1, + 0x29, 0xd4, 0xc6, 0xd7, 0x3c, 0x96, 0x75, 0x35, 0x45, 0xd6, 0x78, 0x93, 0x9d, 0xdc, 0x61, 0xfd, + 0x6e, 0xa2, 0x94, 0xdc, 0x85, 0x92, 0x4a, 0xc7, 0xf9, 0x76, 0x09, 0xa8, 0xad, 0x70, 0xc6, 0x63, + 0x7c, 0x21, 0xe3, 0x5f, 0x9d, 0xd4, 0x7b, 0x95, 0x76, 0xfe, 0xf8, 0xa7, 0x29, 0x3b, 0xb1, 0xc1, + 0xfa, 0x6c, 0xaa, 0x9e, 0x9c, 0x59, 0x01, 0x6b, 0x77, 0xb6, 0xa6, 0x3c, 0x80, 0x12, 0x15, 0x2b, + 0x25, 0xe4, 0xda, 0x3c, 0x21, 0x4d, 0xb1, 0xc1, 0x56, 0x68, 0xeb, 0x7b, 0x2d, 0xa5, 0xf8, 0xbc, + 0xa5, 0xb0, 0x77, 0x75, 0xcc, 0x30, 0x59, 0xa9, 0xee, 0x40, 0x11, 0x47, 0xa4, 0x58, 0x85, 0x95, + 0x39, 0xd3, 0x96, 0x2d, 0x51, 0xef, 0x7a, 0xf4, 0xd7, 0x13, 0x85, 0xee, 0x8c, 0x67, 0x5f, 0x84, + 0x22, 0x0f, 0x39, 0xf1, 0x54, 0xdb, 0x2b, 0x09, 0xeb, 0xf9, 0x4c, 0xcd, 0xfa, 0x64, 0xca, 0xad, + 0x57, 0xe7, 0x4d, 0x90, 0x93, 0x21, 0xfa, 0xa3, 0x96, 0x52, 0xb8, 0x9e, 0xc0, 0x02, 0x4f, 0xd0, + 0x19, 0x81, 0x4a, 0x6c, 0xb3, 0x27, 0xf6, 0xbc, 0xab, 0xcf, 0xbe, 0xd7, 0xa6, 0xcb, 0xe1, 0x23, + 0xa8, 0xf6, 0x63, 0x42, 0x69, 0xb4, 0x9a, 0x31, 0xbb, 0xd8, 0x63, 0xf4, 0xbb, 0xea, 0xf2, 0xb3, + 0x64, 0xe9, 0xbc, 0x03, 0x45, 0xec, 0x6e, 0xb3, 0xc2, 0x87, 0x40, 0x5b, 0xa2, 0xac, 0xaf, 0xd2, + 0xab, 0xe6, 0xc3, 0x49, 0x29, 0xeb, 0x69, 0xe5, 0x6e, 0x62, 0x4b, 0x2c, 0xef, 0x0f, 0xda, 0xa8, + 0x96, 0x1a, 0x37, 0x61, 0x39, 0x24, 0x03, 0xde, 0x6b, 0x75, 0x3c, 0x97, 0x06, 0x89, 0x89, 0x69, + 0x51, 0xb0, 0x77, 0x04, 0x77, 0xd7, 0xc1, 0x29, 0xc9, 0xa7, 0x7e, 0x1b, 0x3b, 0xee, 0x9c, 0x18, + 0x51, 0x62, 0x72, 0x72, 0xb8, 0xc9, 0x4f, 0x0f, 0x37, 0x57, 0x01, 0xfa, 0x83, 0xb6, 0xe7, 0x76, + 0x5a, 0x38, 0xf0, 0xc9, 0xf7, 0xb4, 0x2a, 0x39, 0x2f, 0xe8, 0xf0, 0xf6, 0x0f, 0x79, 0x28, 0xc9, + 0x79, 0xc1, 0x28, 0x82, 0xd6, 0xd2, 0xcf, 0x19, 0xcb, 0x50, 0xdb, 0x1f, 0xb2, 0x5f, 0xbb, 0xbc, + 0xe7, 0x44, 0xe4, 0xb7, 0xba, 0x66, 0x5c, 0x82, 0xf3, 0x12, 0xb1, 0x3f, 0x64, 0x18, 0x18, 0x1a, + 0xf1, 0xa1, 0x9e, 0x13, 0xc3, 0xbd, 0x0a, 0xce, 0x4b, 0x72, 0x44, 0xf5, 0x9a, 0x71, 0x1e, 0x16, + 0x63, 0xce, 0x7e, 0x2f, 0x1c, 0x70, 0x7d, 0x21, 0x09, 0x3a, 0x08, 0x39, 0xd5, 0x17, 0x8d, 0x45, + 0xa8, 0xee, 0x10, 0xbe, 0x23, 0x66, 0x20, 0xfd, 0x92, 0x22, 0xf7, 0xc5, 0x2f, 0x8b, 0xfa, 0x65, + 0x1c, 0x18, 0x76, 0x08, 0xff, 0xdc, 0x71, 0xb9, 0xbe, 0xa2, 0x88, 0x67, 0xa1, 0xe7, 0xe8, 0xa6, + 0x22, 0x5e, 0x86, 0xc7, 0x54, 0xbf, 0xa2, 0x88, 0xe7, 0xc4, 0x0d, 0x74, 0x2b, 0x86, 0xb9, 0x9e, + 0xa7, 0xaf, 0x22, 0x71, 0x40, 0xf8, 0xab, 0x3e, 0x0d, 0xf4, 0x35, 0x63, 0x09, 0xe0, 0x80, 0xf0, + 0xa7, 0xb4, 0x1f, 0x32, 0x97, 0xeb, 0x75, 0x34, 0xed, 0x80, 0xf0, 0x91, 0x69, 0xeb, 0x0a, 0xb0, + 0x47, 0x86, 0x6d, 0xd2, 0x39, 0xd2, 0x1b, 0x0a, 0xf0, 0x9c, 0x06, 0x34, 0x42, 0xf5, 0xae, 0x1b, + 0x0b, 0x50, 0xc1, 0xfb, 0xf6, 0xc2, 0xed, 0x1c, 0xe9, 0x3f, 0x41, 0xe1, 0x48, 0x3d, 0x71, 0x1d, + 0xfd, 0x76, 0xfc, 0xe9, 0x29, 0x25, 0x9e, 0xfe, 0x11, 0x1a, 0x2a, 0x1f, 0x26, 0x65, 0xd9, 0x7d, + 0x94, 0x2d, 0x39, 0xc2, 0x9a, 0x9f, 0x8e, 0xe9, 0xbd, 0xf0, 0x88, 0xea, 0x9f, 0x8c, 0x69, 0x9b, + 0x7a, 0x43, 0xfd, 0xc1, 0x98, 0x7e, 0x4a, 0x83, 0xa1, 0xfe, 0x70, 0xeb, 0x87, 0x65, 0x28, 0xee, + 0x61, 0x32, 0x19, 0xcf, 0x93, 0x2d, 0x78, 0xda, 0xa8, 0x6f, 0xd3, 0xef, 0x9a, 0x23, 0x84, 0x35, + 0xf7, 0xd9, 0x35, 0xf6, 0x27, 0x9e, 0xeb, 0xf5, 0x39, 0x92, 0x12, 0x1d, 0x7d, 0x23, 0x15, 0xc2, + 0xfa, 0x09, 0x8c, 0xf1, 0xc5, 0x44, 0xd7, 0xbf, 0x9e, 0xa1, 0x9e, 0x84, 0x58, 0xf3, 0x1f, 0x75, + 0xe3, 0x60, 0xb2, 0x1f, 0x68, 0x64, 0x68, 0x18, 0xcf, 0x11, 0xd7, 0xb3, 0x54, 0x8c, 0x05, 0xb5, + 0x67, 0x7b, 0x84, 0x9b, 0x19, 0xb2, 0x93, 0x43, 0xc9, 0xad, 0x2c, 0xf9, 0x49, 0x81, 0x07, 0x33, + 0xd3, 0xcb, 0x8d, 0x0c, 0x5f, 0x8c, 0x61, 0x56, 0x76, 0x63, 0x12, 0x47, 0x5f, 0xce, 0x3c, 0x59, + 0xd1, 0x17, 0x08, 0x6b, 0x6e, 0x6f, 0x10, 0x47, 0x5f, 0xf5, 0x14, 0x59, 0xd1, 0x97, 0x90, 0xec, + 0xe8, 0x2b, 0x31, 0xdf, 0x4c, 0xb5, 0x2a, 0xd7, 0x33, 0xc4, 0xc6, 0x20, 0xeb, 0xc3, 0x2c, 0xc1, + 0x23, 0x51, 0xed, 0xd9, 0x1e, 0xe6, 0xe6, 0x69, 0x4a, 0x4b, 0x5c, 0x76, 0xd0, 0x92, 0x02, 0x69, + 0x4a, 0x6f, 0x73, 0x6b, 0xce, 0x21, 0xd3, 0x40, 0x6b, 0x63, 0xde, 0x29, 0x33, 0x22, 0x9f, 0x26, + 0xa6, 0xaf, 0xb5, 0x8c, 0x10, 0x22, 0xc0, 0x9a, 0xd7, 0x4c, 0x18, 0x7b, 0xc9, 0xee, 0xa7, 0x9e, + 0xe1, 0x0a, 0x81, 0xb0, 0xd6, 0xb3, 0x9c, 0x20, 0x85, 0xb4, 0x66, 0x3a, 0x90, 0x1b, 0xa7, 0x88, + 0x55, 0xa6, 0xdf, 0x3c, 0x4d, 0xb6, 0x12, 0xb7, 0x3f, 0xd1, 0x35, 0xad, 0x67, 0x79, 0x56, 0x2a, + 0xdd, 0xc8, 0xf4, 0xa9, 0x14, 0xf3, 0xcd, 0xec, 0x24, 0x77, 0x33, 0xc3, 0xa9, 0x09, 0x9c, 0x75, + 0x4a, 0xfb, 0x83, 0xf9, 0x30, 0xd3, 0x48, 0xdd, 0xca, 0x70, 0x49, 0x12, 0x38, 0x3f, 0x1f, 0x66, + 0x44, 0xee, 0x4d, 0xcd, 0x79, 0xd7, 0x33, 0xd4, 0x8f, 0x41, 0x56, 0x56, 0xa3, 0x64, 0xfc, 0x66, + 0xba, 0xd3, 0xfa, 0x30, 0x43, 0xeb, 0x11, 0xca, 0xba, 0x91, 0xa5, 0xf2, 0x58, 0xd8, 0x5e, 0xb2, + 0x79, 0xca, 0xca, 0x3c, 0x81, 0xc8, 0xce, 0x3c, 0x29, 0x24, 0x48, 0x6f, 0xa9, 0x6e, 0x67, 0xbd, + 0x49, 0x93, 0x58, 0xeb, 0xa3, 0xcc, 0xc7, 0x69, 0x4a, 0xf0, 0x17, 0xe3, 0x8e, 0xeb, 0xda, 0x9c, + 0x33, 0xd4, 0x77, 0x6b, 0x6d, 0x9e, 0x5c, 0x05, 0x78, 0x72, 0xf7, 0xdb, 0x66, 0xd7, 0xe5, 0xbd, + 0x41, 0xbb, 0xd9, 0x09, 0xfd, 0xcd, 0xc3, 0xf0, 0xe4, 0x4e, 0x18, 0x50, 0xf9, 0x4f, 0x85, 0x3b, + 0xe2, 0x77, 0x3a, 0xb6, 0x19, 0xff, 0x7f, 0xe1, 0xe7, 0x62, 0xd1, 0x2e, 0x09, 0xf6, 0xfd, 0xff, + 0x07, 0x00, 0x00, 0xff, 0xff, 0x71, 0x6f, 0xd3, 0xc8, 0xd8, 0x20, 0x00, 0x00, } diff --git a/handler/rpc/server.go b/handler/rpc/server.go index 15cde2a..d6a96ec 100644 --- a/handler/rpc/server.go +++ b/handler/rpc/server.go @@ -13,6 +13,7 @@ import ( "github.com/fox-one/pando/core" "github.com/fox-one/pando/handler/auth" "github.com/fox-one/pando/handler/request" + "github.com/fox-one/pando/handler/rpc/pando" api "github.com/fox-one/pando/handler/rpc/pando" "github.com/fox-one/pando/handler/rpc/views" "github.com/fox-one/pkg/logger" @@ -387,6 +388,44 @@ func (s *Server) ListVaultEvents(ctx context.Context, req *api.Req_ListVaultEven return resp, nil } +// QueryVaultEvents godoc +// @Summary query vault events +// @Description +// @Tags Vaults +// @Accept json +// @Produce json +// @param request query api.Req_QueryVaultEvents false "default limit 50" +// @Success 200 {object} api.Resp_QueryVaultEvents +// @Router /vats/query-events [get] +func (s *Server) QueryVaultEvents(ctx context.Context, req *api.Req_QueryVaultEvents) (*api.Resp_QueryVaultEvents, error) { + fromID := cast.ToInt64(req.Cursor) + limit := 100 + if l := int(req.Limit); l > 0 && l < limit { + limit = l + } + + events, err := s.vaults.QueryVaultEvents(ctx, core.QueryVaultEventsRequest{FromID: fromID, Limit: limit}) + if err != nil { + logger.FromContext(ctx).WithError(err).Error("rpc: vaults.QueryVaultEvents") + return nil, err + } + + resp := &api.Resp_QueryVaultEvents{ + Pagination: &pando.Pagination{ + HasNext: len(events) == limit, + }, + } + if resp.Pagination.HasNext { + resp.Pagination.NextCursor = cast.ToString(events[len(events)-1].ID) + } + + for _, event := range events { + resp.Events = append(resp.Events, views.VaultEvent(event)) + } + + return resp, nil +} + // FindFlip godoc // @Summary find flip by id // @Description diff --git a/handler/rpc/views/vault.go b/handler/rpc/views/vault.go index 0fe7c3e..73249fd 100644 --- a/handler/rpc/views/vault.go +++ b/handler/rpc/views/vault.go @@ -1,6 +1,8 @@ package views import ( + "strconv" + "github.com/fox-one/pando/core" api "github.com/fox-one/pando/handler/rpc/pando" ) @@ -24,5 +26,6 @@ func VaultEvent(event *core.VaultEvent) *api.Vault_Event { Dink: event.Dink.String(), Dart: event.Dart.String(), Debt: event.Debt.String(), + Id: strconv.FormatInt(event.ID, 10), } } diff --git a/mock/gen.go b/mock/gen.go index 4299b20..9aa8956 100644 --- a/mock/gen.go +++ b/mock/gen.go @@ -1,3 +1,3 @@ package mock -//go:generate mockgen -package=mock -destination=mock_gen.go github.com/fox-one/pando/core AssetStore,AssetService,CollateralStore,FlipStore,MessageStore,MessageService,Notifier,OracleStore,OracleService,ProposalStore,Parliament,Session,TransactionStore,UserStore,UserService,VaultStore,WalletStore,WalletService +//go:generate go run github.com/golang/mock/mockgen -package=mock -destination=mock_gen.go github.com/fox-one/pando/core AssetStore,AssetService,CollateralStore,FlipStore,MessageStore,MessageService,Notifier,OracleStore,OracleService,ProposalStore,Parliament,Session,TransactionStore,UserStore,UserService,VaultStore,WalletStore,WalletService diff --git a/mock/mock_gen.go b/mock/mock_gen.go index 200c248..9bb0a9c 100644 --- a/mock/mock_gen.go +++ b/mock/mock_gen.go @@ -9,6 +9,7 @@ import ( core "github.com/fox-one/pando/core" number "github.com/fox-one/pando/pkg/number" gomock "github.com/golang/mock/gomock" + decimal "github.com/shopspring/decimal" http "net/http" reflect "reflect" time "time" @@ -134,6 +135,21 @@ func (mr *MockAssetServiceMockRecorder) List(arg0 interface{}) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockAssetService)(nil).List), arg0) } +// ReadPrice mocks base method +func (m *MockAssetService) ReadPrice(arg0 context.Context, arg1 string, arg2 time.Time) (decimal.Decimal, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ReadPrice", arg0, arg1, arg2) + ret0, _ := ret[0].(decimal.Decimal) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ReadPrice indicates an expected call of ReadPrice +func (mr *MockAssetServiceMockRecorder) ReadPrice(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadPrice", reflect.TypeOf((*MockAssetService)(nil).ReadPrice), arg0, arg1, arg2) +} + // MockCollateralStore is a mock of CollateralStore interface type MockCollateralStore struct { ctrl *gomock.Controller @@ -1342,6 +1358,21 @@ func (mr *MockVaultStoreMockRecorder) PluckUser(arg0, arg1 interface{}) *gomock. return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PluckUser", reflect.TypeOf((*MockVaultStore)(nil).PluckUser), arg0, arg1) } +// QueryVaultEvents mocks base method +func (m *MockVaultStore) QueryVaultEvents(arg0 context.Context, arg1 core.QueryVaultEventsRequest) ([]*core.VaultEvent, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryVaultEvents", arg0, arg1) + ret0, _ := ret[0].([]*core.VaultEvent) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryVaultEvents indicates an expected call of QueryVaultEvents +func (mr *MockVaultStoreMockRecorder) QueryVaultEvents(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryVaultEvents", reflect.TypeOf((*MockVaultStore)(nil).QueryVaultEvents), arg0, arg1) +} + // Update mocks base method func (m *MockVaultStore) Update(arg0 context.Context, arg1 *core.Vault, arg2 int64) error { m.ctrl.T.Helper() diff --git a/store/vault/vault.go b/store/vault/vault.go index 0658dfb..661f708 100644 --- a/store/vault/vault.go +++ b/store/vault/vault.go @@ -222,3 +222,20 @@ func (s *vaultStore) ListVaultEvents(ctx context.Context, vaultID string) ([]*co return events, nil } + +func (s *vaultStore) QueryVaultEvents(ctx context.Context, req core.QueryVaultEventsRequest) ([]*core.VaultEvent, error) { + var events []*core.VaultEvent + tx := s.db.View() + if req.FromID > 0 { + tx = tx.Where("id > ?", req.FromID) + } + if req.Limit > 0 { + tx = tx.Limit(req.Limit) + } + + if err := tx.Order("id").Find(&events).Error; err != nil { + return nil, err + } + + return events, nil +}