From 1cf5e2a98f12eabee63c1ccd5722356f42db46c8 Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Thu, 14 Dec 2023 21:48:57 +0100 Subject: [PATCH 1/3] Simple transaction overview --- gen/mgo.pb.go | 1024 +++++++++-------- gen/portfoliov1connect/mgo.connect.go | 141 ++- mgo.proto | 10 +- service/portfolio/transactions.go | 12 +- service/portfolio/transactions_test.go | 4 +- .../components/PortfolioPositionsTable.svelte | 105 +- .../components/PortfolioTransactionRow.svelte | 57 + .../PortfolioTransactionsTable.svelte | 164 +++ ui/src/lib/components/TableSorter.svelte | 2 + ui/src/lib/gen/mgo_connect.ts | 15 +- ui/src/lib/gen/mgo_pb.ts | 39 +- .../portfolios/[...portfolioName]/+layout.ts | 4 +- .../[...portfolioName]/+page.svelte | 2 + .../transactions/+page.svelte | 8 + .../[...portfolioName]/transactions/+page.ts | 19 + .../transactions/[txName]/+page.svelte | 27 +- .../transactions/[txName]/+page.ts | 10 +- 17 files changed, 1070 insertions(+), 573 deletions(-) create mode 100644 ui/src/lib/components/PortfolioTransactionRow.svelte create mode 100644 ui/src/lib/components/PortfolioTransactionsTable.svelte create mode 100644 ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte create mode 100644 ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts diff --git a/gen/mgo.pb.go b/gen/mgo.pb.go index f1e6e2b2..9402bee8 100644 --- a/gen/mgo.pb.go +++ b/gen/mgo.pb.go @@ -467,6 +467,53 @@ func (x *CreatePortfolioTransactionRequest) GetTransaction() *PortfolioEvent { return nil } +type GetPortfolioTransactionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetPortfolioTransactionRequest) Reset() { + *x = GetPortfolioTransactionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mgo_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPortfolioTransactionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPortfolioTransactionRequest) ProtoMessage() {} + +func (x *GetPortfolioTransactionRequest) ProtoReflect() protoreflect.Message { + mi := &file_mgo_proto_msgTypes[8] + 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 GetPortfolioTransactionRequest.ProtoReflect.Descriptor instead. +func (*GetPortfolioTransactionRequest) Descriptor() ([]byte, []int) { + return file_mgo_proto_rawDescGZIP(), []int{8} +} + +func (x *GetPortfolioTransactionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type ListPortfolioTransactionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -478,7 +525,7 @@ type ListPortfolioTransactionsRequest struct { func (x *ListPortfolioTransactionsRequest) Reset() { *x = ListPortfolioTransactionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[8] + mi := &file_mgo_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +538,7 @@ func (x *ListPortfolioTransactionsRequest) String() string { func (*ListPortfolioTransactionsRequest) ProtoMessage() {} func (x *ListPortfolioTransactionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[8] + mi := &file_mgo_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,7 +551,7 @@ func (x *ListPortfolioTransactionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPortfolioTransactionsRequest.ProtoReflect.Descriptor instead. func (*ListPortfolioTransactionsRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{8} + return file_mgo_proto_rawDescGZIP(), []int{9} } func (x *ListPortfolioTransactionsRequest) GetPortfolioName() string { @@ -525,7 +572,7 @@ type ListPortfolioTransactionsResponse struct { func (x *ListPortfolioTransactionsResponse) Reset() { *x = ListPortfolioTransactionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[9] + mi := &file_mgo_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -538,7 +585,7 @@ func (x *ListPortfolioTransactionsResponse) String() string { func (*ListPortfolioTransactionsResponse) ProtoMessage() {} func (x *ListPortfolioTransactionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[9] + mi := &file_mgo_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -551,7 +598,7 @@ func (x *ListPortfolioTransactionsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ListPortfolioTransactionsResponse.ProtoReflect.Descriptor instead. func (*ListPortfolioTransactionsResponse) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{9} + return file_mgo_proto_rawDescGZIP(), []int{10} } func (x *ListPortfolioTransactionsResponse) GetTransactions() []*PortfolioEvent { @@ -573,7 +620,7 @@ type UpdatePortfolioTransactionRequest struct { func (x *UpdatePortfolioTransactionRequest) Reset() { *x = UpdatePortfolioTransactionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[10] + mi := &file_mgo_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -586,7 +633,7 @@ func (x *UpdatePortfolioTransactionRequest) String() string { func (*UpdatePortfolioTransactionRequest) ProtoMessage() {} func (x *UpdatePortfolioTransactionRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[10] + mi := &file_mgo_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -599,7 +646,7 @@ func (x *UpdatePortfolioTransactionRequest) ProtoReflect() protoreflect.Message // Deprecated: Use UpdatePortfolioTransactionRequest.ProtoReflect.Descriptor instead. func (*UpdatePortfolioTransactionRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{10} + return file_mgo_proto_rawDescGZIP(), []int{11} } func (x *UpdatePortfolioTransactionRequest) GetTransaction() *PortfolioEvent { @@ -627,7 +674,7 @@ type DeletePortfolioTransactionRequest struct { func (x *DeletePortfolioTransactionRequest) Reset() { *x = DeletePortfolioTransactionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[11] + mi := &file_mgo_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -640,7 +687,7 @@ func (x *DeletePortfolioTransactionRequest) String() string { func (*DeletePortfolioTransactionRequest) ProtoMessage() {} func (x *DeletePortfolioTransactionRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[11] + mi := &file_mgo_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -653,7 +700,7 @@ func (x *DeletePortfolioTransactionRequest) ProtoReflect() protoreflect.Message // Deprecated: Use DeletePortfolioTransactionRequest.ProtoReflect.Descriptor instead. func (*DeletePortfolioTransactionRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{11} + return file_mgo_proto_rawDescGZIP(), []int{12} } func (x *DeletePortfolioTransactionRequest) GetTransactionId() int32 { @@ -675,7 +722,7 @@ type ImportTransactionsRequest struct { func (x *ImportTransactionsRequest) Reset() { *x = ImportTransactionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[12] + mi := &file_mgo_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -688,7 +735,7 @@ func (x *ImportTransactionsRequest) String() string { func (*ImportTransactionsRequest) ProtoMessage() {} func (x *ImportTransactionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[12] + mi := &file_mgo_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -701,7 +748,7 @@ func (x *ImportTransactionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportTransactionsRequest.ProtoReflect.Descriptor instead. func (*ImportTransactionsRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{12} + return file_mgo_proto_rawDescGZIP(), []int{13} } func (x *ImportTransactionsRequest) GetPortfolioName() string { @@ -733,7 +780,7 @@ type Portfolio struct { func (x *Portfolio) Reset() { *x = Portfolio{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[13] + mi := &file_mgo_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -746,7 +793,7 @@ func (x *Portfolio) String() string { func (*Portfolio) ProtoMessage() {} func (x *Portfolio) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[13] + mi := &file_mgo_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -759,7 +806,7 @@ func (x *Portfolio) ProtoReflect() protoreflect.Message { // Deprecated: Use Portfolio.ProtoReflect.Descriptor instead. func (*Portfolio) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{13} + return file_mgo_proto_rawDescGZIP(), []int{14} } func (x *Portfolio) GetName() string { @@ -813,7 +860,7 @@ type PortfolioSnapshot struct { func (x *PortfolioSnapshot) Reset() { *x = PortfolioSnapshot{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[14] + mi := &file_mgo_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -826,7 +873,7 @@ func (x *PortfolioSnapshot) String() string { func (*PortfolioSnapshot) ProtoMessage() {} func (x *PortfolioSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[14] + mi := &file_mgo_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -839,7 +886,7 @@ func (x *PortfolioSnapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use PortfolioSnapshot.ProtoReflect.Descriptor instead. func (*PortfolioSnapshot) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{14} + return file_mgo_proto_rawDescGZIP(), []int{15} } func (x *PortfolioSnapshot) GetTime() *timestamppb.Timestamp { @@ -923,7 +970,7 @@ type PortfolioPosition struct { func (x *PortfolioPosition) Reset() { *x = PortfolioPosition{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[15] + mi := &file_mgo_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -936,7 +983,7 @@ func (x *PortfolioPosition) String() string { func (*PortfolioPosition) ProtoMessage() {} func (x *PortfolioPosition) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[15] + mi := &file_mgo_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -949,7 +996,7 @@ func (x *PortfolioPosition) ProtoReflect() protoreflect.Message { // Deprecated: Use PortfolioPosition.ProtoReflect.Descriptor instead. func (*PortfolioPosition) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{15} + return file_mgo_proto_rawDescGZIP(), []int{16} } func (x *PortfolioPosition) GetSecurity() *Security { @@ -1034,7 +1081,7 @@ type PortfolioEvent struct { func (x *PortfolioEvent) Reset() { *x = PortfolioEvent{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[16] + mi := &file_mgo_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1047,7 +1094,7 @@ func (x *PortfolioEvent) String() string { func (*PortfolioEvent) ProtoMessage() {} func (x *PortfolioEvent) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[16] + mi := &file_mgo_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1060,7 +1107,7 @@ func (x *PortfolioEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PortfolioEvent.ProtoReflect.Descriptor instead. func (*PortfolioEvent) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{16} + return file_mgo_proto_rawDescGZIP(), []int{17} } func (x *PortfolioEvent) GetName() string { @@ -1143,7 +1190,7 @@ type Security struct { func (x *Security) Reset() { *x = Security{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[17] + mi := &file_mgo_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1156,7 +1203,7 @@ func (x *Security) String() string { func (*Security) ProtoMessage() {} func (x *Security) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[17] + mi := &file_mgo_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1169,7 +1216,7 @@ func (x *Security) ProtoReflect() protoreflect.Message { // Deprecated: Use Security.ProtoReflect.Descriptor instead. func (*Security) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{17} + return file_mgo_proto_rawDescGZIP(), []int{18} } func (x *Security) GetName() string { @@ -1215,7 +1262,7 @@ type ListedSecurity struct { func (x *ListedSecurity) Reset() { *x = ListedSecurity{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[18] + mi := &file_mgo_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1228,7 +1275,7 @@ func (x *ListedSecurity) String() string { func (*ListedSecurity) ProtoMessage() {} func (x *ListedSecurity) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[18] + mi := &file_mgo_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1241,7 +1288,7 @@ func (x *ListedSecurity) ProtoReflect() protoreflect.Message { // Deprecated: Use ListedSecurity.ProtoReflect.Descriptor instead. func (*ListedSecurity) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{18} + return file_mgo_proto_rawDescGZIP(), []int{19} } func (x *ListedSecurity) GetSecurityName() string { @@ -1290,7 +1337,7 @@ type ListSecuritiesRequest struct { func (x *ListSecuritiesRequest) Reset() { *x = ListSecuritiesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[19] + mi := &file_mgo_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1303,7 +1350,7 @@ func (x *ListSecuritiesRequest) String() string { func (*ListSecuritiesRequest) ProtoMessage() {} func (x *ListSecuritiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[19] + mi := &file_mgo_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1316,7 +1363,7 @@ func (x *ListSecuritiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSecuritiesRequest.ProtoReflect.Descriptor instead. func (*ListSecuritiesRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{19} + return file_mgo_proto_rawDescGZIP(), []int{20} } func (x *ListSecuritiesRequest) GetFilter() *ListSecuritiesRequest_Filter { @@ -1337,7 +1384,7 @@ type ListSecuritiesResponse struct { func (x *ListSecuritiesResponse) Reset() { *x = ListSecuritiesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[20] + mi := &file_mgo_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1350,7 +1397,7 @@ func (x *ListSecuritiesResponse) String() string { func (*ListSecuritiesResponse) ProtoMessage() {} func (x *ListSecuritiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[20] + mi := &file_mgo_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1363,7 +1410,7 @@ func (x *ListSecuritiesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSecuritiesResponse.ProtoReflect.Descriptor instead. func (*ListSecuritiesResponse) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{20} + return file_mgo_proto_rawDescGZIP(), []int{21} } func (x *ListSecuritiesResponse) GetSecurities() []*Security { @@ -1384,7 +1431,7 @@ type GetSecurityRequest struct { func (x *GetSecurityRequest) Reset() { *x = GetSecurityRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[21] + mi := &file_mgo_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1397,7 +1444,7 @@ func (x *GetSecurityRequest) String() string { func (*GetSecurityRequest) ProtoMessage() {} func (x *GetSecurityRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[21] + mi := &file_mgo_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1410,7 +1457,7 @@ func (x *GetSecurityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSecurityRequest.ProtoReflect.Descriptor instead. func (*GetSecurityRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{21} + return file_mgo_proto_rawDescGZIP(), []int{22} } func (x *GetSecurityRequest) GetName() string { @@ -1431,7 +1478,7 @@ type CreateSecurityRequest struct { func (x *CreateSecurityRequest) Reset() { *x = CreateSecurityRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[22] + mi := &file_mgo_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1444,7 +1491,7 @@ func (x *CreateSecurityRequest) String() string { func (*CreateSecurityRequest) ProtoMessage() {} func (x *CreateSecurityRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[22] + mi := &file_mgo_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1457,7 +1504,7 @@ func (x *CreateSecurityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSecurityRequest.ProtoReflect.Descriptor instead. func (*CreateSecurityRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{22} + return file_mgo_proto_rawDescGZIP(), []int{23} } func (x *CreateSecurityRequest) GetSecurity() *Security { @@ -1479,7 +1526,7 @@ type UpdateSecurityRequest struct { func (x *UpdateSecurityRequest) Reset() { *x = UpdateSecurityRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[23] + mi := &file_mgo_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1492,7 +1539,7 @@ func (x *UpdateSecurityRequest) String() string { func (*UpdateSecurityRequest) ProtoMessage() {} func (x *UpdateSecurityRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[23] + mi := &file_mgo_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1505,7 +1552,7 @@ func (x *UpdateSecurityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSecurityRequest.ProtoReflect.Descriptor instead. func (*UpdateSecurityRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{23} + return file_mgo_proto_rawDescGZIP(), []int{24} } func (x *UpdateSecurityRequest) GetSecurity() *Security { @@ -1533,7 +1580,7 @@ type DeleteSecurityRequest struct { func (x *DeleteSecurityRequest) Reset() { *x = DeleteSecurityRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[24] + mi := &file_mgo_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1546,7 +1593,7 @@ func (x *DeleteSecurityRequest) String() string { func (*DeleteSecurityRequest) ProtoMessage() {} func (x *DeleteSecurityRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[24] + mi := &file_mgo_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1559,7 +1606,7 @@ func (x *DeleteSecurityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSecurityRequest.ProtoReflect.Descriptor instead. func (*DeleteSecurityRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{24} + return file_mgo_proto_rawDescGZIP(), []int{25} } func (x *DeleteSecurityRequest) GetName() string { @@ -1580,7 +1627,7 @@ type TriggerQuoteUpdateRequest struct { func (x *TriggerQuoteUpdateRequest) Reset() { *x = TriggerQuoteUpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[25] + mi := &file_mgo_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1593,7 +1640,7 @@ func (x *TriggerQuoteUpdateRequest) String() string { func (*TriggerQuoteUpdateRequest) ProtoMessage() {} func (x *TriggerQuoteUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[25] + mi := &file_mgo_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1606,7 +1653,7 @@ func (x *TriggerQuoteUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerQuoteUpdateRequest.ProtoReflect.Descriptor instead. func (*TriggerQuoteUpdateRequest) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{25} + return file_mgo_proto_rawDescGZIP(), []int{26} } func (x *TriggerQuoteUpdateRequest) GetSecurityNames() []string { @@ -1625,7 +1672,7 @@ type TriggerQuoteUpdateResponse struct { func (x *TriggerQuoteUpdateResponse) Reset() { *x = TriggerQuoteUpdateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[26] + mi := &file_mgo_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1638,7 +1685,7 @@ func (x *TriggerQuoteUpdateResponse) String() string { func (*TriggerQuoteUpdateResponse) ProtoMessage() {} func (x *TriggerQuoteUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[26] + mi := &file_mgo_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1651,7 +1698,7 @@ func (x *TriggerQuoteUpdateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerQuoteUpdateResponse.ProtoReflect.Descriptor instead. func (*TriggerQuoteUpdateResponse) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{26} + return file_mgo_proto_rawDescGZIP(), []int{27} } type ListSecuritiesRequest_Filter struct { @@ -1665,7 +1712,7 @@ type ListSecuritiesRequest_Filter struct { func (x *ListSecuritiesRequest_Filter) Reset() { *x = ListSecuritiesRequest_Filter{} if protoimpl.UnsafeEnabled { - mi := &file_mgo_proto_msgTypes[28] + mi := &file_mgo_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1678,7 +1725,7 @@ func (x *ListSecuritiesRequest_Filter) String() string { func (*ListSecuritiesRequest_Filter) ProtoMessage() {} func (x *ListSecuritiesRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_mgo_proto_msgTypes[28] + mi := &file_mgo_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1691,7 +1738,7 @@ func (x *ListSecuritiesRequest_Filter) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSecuritiesRequest_Filter.ProtoReflect.Descriptor instead. func (*ListSecuritiesRequest_Filter) Descriptor() ([]byte, []int) { - return file_mgo_proto_rawDescGZIP(), []int{19, 0} + return file_mgo_proto_rawDescGZIP(), []int{20, 0} } func (x *ListSecuritiesRequest_Filter) GetSecurityNames() []string { @@ -1752,330 +1799,340 @@ var file_mgo_proto_rawDesc = []byte{ 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, - 0x20, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, - 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, - 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, + 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, + 0x1e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x72, - 0x6f, 0x6d, 0x5f, 0x63, 0x73, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, - 0x6f, 0x6d, 0x43, 0x73, 0x76, 0x22, 0x7c, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, - 0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x69, + 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0x9c, 0x04, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x09, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x66, - 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x14, 0x66, 0x69, 0x72, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x75, 0x72, 0x63, - 0x68, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x4f, 0x72, 0x4c, - 0x6f, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x69, - 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, - 0x61, 0x69, 0x6e, 0x73, 0x1a, 0x61, 0x0a, 0x0e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, - 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x72, 0x73, - 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, - 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x75, 0x72, 0x63, - 0x68, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0d, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, - 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x65, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x4f, 0x72, 0x4c, 0x6f, 0x73, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x05, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xb2, 0x02, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x78, 0x65, 0x73, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x74, 0x61, 0x78, 0x65, 0x73, 0x22, 0xbf, 0x01, 0x0a, - 0x08, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x3d, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, - 0x2a, 0x0a, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x94, - 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x0c, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x55, 0x0a, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, - 0x52, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x2f, 0x0a, 0x06, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x54, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x28, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, - 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x22, 0x8c, 0x01, 0x0a, 0x15, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x19, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xf1, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, - 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, - 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x55, 0x59, - 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x4c, 0x4c, 0x10, - 0x02, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, - 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, - 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4f, 0x55, - 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, - 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x44, 0x10, 0x0a, 0x32, 0x86, 0x09, 0x0a, 0x10, - 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x58, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x21, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x42, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x19, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x73, 0x76, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x73, 0x76, 0x22, 0x7c, 0x0a, 0x09, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x38, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x9c, 0x04, 0x0a, 0x11, 0x50, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, + 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x50, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x55, 0x0a, 0x16, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, + 0x14, 0x66, 0x69, 0x72, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, + 0x63, 0x68, 0x61, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x73, 0x73, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x74, 0x4f, 0x72, 0x4c, 0x6f, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x69, 0x6e, 0x73, 0x1a, 0x61, 0x0a, 0x0e, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x68, 0x0a, 0x0e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x12, 0x27, 0x2e, 0x6d, + 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x19, 0x0a, + 0x17, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x11, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, + 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, + 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x70, + 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x65, 0x65, 0x73, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x65, 0x65, + 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, + 0x6f, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x74, 0x4f, 0x72, 0x4c, 0x6f, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xb2, 0x02, + 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, + 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x61, 0x78, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x74, 0x61, 0x78, + 0x65, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, + 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x2a, 0x0a, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, + 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x22, 0x94, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, + 0x63, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x12, 0x26, 0x0a, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x51, 0x75, 0x6f, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x16, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x51, 0x75, + 0x6f, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x6f, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xa0, 0x01, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, + 0x01, 0x01, 0x1a, 0x2f, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x54, + 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x90, 0x02, 0x01, 0x12, 0x57, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x25, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x67, - 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x58, 0x0a, - 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x67, 0x6f, - 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x53, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6f, - 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x6f, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2d, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x22, 0x28, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x22, + 0x8c, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x2b, + 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x19, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, + 0x1c, 0x0a, 0x1a, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xf1, 0x01, + 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, + 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, + 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x42, 0x55, 0x59, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, + 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x46, + 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, + 0x45, 0x52, 0x59, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x21, + 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x46, 0x4f, 0x4c, 0x49, 0x4f, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x44, 0x10, + 0x0a, 0x32, 0xff, 0x09, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x73, 0x0a, - 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x12, 0x68, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x67, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x57, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x25, 0x2e, 0x6d, 0x67, 0x6f, + 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1b, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x53, 0x0a, + 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x6f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2d, 0x2e, 0x6d, 0x67, 0x6f, + 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x73, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x33, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x89, 0x01, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x6d, 0x67, 0x6f, + 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, + 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x73, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x67, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x69, 0x0a, + 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6d, 0x67, - 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x84, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x32, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x1a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, - 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x69, - 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x12, 0x49, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x2b, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x32, 0xcd, 0x04, 0x0a, 0x11, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x0e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x90, 0x02, 0x01, 0x12, 0x54, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x24, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, - 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x55, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, - 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6f, - 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x77, 0x0a, 0x1a, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x51, 0x75, - 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, - 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xb2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x67, 0x6f, - 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x4d, - 0x67, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x78, 0x69, 0x73, 0x74, 0x6f, 0x2f, 0x6d, 0x6f, 0x6e, - 0x65, 0x79, 0x2d, 0x67, 0x6f, 0x70, 0x68, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x70, 0x6f, - 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x50, 0x58, 0xaa, - 0x02, 0x10, 0x4d, 0x67, 0x6f, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x10, 0x4d, 0x67, 0x6f, 0x5c, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, - 0x69, 0x6f, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x4d, 0x67, 0x6f, 0x5c, 0x50, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x4d, 0x67, 0x6f, 0x3a, 0x3a, 0x50, 0x6f, 0x72, 0x74, - 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x12, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, + 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x32, 0xcd, 0x04, 0x0a, 0x11, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x0e, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x67, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x54, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x24, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x67, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x55, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x67, + 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x77, 0x0a, 0x1a, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x51, 0x75, 0x6f, + 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, 0x70, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x51, 0x75, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0xb2, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x67, 0x6f, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x4d, 0x67, + 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x78, 0x69, 0x73, 0x74, 0x6f, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, + 0x79, 0x2d, 0x67, 0x6f, 0x70, 0x68, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x70, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x50, 0x58, 0xaa, 0x02, + 0x10, 0x4d, 0x67, 0x6f, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x10, 0x4d, 0x67, 0x6f, 0x5c, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x4d, 0x67, 0x6f, 0x5c, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x4d, 0x67, 0x6f, 0x3a, 0x3a, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2091,7 +2148,7 @@ func file_mgo_proto_rawDescGZIP() []byte { } var file_mgo_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_mgo_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_mgo_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_mgo_proto_goTypes = []interface{}{ (PortfolioEventType)(0), // 0: mgo.portfolio.v1.PortfolioEventType (*CreatePortfolioRequest)(nil), // 1: mgo.portfolio.v1.CreatePortfolioRequest @@ -2102,56 +2159,57 @@ var file_mgo_proto_goTypes = []interface{}{ (*DeletePortfolioRequest)(nil), // 6: mgo.portfolio.v1.DeletePortfolioRequest (*GetPortfolioSnapshotRequest)(nil), // 7: mgo.portfolio.v1.GetPortfolioSnapshotRequest (*CreatePortfolioTransactionRequest)(nil), // 8: mgo.portfolio.v1.CreatePortfolioTransactionRequest - (*ListPortfolioTransactionsRequest)(nil), // 9: mgo.portfolio.v1.ListPortfolioTransactionsRequest - (*ListPortfolioTransactionsResponse)(nil), // 10: mgo.portfolio.v1.ListPortfolioTransactionsResponse - (*UpdatePortfolioTransactionRequest)(nil), // 11: mgo.portfolio.v1.UpdatePortfolioTransactionRequest - (*DeletePortfolioTransactionRequest)(nil), // 12: mgo.portfolio.v1.DeletePortfolioTransactionRequest - (*ImportTransactionsRequest)(nil), // 13: mgo.portfolio.v1.ImportTransactionsRequest - (*Portfolio)(nil), // 14: mgo.portfolio.v1.Portfolio - (*PortfolioSnapshot)(nil), // 15: mgo.portfolio.v1.PortfolioSnapshot - (*PortfolioPosition)(nil), // 16: mgo.portfolio.v1.PortfolioPosition - (*PortfolioEvent)(nil), // 17: mgo.portfolio.v1.PortfolioEvent - (*Security)(nil), // 18: mgo.portfolio.v1.Security - (*ListedSecurity)(nil), // 19: mgo.portfolio.v1.ListedSecurity - (*ListSecuritiesRequest)(nil), // 20: mgo.portfolio.v1.ListSecuritiesRequest - (*ListSecuritiesResponse)(nil), // 21: mgo.portfolio.v1.ListSecuritiesResponse - (*GetSecurityRequest)(nil), // 22: mgo.portfolio.v1.GetSecurityRequest - (*CreateSecurityRequest)(nil), // 23: mgo.portfolio.v1.CreateSecurityRequest - (*UpdateSecurityRequest)(nil), // 24: mgo.portfolio.v1.UpdateSecurityRequest - (*DeleteSecurityRequest)(nil), // 25: mgo.portfolio.v1.DeleteSecurityRequest - (*TriggerQuoteUpdateRequest)(nil), // 26: mgo.portfolio.v1.TriggerQuoteUpdateRequest - (*TriggerQuoteUpdateResponse)(nil), // 27: mgo.portfolio.v1.TriggerQuoteUpdateResponse - nil, // 28: mgo.portfolio.v1.PortfolioSnapshot.PositionsEntry - (*ListSecuritiesRequest_Filter)(nil), // 29: mgo.portfolio.v1.ListSecuritiesRequest.Filter - (*fieldmaskpb.FieldMask)(nil), // 30: google.protobuf.FieldMask - (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp - (*emptypb.Empty)(nil), // 32: google.protobuf.Empty + (*GetPortfolioTransactionRequest)(nil), // 9: mgo.portfolio.v1.GetPortfolioTransactionRequest + (*ListPortfolioTransactionsRequest)(nil), // 10: mgo.portfolio.v1.ListPortfolioTransactionsRequest + (*ListPortfolioTransactionsResponse)(nil), // 11: mgo.portfolio.v1.ListPortfolioTransactionsResponse + (*UpdatePortfolioTransactionRequest)(nil), // 12: mgo.portfolio.v1.UpdatePortfolioTransactionRequest + (*DeletePortfolioTransactionRequest)(nil), // 13: mgo.portfolio.v1.DeletePortfolioTransactionRequest + (*ImportTransactionsRequest)(nil), // 14: mgo.portfolio.v1.ImportTransactionsRequest + (*Portfolio)(nil), // 15: mgo.portfolio.v1.Portfolio + (*PortfolioSnapshot)(nil), // 16: mgo.portfolio.v1.PortfolioSnapshot + (*PortfolioPosition)(nil), // 17: mgo.portfolio.v1.PortfolioPosition + (*PortfolioEvent)(nil), // 18: mgo.portfolio.v1.PortfolioEvent + (*Security)(nil), // 19: mgo.portfolio.v1.Security + (*ListedSecurity)(nil), // 20: mgo.portfolio.v1.ListedSecurity + (*ListSecuritiesRequest)(nil), // 21: mgo.portfolio.v1.ListSecuritiesRequest + (*ListSecuritiesResponse)(nil), // 22: mgo.portfolio.v1.ListSecuritiesResponse + (*GetSecurityRequest)(nil), // 23: mgo.portfolio.v1.GetSecurityRequest + (*CreateSecurityRequest)(nil), // 24: mgo.portfolio.v1.CreateSecurityRequest + (*UpdateSecurityRequest)(nil), // 25: mgo.portfolio.v1.UpdateSecurityRequest + (*DeleteSecurityRequest)(nil), // 26: mgo.portfolio.v1.DeleteSecurityRequest + (*TriggerQuoteUpdateRequest)(nil), // 27: mgo.portfolio.v1.TriggerQuoteUpdateRequest + (*TriggerQuoteUpdateResponse)(nil), // 28: mgo.portfolio.v1.TriggerQuoteUpdateResponse + nil, // 29: mgo.portfolio.v1.PortfolioSnapshot.PositionsEntry + (*ListSecuritiesRequest_Filter)(nil), // 30: mgo.portfolio.v1.ListSecuritiesRequest.Filter + (*fieldmaskpb.FieldMask)(nil), // 31: google.protobuf.FieldMask + (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 33: google.protobuf.Empty } var file_mgo_proto_depIdxs = []int32{ - 14, // 0: mgo.portfolio.v1.CreatePortfolioRequest.portfolio:type_name -> mgo.portfolio.v1.Portfolio - 14, // 1: mgo.portfolio.v1.ListPortfoliosResponse.portfolios:type_name -> mgo.portfolio.v1.Portfolio - 14, // 2: mgo.portfolio.v1.UpdatePortfolioRequest.portfolio:type_name -> mgo.portfolio.v1.Portfolio - 30, // 3: mgo.portfolio.v1.UpdatePortfolioRequest.update_mask:type_name -> google.protobuf.FieldMask - 31, // 4: mgo.portfolio.v1.GetPortfolioSnapshotRequest.time:type_name -> google.protobuf.Timestamp - 17, // 5: mgo.portfolio.v1.CreatePortfolioTransactionRequest.transaction:type_name -> mgo.portfolio.v1.PortfolioEvent - 17, // 6: mgo.portfolio.v1.ListPortfolioTransactionsResponse.transactions:type_name -> mgo.portfolio.v1.PortfolioEvent - 17, // 7: mgo.portfolio.v1.UpdatePortfolioTransactionRequest.transaction:type_name -> mgo.portfolio.v1.PortfolioEvent - 30, // 8: mgo.portfolio.v1.UpdatePortfolioTransactionRequest.update_mask:type_name -> google.protobuf.FieldMask - 17, // 9: mgo.portfolio.v1.Portfolio.events:type_name -> mgo.portfolio.v1.PortfolioEvent - 31, // 10: mgo.portfolio.v1.PortfolioSnapshot.time:type_name -> google.protobuf.Timestamp - 28, // 11: mgo.portfolio.v1.PortfolioSnapshot.positions:type_name -> mgo.portfolio.v1.PortfolioSnapshot.PositionsEntry - 31, // 12: mgo.portfolio.v1.PortfolioSnapshot.first_transaction_time:type_name -> google.protobuf.Timestamp - 18, // 13: mgo.portfolio.v1.PortfolioPosition.security:type_name -> mgo.portfolio.v1.Security + 15, // 0: mgo.portfolio.v1.CreatePortfolioRequest.portfolio:type_name -> mgo.portfolio.v1.Portfolio + 15, // 1: mgo.portfolio.v1.ListPortfoliosResponse.portfolios:type_name -> mgo.portfolio.v1.Portfolio + 15, // 2: mgo.portfolio.v1.UpdatePortfolioRequest.portfolio:type_name -> mgo.portfolio.v1.Portfolio + 31, // 3: mgo.portfolio.v1.UpdatePortfolioRequest.update_mask:type_name -> google.protobuf.FieldMask + 32, // 4: mgo.portfolio.v1.GetPortfolioSnapshotRequest.time:type_name -> google.protobuf.Timestamp + 18, // 5: mgo.portfolio.v1.CreatePortfolioTransactionRequest.transaction:type_name -> mgo.portfolio.v1.PortfolioEvent + 18, // 6: mgo.portfolio.v1.ListPortfolioTransactionsResponse.transactions:type_name -> mgo.portfolio.v1.PortfolioEvent + 18, // 7: mgo.portfolio.v1.UpdatePortfolioTransactionRequest.transaction:type_name -> mgo.portfolio.v1.PortfolioEvent + 31, // 8: mgo.portfolio.v1.UpdatePortfolioTransactionRequest.update_mask:type_name -> google.protobuf.FieldMask + 18, // 9: mgo.portfolio.v1.Portfolio.events:type_name -> mgo.portfolio.v1.PortfolioEvent + 32, // 10: mgo.portfolio.v1.PortfolioSnapshot.time:type_name -> google.protobuf.Timestamp + 29, // 11: mgo.portfolio.v1.PortfolioSnapshot.positions:type_name -> mgo.portfolio.v1.PortfolioSnapshot.PositionsEntry + 32, // 12: mgo.portfolio.v1.PortfolioSnapshot.first_transaction_time:type_name -> google.protobuf.Timestamp + 19, // 13: mgo.portfolio.v1.PortfolioPosition.security:type_name -> mgo.portfolio.v1.Security 0, // 14: mgo.portfolio.v1.PortfolioEvent.type:type_name -> mgo.portfolio.v1.PortfolioEventType - 31, // 15: mgo.portfolio.v1.PortfolioEvent.time:type_name -> google.protobuf.Timestamp - 19, // 16: mgo.portfolio.v1.Security.listed_on:type_name -> mgo.portfolio.v1.ListedSecurity - 31, // 17: mgo.portfolio.v1.ListedSecurity.latest_quote_timestamp:type_name -> google.protobuf.Timestamp - 29, // 18: mgo.portfolio.v1.ListSecuritiesRequest.filter:type_name -> mgo.portfolio.v1.ListSecuritiesRequest.Filter - 18, // 19: mgo.portfolio.v1.ListSecuritiesResponse.securities:type_name -> mgo.portfolio.v1.Security - 18, // 20: mgo.portfolio.v1.CreateSecurityRequest.security:type_name -> mgo.portfolio.v1.Security - 18, // 21: mgo.portfolio.v1.UpdateSecurityRequest.security:type_name -> mgo.portfolio.v1.Security - 30, // 22: mgo.portfolio.v1.UpdateSecurityRequest.update_mask:type_name -> google.protobuf.FieldMask - 16, // 23: mgo.portfolio.v1.PortfolioSnapshot.PositionsEntry.value:type_name -> mgo.portfolio.v1.PortfolioPosition + 32, // 15: mgo.portfolio.v1.PortfolioEvent.time:type_name -> google.protobuf.Timestamp + 20, // 16: mgo.portfolio.v1.Security.listed_on:type_name -> mgo.portfolio.v1.ListedSecurity + 32, // 17: mgo.portfolio.v1.ListedSecurity.latest_quote_timestamp:type_name -> google.protobuf.Timestamp + 30, // 18: mgo.portfolio.v1.ListSecuritiesRequest.filter:type_name -> mgo.portfolio.v1.ListSecuritiesRequest.Filter + 19, // 19: mgo.portfolio.v1.ListSecuritiesResponse.securities:type_name -> mgo.portfolio.v1.Security + 19, // 20: mgo.portfolio.v1.CreateSecurityRequest.security:type_name -> mgo.portfolio.v1.Security + 19, // 21: mgo.portfolio.v1.UpdateSecurityRequest.security:type_name -> mgo.portfolio.v1.Security + 31, // 22: mgo.portfolio.v1.UpdateSecurityRequest.update_mask:type_name -> google.protobuf.FieldMask + 17, // 23: mgo.portfolio.v1.PortfolioSnapshot.PositionsEntry.value:type_name -> mgo.portfolio.v1.PortfolioPosition 1, // 24: mgo.portfolio.v1.PortfolioService.CreatePortfolio:input_type -> mgo.portfolio.v1.CreatePortfolioRequest 2, // 25: mgo.portfolio.v1.PortfolioService.ListPortfolios:input_type -> mgo.portfolio.v1.ListPortfoliosRequest 4, // 26: mgo.portfolio.v1.PortfolioService.GetPortfolio:input_type -> mgo.portfolio.v1.GetPortfolioRequest @@ -2159,35 +2217,37 @@ var file_mgo_proto_depIdxs = []int32{ 6, // 28: mgo.portfolio.v1.PortfolioService.DeletePortfolio:input_type -> mgo.portfolio.v1.DeletePortfolioRequest 7, // 29: mgo.portfolio.v1.PortfolioService.GetPortfolioSnapshot:input_type -> mgo.portfolio.v1.GetPortfolioSnapshotRequest 8, // 30: mgo.portfolio.v1.PortfolioService.CreatePortfolioTransaction:input_type -> mgo.portfolio.v1.CreatePortfolioTransactionRequest - 9, // 31: mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions:input_type -> mgo.portfolio.v1.ListPortfolioTransactionsRequest - 11, // 32: mgo.portfolio.v1.PortfolioService.UpdatePortfolioTransaction:input_type -> mgo.portfolio.v1.UpdatePortfolioTransactionRequest - 12, // 33: mgo.portfolio.v1.PortfolioService.DeletePortfolioTransaction:input_type -> mgo.portfolio.v1.DeletePortfolioTransactionRequest - 13, // 34: mgo.portfolio.v1.PortfolioService.ImportTransactions:input_type -> mgo.portfolio.v1.ImportTransactionsRequest - 20, // 35: mgo.portfolio.v1.SecuritiesService.ListSecurities:input_type -> mgo.portfolio.v1.ListSecuritiesRequest - 22, // 36: mgo.portfolio.v1.SecuritiesService.GetSecurity:input_type -> mgo.portfolio.v1.GetSecurityRequest - 23, // 37: mgo.portfolio.v1.SecuritiesService.CreateSecurity:input_type -> mgo.portfolio.v1.CreateSecurityRequest - 24, // 38: mgo.portfolio.v1.SecuritiesService.UpdateSecurity:input_type -> mgo.portfolio.v1.UpdateSecurityRequest - 25, // 39: mgo.portfolio.v1.SecuritiesService.DeleteSecurity:input_type -> mgo.portfolio.v1.DeleteSecurityRequest - 26, // 40: mgo.portfolio.v1.SecuritiesService.TriggerSecurityQuoteUpdate:input_type -> mgo.portfolio.v1.TriggerQuoteUpdateRequest - 14, // 41: mgo.portfolio.v1.PortfolioService.CreatePortfolio:output_type -> mgo.portfolio.v1.Portfolio - 3, // 42: mgo.portfolio.v1.PortfolioService.ListPortfolios:output_type -> mgo.portfolio.v1.ListPortfoliosResponse - 14, // 43: mgo.portfolio.v1.PortfolioService.GetPortfolio:output_type -> mgo.portfolio.v1.Portfolio - 14, // 44: mgo.portfolio.v1.PortfolioService.UpdatePortfolio:output_type -> mgo.portfolio.v1.Portfolio - 32, // 45: mgo.portfolio.v1.PortfolioService.DeletePortfolio:output_type -> google.protobuf.Empty - 15, // 46: mgo.portfolio.v1.PortfolioService.GetPortfolioSnapshot:output_type -> mgo.portfolio.v1.PortfolioSnapshot - 17, // 47: mgo.portfolio.v1.PortfolioService.CreatePortfolioTransaction:output_type -> mgo.portfolio.v1.PortfolioEvent - 10, // 48: mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions:output_type -> mgo.portfolio.v1.ListPortfolioTransactionsResponse - 17, // 49: mgo.portfolio.v1.PortfolioService.UpdatePortfolioTransaction:output_type -> mgo.portfolio.v1.PortfolioEvent - 32, // 50: mgo.portfolio.v1.PortfolioService.DeletePortfolioTransaction:output_type -> google.protobuf.Empty - 32, // 51: mgo.portfolio.v1.PortfolioService.ImportTransactions:output_type -> google.protobuf.Empty - 21, // 52: mgo.portfolio.v1.SecuritiesService.ListSecurities:output_type -> mgo.portfolio.v1.ListSecuritiesResponse - 18, // 53: mgo.portfolio.v1.SecuritiesService.GetSecurity:output_type -> mgo.portfolio.v1.Security - 18, // 54: mgo.portfolio.v1.SecuritiesService.CreateSecurity:output_type -> mgo.portfolio.v1.Security - 18, // 55: mgo.portfolio.v1.SecuritiesService.UpdateSecurity:output_type -> mgo.portfolio.v1.Security - 32, // 56: mgo.portfolio.v1.SecuritiesService.DeleteSecurity:output_type -> google.protobuf.Empty - 27, // 57: mgo.portfolio.v1.SecuritiesService.TriggerSecurityQuoteUpdate:output_type -> mgo.portfolio.v1.TriggerQuoteUpdateResponse - 41, // [41:58] is the sub-list for method output_type - 24, // [24:41] is the sub-list for method input_type + 9, // 31: mgo.portfolio.v1.PortfolioService.GetPortfolioTransaction:input_type -> mgo.portfolio.v1.GetPortfolioTransactionRequest + 10, // 32: mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions:input_type -> mgo.portfolio.v1.ListPortfolioTransactionsRequest + 12, // 33: mgo.portfolio.v1.PortfolioService.UpdatePortfolioTransaction:input_type -> mgo.portfolio.v1.UpdatePortfolioTransactionRequest + 13, // 34: mgo.portfolio.v1.PortfolioService.DeletePortfolioTransaction:input_type -> mgo.portfolio.v1.DeletePortfolioTransactionRequest + 14, // 35: mgo.portfolio.v1.PortfolioService.ImportTransactions:input_type -> mgo.portfolio.v1.ImportTransactionsRequest + 21, // 36: mgo.portfolio.v1.SecuritiesService.ListSecurities:input_type -> mgo.portfolio.v1.ListSecuritiesRequest + 23, // 37: mgo.portfolio.v1.SecuritiesService.GetSecurity:input_type -> mgo.portfolio.v1.GetSecurityRequest + 24, // 38: mgo.portfolio.v1.SecuritiesService.CreateSecurity:input_type -> mgo.portfolio.v1.CreateSecurityRequest + 25, // 39: mgo.portfolio.v1.SecuritiesService.UpdateSecurity:input_type -> mgo.portfolio.v1.UpdateSecurityRequest + 26, // 40: mgo.portfolio.v1.SecuritiesService.DeleteSecurity:input_type -> mgo.portfolio.v1.DeleteSecurityRequest + 27, // 41: mgo.portfolio.v1.SecuritiesService.TriggerSecurityQuoteUpdate:input_type -> mgo.portfolio.v1.TriggerQuoteUpdateRequest + 15, // 42: mgo.portfolio.v1.PortfolioService.CreatePortfolio:output_type -> mgo.portfolio.v1.Portfolio + 3, // 43: mgo.portfolio.v1.PortfolioService.ListPortfolios:output_type -> mgo.portfolio.v1.ListPortfoliosResponse + 15, // 44: mgo.portfolio.v1.PortfolioService.GetPortfolio:output_type -> mgo.portfolio.v1.Portfolio + 15, // 45: mgo.portfolio.v1.PortfolioService.UpdatePortfolio:output_type -> mgo.portfolio.v1.Portfolio + 33, // 46: mgo.portfolio.v1.PortfolioService.DeletePortfolio:output_type -> google.protobuf.Empty + 16, // 47: mgo.portfolio.v1.PortfolioService.GetPortfolioSnapshot:output_type -> mgo.portfolio.v1.PortfolioSnapshot + 18, // 48: mgo.portfolio.v1.PortfolioService.CreatePortfolioTransaction:output_type -> mgo.portfolio.v1.PortfolioEvent + 18, // 49: mgo.portfolio.v1.PortfolioService.GetPortfolioTransaction:output_type -> mgo.portfolio.v1.PortfolioEvent + 11, // 50: mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions:output_type -> mgo.portfolio.v1.ListPortfolioTransactionsResponse + 18, // 51: mgo.portfolio.v1.PortfolioService.UpdatePortfolioTransaction:output_type -> mgo.portfolio.v1.PortfolioEvent + 33, // 52: mgo.portfolio.v1.PortfolioService.DeletePortfolioTransaction:output_type -> google.protobuf.Empty + 33, // 53: mgo.portfolio.v1.PortfolioService.ImportTransactions:output_type -> google.protobuf.Empty + 22, // 54: mgo.portfolio.v1.SecuritiesService.ListSecurities:output_type -> mgo.portfolio.v1.ListSecuritiesResponse + 19, // 55: mgo.portfolio.v1.SecuritiesService.GetSecurity:output_type -> mgo.portfolio.v1.Security + 19, // 56: mgo.portfolio.v1.SecuritiesService.CreateSecurity:output_type -> mgo.portfolio.v1.Security + 19, // 57: mgo.portfolio.v1.SecuritiesService.UpdateSecurity:output_type -> mgo.portfolio.v1.Security + 33, // 58: mgo.portfolio.v1.SecuritiesService.DeleteSecurity:output_type -> google.protobuf.Empty + 28, // 59: mgo.portfolio.v1.SecuritiesService.TriggerSecurityQuoteUpdate:output_type -> mgo.portfolio.v1.TriggerQuoteUpdateResponse + 42, // [42:60] is the sub-list for method output_type + 24, // [24:42] is the sub-list for method input_type 24, // [24:24] is the sub-list for extension type_name 24, // [24:24] is the sub-list for extension extendee 0, // [0:24] is the sub-list for field type_name @@ -2296,7 +2356,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPortfolioTransactionsRequest); i { + switch v := v.(*GetPortfolioTransactionRequest); i { case 0: return &v.state case 1: @@ -2308,7 +2368,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPortfolioTransactionsResponse); i { + switch v := v.(*ListPortfolioTransactionsRequest); i { case 0: return &v.state case 1: @@ -2320,7 +2380,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePortfolioTransactionRequest); i { + switch v := v.(*ListPortfolioTransactionsResponse); i { case 0: return &v.state case 1: @@ -2332,7 +2392,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePortfolioTransactionRequest); i { + switch v := v.(*UpdatePortfolioTransactionRequest); i { case 0: return &v.state case 1: @@ -2344,7 +2404,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImportTransactionsRequest); i { + switch v := v.(*DeletePortfolioTransactionRequest); i { case 0: return &v.state case 1: @@ -2356,7 +2416,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Portfolio); i { + switch v := v.(*ImportTransactionsRequest); i { case 0: return &v.state case 1: @@ -2368,7 +2428,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioSnapshot); i { + switch v := v.(*Portfolio); i { case 0: return &v.state case 1: @@ -2380,7 +2440,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioPosition); i { + switch v := v.(*PortfolioSnapshot); i { case 0: return &v.state case 1: @@ -2392,7 +2452,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioEvent); i { + switch v := v.(*PortfolioPosition); i { case 0: return &v.state case 1: @@ -2404,7 +2464,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Security); i { + switch v := v.(*PortfolioEvent); i { case 0: return &v.state case 1: @@ -2416,7 +2476,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListedSecurity); i { + switch v := v.(*Security); i { case 0: return &v.state case 1: @@ -2428,7 +2488,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSecuritiesRequest); i { + switch v := v.(*ListedSecurity); i { case 0: return &v.state case 1: @@ -2440,7 +2500,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSecuritiesResponse); i { + switch v := v.(*ListSecuritiesRequest); i { case 0: return &v.state case 1: @@ -2452,7 +2512,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSecurityRequest); i { + switch v := v.(*ListSecuritiesResponse); i { case 0: return &v.state case 1: @@ -2464,7 +2524,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSecurityRequest); i { + switch v := v.(*GetSecurityRequest); i { case 0: return &v.state case 1: @@ -2476,7 +2536,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSecurityRequest); i { + switch v := v.(*CreateSecurityRequest); i { case 0: return &v.state case 1: @@ -2488,7 +2548,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSecurityRequest); i { + switch v := v.(*UpdateSecurityRequest); i { case 0: return &v.state case 1: @@ -2500,7 +2560,7 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerQuoteUpdateRequest); i { + switch v := v.(*DeleteSecurityRequest); i { case 0: return &v.state case 1: @@ -2512,6 +2572,18 @@ func file_mgo_proto_init() { } } file_mgo_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TriggerQuoteUpdateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mgo_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerQuoteUpdateResponse); i { case 0: return &v.state @@ -2523,7 +2595,7 @@ func file_mgo_proto_init() { return nil } } - file_mgo_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_mgo_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSecuritiesRequest_Filter); i { case 0: return &v.state @@ -2536,17 +2608,17 @@ func file_mgo_proto_init() { } } } - file_mgo_proto_msgTypes[14].OneofWrappers = []interface{}{} - file_mgo_proto_msgTypes[17].OneofWrappers = []interface{}{} + file_mgo_proto_msgTypes[15].OneofWrappers = []interface{}{} file_mgo_proto_msgTypes[18].OneofWrappers = []interface{}{} file_mgo_proto_msgTypes[19].OneofWrappers = []interface{}{} + file_mgo_proto_msgTypes[20].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_mgo_proto_rawDesc, NumEnums: 1, - NumMessages: 29, + NumMessages: 30, NumExtensions: 0, NumServices: 2, }, diff --git a/gen/portfoliov1connect/mgo.connect.go b/gen/portfoliov1connect/mgo.connect.go index 3156b5b7..96b12a66 100644 --- a/gen/portfoliov1connect/mgo.connect.go +++ b/gen/portfoliov1connect/mgo.connect.go @@ -19,7 +19,7 @@ import ( // generated with a version of connect newer than the one compiled into your binary. You can fix the // problem by either regenerating this code with an older version of connect or updating the connect // version compiled into your binary. -const _ = connect.IsAtLeastVersion1_7_0 +const _ = connect.IsAtLeastVersion1_13_0 const ( // PortfolioServiceName is the fully-qualified name of the PortfolioService service. @@ -57,6 +57,9 @@ const ( // PortfolioServiceCreatePortfolioTransactionProcedure is the fully-qualified name of the // PortfolioService's CreatePortfolioTransaction RPC. PortfolioServiceCreatePortfolioTransactionProcedure = "/mgo.portfolio.v1.PortfolioService/CreatePortfolioTransaction" + // PortfolioServiceGetPortfolioTransactionProcedure is the fully-qualified name of the + // PortfolioService's GetPortfolioTransaction RPC. + PortfolioServiceGetPortfolioTransactionProcedure = "/mgo.portfolio.v1.PortfolioService/GetPortfolioTransaction" // PortfolioServiceListPortfolioTransactionsProcedure is the fully-qualified name of the // PortfolioService's ListPortfolioTransactions RPC. PortfolioServiceListPortfolioTransactionsProcedure = "/mgo.portfolio.v1.PortfolioService/ListPortfolioTransactions" @@ -89,6 +92,30 @@ const ( SecuritiesServiceTriggerSecurityQuoteUpdateProcedure = "/mgo.portfolio.v1.SecuritiesService/TriggerSecurityQuoteUpdate" ) +// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. +var ( + portfolioServiceServiceDescriptor = gen.File_mgo_proto.Services().ByName("PortfolioService") + portfolioServiceCreatePortfolioMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("CreatePortfolio") + portfolioServiceListPortfoliosMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("ListPortfolios") + portfolioServiceGetPortfolioMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("GetPortfolio") + portfolioServiceUpdatePortfolioMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("UpdatePortfolio") + portfolioServiceDeletePortfolioMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("DeletePortfolio") + portfolioServiceGetPortfolioSnapshotMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("GetPortfolioSnapshot") + portfolioServiceCreatePortfolioTransactionMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("CreatePortfolioTransaction") + portfolioServiceGetPortfolioTransactionMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("GetPortfolioTransaction") + portfolioServiceListPortfolioTransactionsMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("ListPortfolioTransactions") + portfolioServiceUpdatePortfolioTransactionMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("UpdatePortfolioTransaction") + portfolioServiceDeletePortfolioTransactionMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("DeletePortfolioTransaction") + portfolioServiceImportTransactionsMethodDescriptor = portfolioServiceServiceDescriptor.Methods().ByName("ImportTransactions") + securitiesServiceServiceDescriptor = gen.File_mgo_proto.Services().ByName("SecuritiesService") + securitiesServiceListSecuritiesMethodDescriptor = securitiesServiceServiceDescriptor.Methods().ByName("ListSecurities") + securitiesServiceGetSecurityMethodDescriptor = securitiesServiceServiceDescriptor.Methods().ByName("GetSecurity") + securitiesServiceCreateSecurityMethodDescriptor = securitiesServiceServiceDescriptor.Methods().ByName("CreateSecurity") + securitiesServiceUpdateSecurityMethodDescriptor = securitiesServiceServiceDescriptor.Methods().ByName("UpdateSecurity") + securitiesServiceDeleteSecurityMethodDescriptor = securitiesServiceServiceDescriptor.Methods().ByName("DeleteSecurity") + securitiesServiceTriggerSecurityQuoteUpdateMethodDescriptor = securitiesServiceServiceDescriptor.Methods().ByName("TriggerSecurityQuoteUpdate") +) + // PortfolioServiceClient is a client for the mgo.portfolio.v1.PortfolioService service. type PortfolioServiceClient interface { CreatePortfolio(context.Context, *connect.Request[gen.CreatePortfolioRequest]) (*connect.Response[gen.Portfolio], error) @@ -98,6 +125,7 @@ type PortfolioServiceClient interface { DeletePortfolio(context.Context, *connect.Request[gen.DeletePortfolioRequest]) (*connect.Response[emptypb.Empty], error) GetPortfolioSnapshot(context.Context, *connect.Request[gen.GetPortfolioSnapshotRequest]) (*connect.Response[gen.PortfolioSnapshot], error) CreatePortfolioTransaction(context.Context, *connect.Request[gen.CreatePortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) + GetPortfolioTransaction(context.Context, *connect.Request[gen.GetPortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) ListPortfolioTransactions(context.Context, *connect.Request[gen.ListPortfolioTransactionsRequest]) (*connect.Response[gen.ListPortfolioTransactionsResponse], error) UpdatePortfolioTransaction(context.Context, *connect.Request[gen.UpdatePortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) DeletePortfolioTransaction(context.Context, *connect.Request[gen.DeletePortfolioTransactionRequest]) (*connect.Response[emptypb.Empty], error) @@ -117,60 +145,79 @@ func NewPortfolioServiceClient(httpClient connect.HTTPClient, baseURL string, op createPortfolio: connect.NewClient[gen.CreatePortfolioRequest, gen.Portfolio]( httpClient, baseURL+PortfolioServiceCreatePortfolioProcedure, - opts..., + connect.WithSchema(portfolioServiceCreatePortfolioMethodDescriptor), + connect.WithClientOptions(opts...), ), listPortfolios: connect.NewClient[gen.ListPortfoliosRequest, gen.ListPortfoliosResponse]( httpClient, baseURL+PortfolioServiceListPortfoliosProcedure, + connect.WithSchema(portfolioServiceListPortfoliosMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getPortfolio: connect.NewClient[gen.GetPortfolioRequest, gen.Portfolio]( httpClient, baseURL+PortfolioServiceGetPortfolioProcedure, + connect.WithSchema(portfolioServiceGetPortfolioMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), updatePortfolio: connect.NewClient[gen.UpdatePortfolioRequest, gen.Portfolio]( httpClient, baseURL+PortfolioServiceUpdatePortfolioProcedure, - opts..., + connect.WithSchema(portfolioServiceUpdatePortfolioMethodDescriptor), + connect.WithClientOptions(opts...), ), deletePortfolio: connect.NewClient[gen.DeletePortfolioRequest, emptypb.Empty]( httpClient, baseURL+PortfolioServiceDeletePortfolioProcedure, - opts..., + connect.WithSchema(portfolioServiceDeletePortfolioMethodDescriptor), + connect.WithClientOptions(opts...), ), getPortfolioSnapshot: connect.NewClient[gen.GetPortfolioSnapshotRequest, gen.PortfolioSnapshot]( httpClient, baseURL+PortfolioServiceGetPortfolioSnapshotProcedure, + connect.WithSchema(portfolioServiceGetPortfolioSnapshotMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), createPortfolioTransaction: connect.NewClient[gen.CreatePortfolioTransactionRequest, gen.PortfolioEvent]( httpClient, baseURL+PortfolioServiceCreatePortfolioTransactionProcedure, - opts..., + connect.WithSchema(portfolioServiceCreatePortfolioTransactionMethodDescriptor), + connect.WithClientOptions(opts...), + ), + getPortfolioTransaction: connect.NewClient[gen.GetPortfolioTransactionRequest, gen.PortfolioEvent]( + httpClient, + baseURL+PortfolioServiceGetPortfolioTransactionProcedure, + connect.WithSchema(portfolioServiceGetPortfolioTransactionMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), ), listPortfolioTransactions: connect.NewClient[gen.ListPortfolioTransactionsRequest, gen.ListPortfolioTransactionsResponse]( httpClient, baseURL+PortfolioServiceListPortfolioTransactionsProcedure, - opts..., + connect.WithSchema(portfolioServiceListPortfolioTransactionsMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), ), updatePortfolioTransaction: connect.NewClient[gen.UpdatePortfolioTransactionRequest, gen.PortfolioEvent]( httpClient, baseURL+PortfolioServiceUpdatePortfolioTransactionProcedure, - opts..., + connect.WithSchema(portfolioServiceUpdatePortfolioTransactionMethodDescriptor), + connect.WithClientOptions(opts...), ), deletePortfolioTransaction: connect.NewClient[gen.DeletePortfolioTransactionRequest, emptypb.Empty]( httpClient, baseURL+PortfolioServiceDeletePortfolioTransactionProcedure, - opts..., + connect.WithSchema(portfolioServiceDeletePortfolioTransactionMethodDescriptor), + connect.WithClientOptions(opts...), ), importTransactions: connect.NewClient[gen.ImportTransactionsRequest, emptypb.Empty]( httpClient, baseURL+PortfolioServiceImportTransactionsProcedure, - opts..., + connect.WithSchema(portfolioServiceImportTransactionsMethodDescriptor), + connect.WithClientOptions(opts...), ), } } @@ -184,6 +231,7 @@ type portfolioServiceClient struct { deletePortfolio *connect.Client[gen.DeletePortfolioRequest, emptypb.Empty] getPortfolioSnapshot *connect.Client[gen.GetPortfolioSnapshotRequest, gen.PortfolioSnapshot] createPortfolioTransaction *connect.Client[gen.CreatePortfolioTransactionRequest, gen.PortfolioEvent] + getPortfolioTransaction *connect.Client[gen.GetPortfolioTransactionRequest, gen.PortfolioEvent] listPortfolioTransactions *connect.Client[gen.ListPortfolioTransactionsRequest, gen.ListPortfolioTransactionsResponse] updatePortfolioTransaction *connect.Client[gen.UpdatePortfolioTransactionRequest, gen.PortfolioEvent] deletePortfolioTransaction *connect.Client[gen.DeletePortfolioTransactionRequest, emptypb.Empty] @@ -225,6 +273,11 @@ func (c *portfolioServiceClient) CreatePortfolioTransaction(ctx context.Context, return c.createPortfolioTransaction.CallUnary(ctx, req) } +// GetPortfolioTransaction calls mgo.portfolio.v1.PortfolioService.GetPortfolioTransaction. +func (c *portfolioServiceClient) GetPortfolioTransaction(ctx context.Context, req *connect.Request[gen.GetPortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) { + return c.getPortfolioTransaction.CallUnary(ctx, req) +} + // ListPortfolioTransactions calls mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions. func (c *portfolioServiceClient) ListPortfolioTransactions(ctx context.Context, req *connect.Request[gen.ListPortfolioTransactionsRequest]) (*connect.Response[gen.ListPortfolioTransactionsResponse], error) { return c.listPortfolioTransactions.CallUnary(ctx, req) @@ -254,6 +307,7 @@ type PortfolioServiceHandler interface { DeletePortfolio(context.Context, *connect.Request[gen.DeletePortfolioRequest]) (*connect.Response[emptypb.Empty], error) GetPortfolioSnapshot(context.Context, *connect.Request[gen.GetPortfolioSnapshotRequest]) (*connect.Response[gen.PortfolioSnapshot], error) CreatePortfolioTransaction(context.Context, *connect.Request[gen.CreatePortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) + GetPortfolioTransaction(context.Context, *connect.Request[gen.GetPortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) ListPortfolioTransactions(context.Context, *connect.Request[gen.ListPortfolioTransactionsRequest]) (*connect.Response[gen.ListPortfolioTransactionsResponse], error) UpdatePortfolioTransaction(context.Context, *connect.Request[gen.UpdatePortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) DeletePortfolioTransaction(context.Context, *connect.Request[gen.DeletePortfolioTransactionRequest]) (*connect.Response[emptypb.Empty], error) @@ -269,60 +323,79 @@ func NewPortfolioServiceHandler(svc PortfolioServiceHandler, opts ...connect.Han portfolioServiceCreatePortfolioHandler := connect.NewUnaryHandler( PortfolioServiceCreatePortfolioProcedure, svc.CreatePortfolio, - opts..., + connect.WithSchema(portfolioServiceCreatePortfolioMethodDescriptor), + connect.WithHandlerOptions(opts...), ) portfolioServiceListPortfoliosHandler := connect.NewUnaryHandler( PortfolioServiceListPortfoliosProcedure, svc.ListPortfolios, + connect.WithSchema(portfolioServiceListPortfoliosMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) portfolioServiceGetPortfolioHandler := connect.NewUnaryHandler( PortfolioServiceGetPortfolioProcedure, svc.GetPortfolio, + connect.WithSchema(portfolioServiceGetPortfolioMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) portfolioServiceUpdatePortfolioHandler := connect.NewUnaryHandler( PortfolioServiceUpdatePortfolioProcedure, svc.UpdatePortfolio, - opts..., + connect.WithSchema(portfolioServiceUpdatePortfolioMethodDescriptor), + connect.WithHandlerOptions(opts...), ) portfolioServiceDeletePortfolioHandler := connect.NewUnaryHandler( PortfolioServiceDeletePortfolioProcedure, svc.DeletePortfolio, - opts..., + connect.WithSchema(portfolioServiceDeletePortfolioMethodDescriptor), + connect.WithHandlerOptions(opts...), ) portfolioServiceGetPortfolioSnapshotHandler := connect.NewUnaryHandler( PortfolioServiceGetPortfolioSnapshotProcedure, svc.GetPortfolioSnapshot, + connect.WithSchema(portfolioServiceGetPortfolioSnapshotMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) portfolioServiceCreatePortfolioTransactionHandler := connect.NewUnaryHandler( PortfolioServiceCreatePortfolioTransactionProcedure, svc.CreatePortfolioTransaction, - opts..., + connect.WithSchema(portfolioServiceCreatePortfolioTransactionMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + portfolioServiceGetPortfolioTransactionHandler := connect.NewUnaryHandler( + PortfolioServiceGetPortfolioTransactionProcedure, + svc.GetPortfolioTransaction, + connect.WithSchema(portfolioServiceGetPortfolioTransactionMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), ) portfolioServiceListPortfolioTransactionsHandler := connect.NewUnaryHandler( PortfolioServiceListPortfolioTransactionsProcedure, svc.ListPortfolioTransactions, - opts..., + connect.WithSchema(portfolioServiceListPortfolioTransactionsMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), ) portfolioServiceUpdatePortfolioTransactionHandler := connect.NewUnaryHandler( PortfolioServiceUpdatePortfolioTransactionProcedure, svc.UpdatePortfolioTransaction, - opts..., + connect.WithSchema(portfolioServiceUpdatePortfolioTransactionMethodDescriptor), + connect.WithHandlerOptions(opts...), ) portfolioServiceDeletePortfolioTransactionHandler := connect.NewUnaryHandler( PortfolioServiceDeletePortfolioTransactionProcedure, svc.DeletePortfolioTransaction, - opts..., + connect.WithSchema(portfolioServiceDeletePortfolioTransactionMethodDescriptor), + connect.WithHandlerOptions(opts...), ) portfolioServiceImportTransactionsHandler := connect.NewUnaryHandler( PortfolioServiceImportTransactionsProcedure, svc.ImportTransactions, - opts..., + connect.WithSchema(portfolioServiceImportTransactionsMethodDescriptor), + connect.WithHandlerOptions(opts...), ) return "/mgo.portfolio.v1.PortfolioService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { @@ -340,6 +413,8 @@ func NewPortfolioServiceHandler(svc PortfolioServiceHandler, opts ...connect.Han portfolioServiceGetPortfolioSnapshotHandler.ServeHTTP(w, r) case PortfolioServiceCreatePortfolioTransactionProcedure: portfolioServiceCreatePortfolioTransactionHandler.ServeHTTP(w, r) + case PortfolioServiceGetPortfolioTransactionProcedure: + portfolioServiceGetPortfolioTransactionHandler.ServeHTTP(w, r) case PortfolioServiceListPortfolioTransactionsProcedure: portfolioServiceListPortfolioTransactionsHandler.ServeHTTP(w, r) case PortfolioServiceUpdatePortfolioTransactionProcedure: @@ -385,6 +460,10 @@ func (UnimplementedPortfolioServiceHandler) CreatePortfolioTransaction(context.C return nil, connect.NewError(connect.CodeUnimplemented, errors.New("mgo.portfolio.v1.PortfolioService.CreatePortfolioTransaction is not implemented")) } +func (UnimplementedPortfolioServiceHandler) GetPortfolioTransaction(context.Context, *connect.Request[gen.GetPortfolioTransactionRequest]) (*connect.Response[gen.PortfolioEvent], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("mgo.portfolio.v1.PortfolioService.GetPortfolioTransaction is not implemented")) +} + func (UnimplementedPortfolioServiceHandler) ListPortfolioTransactions(context.Context, *connect.Request[gen.ListPortfolioTransactionsRequest]) (*connect.Response[gen.ListPortfolioTransactionsResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions is not implemented")) } @@ -424,34 +503,40 @@ func NewSecuritiesServiceClient(httpClient connect.HTTPClient, baseURL string, o listSecurities: connect.NewClient[gen.ListSecuritiesRequest, gen.ListSecuritiesResponse]( httpClient, baseURL+SecuritiesServiceListSecuritiesProcedure, + connect.WithSchema(securitiesServiceListSecuritiesMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), getSecurity: connect.NewClient[gen.GetSecurityRequest, gen.Security]( httpClient, baseURL+SecuritiesServiceGetSecurityProcedure, + connect.WithSchema(securitiesServiceGetSecurityMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), createSecurity: connect.NewClient[gen.CreateSecurityRequest, gen.Security]( httpClient, baseURL+SecuritiesServiceCreateSecurityProcedure, - opts..., + connect.WithSchema(securitiesServiceCreateSecurityMethodDescriptor), + connect.WithClientOptions(opts...), ), updateSecurity: connect.NewClient[gen.UpdateSecurityRequest, gen.Security]( httpClient, baseURL+SecuritiesServiceUpdateSecurityProcedure, - opts..., + connect.WithSchema(securitiesServiceUpdateSecurityMethodDescriptor), + connect.WithClientOptions(opts...), ), deleteSecurity: connect.NewClient[gen.DeleteSecurityRequest, emptypb.Empty]( httpClient, baseURL+SecuritiesServiceDeleteSecurityProcedure, - opts..., + connect.WithSchema(securitiesServiceDeleteSecurityMethodDescriptor), + connect.WithClientOptions(opts...), ), triggerSecurityQuoteUpdate: connect.NewClient[gen.TriggerQuoteUpdateRequest, gen.TriggerQuoteUpdateResponse]( httpClient, baseURL+SecuritiesServiceTriggerSecurityQuoteUpdateProcedure, - opts..., + connect.WithSchema(securitiesServiceTriggerSecurityQuoteUpdateMethodDescriptor), + connect.WithClientOptions(opts...), ), } } @@ -515,34 +600,40 @@ func NewSecuritiesServiceHandler(svc SecuritiesServiceHandler, opts ...connect.H securitiesServiceListSecuritiesHandler := connect.NewUnaryHandler( SecuritiesServiceListSecuritiesProcedure, svc.ListSecurities, + connect.WithSchema(securitiesServiceListSecuritiesMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) securitiesServiceGetSecurityHandler := connect.NewUnaryHandler( SecuritiesServiceGetSecurityProcedure, svc.GetSecurity, + connect.WithSchema(securitiesServiceGetSecurityMethodDescriptor), connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) securitiesServiceCreateSecurityHandler := connect.NewUnaryHandler( SecuritiesServiceCreateSecurityProcedure, svc.CreateSecurity, - opts..., + connect.WithSchema(securitiesServiceCreateSecurityMethodDescriptor), + connect.WithHandlerOptions(opts...), ) securitiesServiceUpdateSecurityHandler := connect.NewUnaryHandler( SecuritiesServiceUpdateSecurityProcedure, svc.UpdateSecurity, - opts..., + connect.WithSchema(securitiesServiceUpdateSecurityMethodDescriptor), + connect.WithHandlerOptions(opts...), ) securitiesServiceDeleteSecurityHandler := connect.NewUnaryHandler( SecuritiesServiceDeleteSecurityProcedure, svc.DeleteSecurity, - opts..., + connect.WithSchema(securitiesServiceDeleteSecurityMethodDescriptor), + connect.WithHandlerOptions(opts...), ) securitiesServiceTriggerSecurityQuoteUpdateHandler := connect.NewUnaryHandler( SecuritiesServiceTriggerSecurityQuoteUpdateProcedure, svc.TriggerSecurityQuoteUpdate, - opts..., + connect.WithSchema(securitiesServiceTriggerSecurityQuoteUpdateMethodDescriptor), + connect.WithHandlerOptions(opts...), ) return "/mgo.portfolio.v1.SecuritiesService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { diff --git a/mgo.proto b/mgo.proto index 305d76c2..2e7e97a8 100644 --- a/mgo.proto +++ b/mgo.proto @@ -31,6 +31,8 @@ message GetPortfolioSnapshotRequest { message CreatePortfolioTransactionRequest { PortfolioEvent transaction = 1; } +message GetPortfolioTransactionRequest { string name = 1; } + message ListPortfolioTransactionsRequest { string portfolio_name = 1; } message ListPortfolioTransactionsResponse { @@ -161,8 +163,14 @@ service PortfolioService { rpc CreatePortfolioTransaction(CreatePortfolioTransactionRequest) returns (PortfolioEvent); + rpc GetPortfolioTransaction(GetPortfolioTransactionRequest) + returns (PortfolioEvent) { + option idempotency_level = NO_SIDE_EFFECTS; + }; rpc ListPortfolioTransactions(ListPortfolioTransactionsRequest) - returns (ListPortfolioTransactionsResponse); + returns (ListPortfolioTransactionsResponse) { + option idempotency_level = NO_SIDE_EFFECTS; + }; rpc UpdatePortfolioTransaction(UpdatePortfolioTransactionRequest) returns (PortfolioEvent); rpc DeletePortfolioTransaction(DeletePortfolioTransactionRequest) diff --git a/service/portfolio/transactions.go b/service/portfolio/transactions.go index 98d56f60..d49c4719 100644 --- a/service/portfolio/transactions.go +++ b/service/portfolio/transactions.go @@ -46,6 +46,16 @@ func (svc *service) CreatePortfolioTransaction(ctx context.Context, req *connect ) } +func (svc *service) GetPortfolioTransaction(ctx context.Context, req *connect.Request[portfoliov1.GetPortfolioTransactionRequest]) (res *connect.Response[portfoliov1.PortfolioEvent], err error) { + return crud.Get( + req.Msg.Name, + svc.events, + func(obj *portfoliov1.PortfolioEvent) *portfoliov1.PortfolioEvent { + return obj + }, + ) +} + func (svc *service) ListPortfolioTransactions(ctx context.Context, req *connect.Request[portfoliov1.ListPortfolioTransactionsRequest]) (res *connect.Response[portfoliov1.ListPortfolioTransactionsResponse], err error) { return crud.List( svc.events, @@ -59,7 +69,7 @@ func (svc *service) ListPortfolioTransactions(ctx context.Context, req *connect. ) } -func (svc *service) UpdatePortfolioTransactions(ctx context.Context, req *connect.Request[portfoliov1.UpdatePortfolioTransactionRequest]) (res *connect.Response[portfoliov1.PortfolioEvent], err error) { +func (svc *service) UpdatePortfolioTransaction(ctx context.Context, req *connect.Request[portfoliov1.UpdatePortfolioTransactionRequest]) (res *connect.Response[portfoliov1.PortfolioEvent], err error) { return crud.Update( req.Msg.Transaction.Name, req.Msg.Transaction, diff --git a/service/portfolio/transactions_test.go b/service/portfolio/transactions_test.go index f0f02115..ac02c594 100644 --- a/service/portfolio/transactions_test.go +++ b/service/portfolio/transactions_test.go @@ -134,7 +134,7 @@ func Test_service_ListPortfolioTransactions(t *testing.T) { } } -func Test_service_UpdatePortfolioTransactions(t *testing.T) { +func Test_service_UpdatePortfolioTransaction(t *testing.T) { type fields struct { portfolios persistence.StorageOperations[*portfoliov1.Portfolio] securities portfoliov1connect.SecuritiesServiceClient @@ -177,7 +177,7 @@ func Test_service_UpdatePortfolioTransactions(t *testing.T) { events: persistence.Relationship[*portfoliov1.PortfolioEvent](tt.fields.portfolios), securities: tt.fields.securities, } - gotRes, err := svc.UpdatePortfolioTransactions(tt.args.ctx, tt.args.req) + gotRes, err := svc.UpdatePortfolioTransaction(tt.args.ctx, tt.args.req) if (err != nil) != tt.wantErr { t.Errorf("service.UpdatePortfolioTransactions() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/ui/src/lib/components/PortfolioPositionsTable.svelte b/ui/src/lib/components/PortfolioPositionsTable.svelte index b9e27c2b..698726e9 100644 --- a/ui/src/lib/components/PortfolioPositionsTable.svelte +++ b/ui/src/lib/components/PortfolioPositionsTable.svelte @@ -64,8 +64,8 @@ changeSortBy('displayName')} + on:changeDirection={toggleSortDirection} + on:changeSortBy={(column) => changeSortBy('displayName')} > Name @@ -77,8 +77,8 @@ changeSortBy('amount')}>Amount changeSortBy('amount')}>Amount changeSortBy('purchaseValue')} + on:changeDirection={toggleSortDirection} + on:changeSortBy={(column) => changeSortBy('purchaseValue')} >Purchase Value @@ -100,16 +100,16 @@ changeSortBy('marketValue')}>Market Value changeSortBy('marketValue')}>Market Value changeSortBy('profit')}>Profit/Loss changeSortBy('profit')}>Profit/Loss @@ -120,47 +120,50 @@ {/each} - Total - - - {currency(snapshot.totalPurchaseValue, 'EUR')} - - - {currency(snapshot.totalMarketValue, 'EUR')} - - -
- {Intl.NumberFormat(navigator.language, { - maximumFractionDigits: 2 - }).format(perf)} % -
-
- {currency(snapshot.totalMarketValue - snapshot.totalPurchaseValue, 'EUR')} -
- + + Total + + + {currency(snapshot.totalPurchaseValue, 'EUR')} + + + {currency(snapshot.totalMarketValue, 'EUR')} + + +
+ {Intl.NumberFormat(navigator.language, { + maximumFractionDigits: 2 + }).format(perf)} % +
+
+ {currency(snapshot.totalMarketValue - snapshot.totalPurchaseValue, 'EUR')} +
+ + diff --git a/ui/src/lib/components/PortfolioTransactionRow.svelte b/ui/src/lib/components/PortfolioTransactionRow.svelte new file mode 100644 index 00000000..be39db86 --- /dev/null +++ b/ui/src/lib/components/PortfolioTransactionRow.svelte @@ -0,0 +1,57 @@ + + + + + + + + {PortfolioEventType[tx.type]} + + +
+ {tx.securityName} +
+
NAME
+ + + {Intl.NumberFormat(navigator.language, { + maximumFractionDigits: 2 + }).format(tx.amount)} + + +
+ {formatCurrency(tx.price, currency)} +
+ + +
+ {formatCurrency(tx.fees, currency)} +
+ + +
+ {formatCurrency(tx.taxes, currency)} +
+ + +
+ {formatCurrency(total, currency)} +
+ + + + + + + diff --git a/ui/src/lib/components/PortfolioTransactionsTable.svelte b/ui/src/lib/components/PortfolioTransactionsTable.svelte new file mode 100644 index 00000000..869ea09d --- /dev/null +++ b/ui/src/lib/components/PortfolioTransactionsTable.svelte @@ -0,0 +1,164 @@ + + +
+ + + + + + + + + + + + + + + {#each sorted as tx (tx.name)} + + {/each} + +
+ changeSortBy('date')} + > + Date + + + changeSortBy('date')} + > + Type + + + changeSortBy('displayName')} + > + Name + +
+
diff --git a/ui/src/lib/components/TableSorter.svelte b/ui/src/lib/components/TableSorter.svelte index 93a8da86..58997323 100644 --- a/ui/src/lib/components/TableSorter.svelte +++ b/ui/src/lib/components/TableSorter.svelte @@ -2,3 +2,5 @@ export let active: boolean; export let column: string; + + diff --git a/ui/src/lib/gen/mgo_connect.ts b/ui/src/lib/gen/mgo_connect.ts index 778250a6..32bf8140 100644 --- a/ui/src/lib/gen/mgo_connect.ts +++ b/ui/src/lib/gen/mgo_connect.ts @@ -1,9 +1,9 @@ -// @generated by protoc-gen-connect-es v1.1.4 with parameter "target=ts" +// @generated by protoc-gen-connect-es v1.2.0 with parameter "target=ts" // @generated from file mgo.proto (package mgo.portfolio.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck -import { CreatePortfolioRequest, CreatePortfolioTransactionRequest, CreateSecurityRequest, DeletePortfolioRequest, DeletePortfolioTransactionRequest, DeleteSecurityRequest, GetPortfolioRequest, GetPortfolioSnapshotRequest, GetSecurityRequest, ImportTransactionsRequest, ListPortfoliosRequest, ListPortfoliosResponse, ListPortfolioTransactionsRequest, ListPortfolioTransactionsResponse, ListSecuritiesRequest, ListSecuritiesResponse, Portfolio, PortfolioEvent, PortfolioSnapshot, Security, TriggerQuoteUpdateRequest, TriggerQuoteUpdateResponse, UpdatePortfolioRequest, UpdatePortfolioTransactionRequest, UpdateSecurityRequest } from "./mgo_pb.js"; +import { CreatePortfolioRequest, CreatePortfolioTransactionRequest, CreateSecurityRequest, DeletePortfolioRequest, DeletePortfolioTransactionRequest, DeleteSecurityRequest, GetPortfolioRequest, GetPortfolioSnapshotRequest, GetPortfolioTransactionRequest, GetSecurityRequest, ImportTransactionsRequest, ListPortfoliosRequest, ListPortfoliosResponse, ListPortfolioTransactionsRequest, ListPortfolioTransactionsResponse, ListSecuritiesRequest, ListSecuritiesResponse, Portfolio, PortfolioEvent, PortfolioSnapshot, Security, TriggerQuoteUpdateRequest, TriggerQuoteUpdateResponse, UpdatePortfolioRequest, UpdatePortfolioTransactionRequest, UpdateSecurityRequest } from "./mgo_pb.js"; import { Empty, MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; /** @@ -78,6 +78,16 @@ export const PortfolioService = { O: PortfolioEvent, kind: MethodKind.Unary, }, + /** + * @generated from rpc mgo.portfolio.v1.PortfolioService.GetPortfolioTransaction + */ + getPortfolioTransaction: { + name: "GetPortfolioTransaction", + I: GetPortfolioTransactionRequest, + O: PortfolioEvent, + kind: MethodKind.Unary, + idempotency: MethodIdempotency.NoSideEffects, + }, /** * @generated from rpc mgo.portfolio.v1.PortfolioService.ListPortfolioTransactions */ @@ -86,6 +96,7 @@ export const PortfolioService = { I: ListPortfolioTransactionsRequest, O: ListPortfolioTransactionsResponse, kind: MethodKind.Unary, + idempotency: MethodIdempotency.NoSideEffects, }, /** * @generated from rpc mgo.portfolio.v1.PortfolioService.UpdatePortfolioTransaction diff --git a/ui/src/lib/gen/mgo_pb.ts b/ui/src/lib/gen/mgo_pb.ts index fad4696c..2cc4f486 100644 --- a/ui/src/lib/gen/mgo_pb.ts +++ b/ui/src/lib/gen/mgo_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v1.5.1 with parameter "target=ts" +// @generated by protoc-gen-es v1.6.0 with parameter "target=ts" // @generated from file mgo.proto (package mgo.portfolio.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck @@ -357,6 +357,43 @@ export class CreatePortfolioTransactionRequest extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "mgo.portfolio.v1.GetPortfolioTransactionRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetPortfolioTransactionRequest { + return new GetPortfolioTransactionRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetPortfolioTransactionRequest { + return new GetPortfolioTransactionRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetPortfolioTransactionRequest { + return new GetPortfolioTransactionRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetPortfolioTransactionRequest | PlainMessage | undefined, b: GetPortfolioTransactionRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetPortfolioTransactionRequest, a, b); + } +} + /** * @generated from message mgo.portfolio.v1.ListPortfolioTransactionsRequest */ diff --git a/ui/src/routes/portfolios/[...portfolioName]/+layout.ts b/ui/src/routes/portfolios/[...portfolioName]/+layout.ts index 66666acb..2cf39431 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/+layout.ts +++ b/ui/src/routes/portfolios/[...portfolioName]/+layout.ts @@ -10,8 +10,8 @@ export const load = (async ({ fetch, params }) => { const client = portfolioClient(fetch); console.log(params.portfolioName); - const portfolio = client.getPortfolio({ name: params.portfolioName }); - const snapshot = client.getPortfolioSnapshot({ portfolioName: params.portfolioName }); + const portfolio = await client.getPortfolio({ name: params.portfolioName }); + const snapshot = await client.getPortfolioSnapshot({ portfolioName: params.portfolioName }); return { portfolio, snapshot }; }) as LayoutData; diff --git a/ui/src/routes/portfolios/[...portfolioName]/+page.svelte b/ui/src/routes/portfolios/[...portfolioName]/+page.svelte index 0345fda2..a8d809cf 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/+page.svelte +++ b/ui/src/routes/portfolios/[...portfolioName]/+page.svelte @@ -9,4 +9,6 @@ +Show transactions list + Add transaction diff --git a/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte new file mode 100644 index 00000000..a790e2ea --- /dev/null +++ b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte @@ -0,0 +1,8 @@ + + + diff --git a/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts new file mode 100644 index 00000000..973d5506 --- /dev/null +++ b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts @@ -0,0 +1,19 @@ +import { error } from '@sveltejs/kit'; +import { portfolioClient } from '$lib/api/client'; +import type { PageData } from '../$types'; + +export const load = (async ({ fetch, params }) => { + if (params.portfolioName == undefined) { + throw error(405, 'Required parameter missing'); + } + + const client = portfolioClient(fetch); + + const transactions = ( + await client.listPortfolioTransactions({ + portfolioName: params.portfolioName + }) + ).transactions; + + return { transactions }; +}) as PageData; diff --git a/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte b/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte index 8d94526f..8fb87ba5 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte +++ b/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte @@ -1,13 +1,13 @@ + + \ No newline at end of file diff --git a/ui/src/lib/components/PortfolioTransactionRow.svelte b/ui/src/lib/components/PortfolioTransactionRow.svelte index be39db86..59923715 100644 --- a/ui/src/lib/components/PortfolioTransactionRow.svelte +++ b/ui/src/lib/components/PortfolioTransactionRow.svelte @@ -1,11 +1,12 @@
@@ -157,7 +165,7 @@ {#each sorted as tx (tx.name)} - + {/each} diff --git a/ui/src/lib/components/SecurityComboBox.svelte b/ui/src/lib/components/SecurityComboBox.svelte index 176b6e97..3dc1f672 100644 --- a/ui/src/lib/components/SecurityComboBox.svelte +++ b/ui/src/lib/components/SecurityComboBox.svelte @@ -4,12 +4,12 @@ import { Icon } from '@steeze-ui/svelte-icon'; import { createListbox } from 'svelte-headlessui'; import { Transition } from 'svelte-transition'; - - const listbox = createListbox({ label: 'Securities', selected: null }); - + export let securities: Security[]; export let securityName: string | undefined; + const listbox = createListbox({ label: 'Securities', selected: securities.find((sec) => sec.name == securityName) }); + $: securityName = $listbox.selected?.name ?? undefined; diff --git a/ui/src/routes/portfolios/[...portfolioName]/+layout.ts b/ui/src/routes/portfolios/[...portfolioName]/+layout.ts index 2cf39431..c1a10dfa 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/+layout.ts +++ b/ui/src/routes/portfolios/[...portfolioName]/+layout.ts @@ -2,7 +2,7 @@ import type { LayoutData } from './$types'; import { error } from '@sveltejs/kit'; import { portfolioClient } from '$lib/api/client'; -export const load = (async ({ fetch, params }) => { +export const load = (async ({ fetch, params, depends }) => { if (params.portfolioName == undefined) { throw error(405, 'Required parameter missing'); } @@ -13,5 +13,7 @@ export const load = (async ({ fetch, params }) => { const portfolio = await client.getPortfolio({ name: params.portfolioName }); const snapshot = await client.getPortfolioSnapshot({ portfolioName: params.portfolioName }); + depends(`data:portfolio-snapshot:${params.portfolioName}`) + return { portfolio, snapshot }; }) as LayoutData; diff --git a/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte index a790e2ea..d410da31 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte +++ b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.svelte @@ -5,4 +5,4 @@ export let data: PageData; - + diff --git a/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts index 973d5506..49da2b28 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts +++ b/ui/src/routes/portfolios/[...portfolioName]/transactions/+page.ts @@ -1,8 +1,8 @@ import { error } from '@sveltejs/kit'; import { portfolioClient } from '$lib/api/client'; -import type { PageData } from '../$types'; +import type { PageData } from './$types'; -export const load = (async ({ fetch, params }) => { +export const load = (async ({ fetch, params, depends }) => { if (params.portfolioName == undefined) { throw error(405, 'Required parameter missing'); } @@ -15,5 +15,7 @@ export const load = (async ({ fetch, params }) => { }) ).transactions; + depends(`data:portfolio-transactions:${params.portfolioName}`) + return { transactions }; }) as PageData; diff --git a/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte b/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte index 8fb87ba5..868b6c33 100644 --- a/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte +++ b/ui/src/routes/portfolios/[...portfolioName]/transactions/[txName]/+page.svelte @@ -8,6 +8,7 @@ import { ConnectError } from '@connectrpc/connect'; import type { PageData } from './$types'; import { FieldMask } from '@bufbuild/protobuf'; + import DateInput from '$lib/components/DateTimeInput.svelte'; export let data: PageData; @@ -22,6 +23,10 @@ if (data.add) { await client.createPortfolioTransaction({ transaction: data.transaction }); + + // Invalidate the portfolio snapshot + await invalidate(`data:portfolio-snapshot:${data.transaction.portfolioName}`); + goto('/portfolios/' + data.transaction.portfolioName); } else { await client.updatePortfolioTransaction({ transaction: data.transaction, @@ -29,13 +34,11 @@ paths: ['amount', 'price', 'fees', 'taxes', 'security_name', 'time'] }) }); - } - // TODO(oxisto): Only invalidate one portfolio - await invalidate( - (url) => url.pathname == '/mgo.portfolio.v1.PortfolioService/GetPortfolioSnapshot' - ); - goto('/portfolios/' + data.transaction.portfolioName); + // Invalidate the portfolio transaction list + await invalidate(`data:portfolio-transactions:${data.transaction.portfolioName}`); + goto('/portfolios/' + data.transaction.portfolioName + '/transactions'); + } } catch (err) { error = ConnectError.from(err); } @@ -55,6 +58,15 @@
+
+ +
+ +
+
+