From 7d128248158c6dd1fc5c39aaa036c51e852c6385 Mon Sep 17 00:00:00 2001 From: "Michael G. Schwern" Date: Wed, 1 Mar 2023 15:09:10 -0800 Subject: [PATCH] feat!: Change SortedSet for the new protocol buffers. (#215) --- examples/sortedset-example/main.go | 2 +- internal/protos/cacheclient.pb.go | 3437 ++++++++++++++-------- internal/protos/cacheclient.proto | 248 +- internal/protos/cacheclient_grpc.pb.go | 72 + internal/protos/controlclient.pb.go | 298 +- internal/protos/controlclient.proto | 19 + internal/protos/controlclient_grpc.pb.go | 38 + momento/requester.go | 6 +- momento/sorted_set_fetch.go | 44 +- momento/sorted_set_get_rank.go | 14 +- momento/sorted_set_get_score.go | 12 +- momento/sorted_set_increment_score.go | 18 +- momento/sorted_set_put.go | 2 +- momento/sorted_set_remove.go | 4 +- momento/sorted_set_test.go | 152 +- 15 files changed, 2847 insertions(+), 1519 deletions(-) diff --git a/examples/sortedset-example/main.go b/examples/sortedset-example/main.go index ec7e1f99..869f002f 100644 --- a/examples/sortedset-example/main.go +++ b/examples/sortedset-example/main.go @@ -98,7 +98,7 @@ func displayElements(setName string, resp momento.SortedSetFetchResponse) { switch r := resp.(type) { case *momento.SortedSetFetchHit: for _, e := range r.Elements { - fmt.Printf("setName: %s, elementName: %s, score: %f\n", setName, e.Value, e.Score) + fmt.Printf("setName: %s, value: %s, score: %f\n", setName, e.Value, e.Score) } fmt.Println("") case *momento.SortedSetFetchMiss: diff --git a/internal/protos/cacheclient.pb.go b/internal/protos/cacheclient.pb.go index 91a4e2da..65a204a9 100644 --- a/internal/protos/cacheclient.pb.go +++ b/internal/protos/cacheclient.pb.go @@ -116,7 +116,53 @@ func (x XSortedSetFetchRequest_Order) Number() protoreflect.EnumNumber { // Deprecated: Use XSortedSetFetchRequest_Order.Descriptor instead. func (XSortedSetFetchRequest_Order) EnumDescriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{56, 0} +} + +type XSortedSetGetRankRequest_Order int32 + +const ( + XSortedSetGetRankRequest_ASCENDING XSortedSetGetRankRequest_Order = 0 + XSortedSetGetRankRequest_DESCENDING XSortedSetGetRankRequest_Order = 1 +) + +// Enum value maps for XSortedSetGetRankRequest_Order. +var ( + XSortedSetGetRankRequest_Order_name = map[int32]string{ + 0: "ASCENDING", + 1: "DESCENDING", + } + XSortedSetGetRankRequest_Order_value = map[string]int32{ + "ASCENDING": 0, + "DESCENDING": 1, + } +) + +func (x XSortedSetGetRankRequest_Order) Enum() *XSortedSetGetRankRequest_Order { + p := new(XSortedSetGetRankRequest_Order) + *p = x + return p +} + +func (x XSortedSetGetRankRequest_Order) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (XSortedSetGetRankRequest_Order) Descriptor() protoreflect.EnumDescriptor { + return file_protos_cacheclient_proto_enumTypes[2].Descriptor() +} + +func (XSortedSetGetRankRequest_Order) Type() protoreflect.EnumType { + return &file_protos_cacheclient_proto_enumTypes[2] +} + +func (x XSortedSetGetRankRequest_Order) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use XSortedSetGetRankRequest_Order.Descriptor instead. +func (XSortedSetGetRankRequest_Order) EnumDescriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{64, 0} } type XGetRequest struct { @@ -1777,6 +1823,142 @@ func (*XSetDifferenceResponse_Found) isXSetDifferenceResponse_Set() {} func (*XSetDifferenceResponse_Missing) isXSetDifferenceResponse_Set() {} +type XSetContainsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` + Elements [][]byte `protobuf:"bytes,2,rep,name=elements,proto3" json:"elements,omitempty"` +} + +func (x *XSetContainsRequest) Reset() { + *x = XSetContainsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XSetContainsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XSetContainsRequest) ProtoMessage() {} + +func (x *XSetContainsRequest) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[27] + 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 XSetContainsRequest.ProtoReflect.Descriptor instead. +func (*XSetContainsRequest) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{27} +} + +func (x *XSetContainsRequest) GetSetName() []byte { + if x != nil { + return x.SetName + } + return nil +} + +func (x *XSetContainsRequest) GetElements() [][]byte { + if x != nil { + return x.Elements + } + return nil +} + +type XSetContainsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Set: + // + // *XSetContainsResponse_Found + // *XSetContainsResponse_Missing + Set isXSetContainsResponse_Set `protobuf_oneof:"set"` +} + +func (x *XSetContainsResponse) Reset() { + *x = XSetContainsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XSetContainsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XSetContainsResponse) ProtoMessage() {} + +func (x *XSetContainsResponse) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[28] + 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 XSetContainsResponse.ProtoReflect.Descriptor instead. +func (*XSetContainsResponse) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{28} +} + +func (m *XSetContainsResponse) GetSet() isXSetContainsResponse_Set { + if m != nil { + return m.Set + } + return nil +} + +func (x *XSetContainsResponse) GetFound() *XSetContainsResponse_XFound { + if x, ok := x.GetSet().(*XSetContainsResponse_Found); ok { + return x.Found + } + return nil +} + +func (x *XSetContainsResponse) GetMissing() *XSetContainsResponse_XMissing { + if x, ok := x.GetSet().(*XSetContainsResponse_Missing); ok { + return x.Missing + } + return nil +} + +type isXSetContainsResponse_Set interface { + isXSetContainsResponse_Set() +} + +type XSetContainsResponse_Found struct { + Found *XSetContainsResponse_XFound `protobuf:"bytes,1,opt,name=found,proto3,oneof"` +} + +type XSetContainsResponse_Missing struct { + Missing *XSetContainsResponse_XMissing `protobuf:"bytes,2,opt,name=missing,proto3,oneof"` +} + +func (*XSetContainsResponse_Found) isXSetContainsResponse_Set() {} + +func (*XSetContainsResponse_Missing) isXSetContainsResponse_Set() {} + type XListConcatenateFrontRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1793,7 +1975,7 @@ type XListConcatenateFrontRequest struct { func (x *XListConcatenateFrontRequest) Reset() { *x = XListConcatenateFrontRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[27] + mi := &file_protos_cacheclient_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1806,7 +1988,7 @@ func (x *XListConcatenateFrontRequest) String() string { func (*XListConcatenateFrontRequest) ProtoMessage() {} func (x *XListConcatenateFrontRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[27] + mi := &file_protos_cacheclient_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1819,7 +2001,7 @@ func (x *XListConcatenateFrontRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListConcatenateFrontRequest.ProtoReflect.Descriptor instead. func (*XListConcatenateFrontRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{27} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{29} } func (x *XListConcatenateFrontRequest) GetListName() []byte { @@ -1869,7 +2051,7 @@ type XListConcatenateFrontResponse struct { func (x *XListConcatenateFrontResponse) Reset() { *x = XListConcatenateFrontResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[28] + mi := &file_protos_cacheclient_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1882,7 +2064,7 @@ func (x *XListConcatenateFrontResponse) String() string { func (*XListConcatenateFrontResponse) ProtoMessage() {} func (x *XListConcatenateFrontResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[28] + mi := &file_protos_cacheclient_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1895,7 +2077,7 @@ func (x *XListConcatenateFrontResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListConcatenateFrontResponse.ProtoReflect.Descriptor instead. func (*XListConcatenateFrontResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{28} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{30} } func (x *XListConcatenateFrontResponse) GetListLength() uint32 { @@ -1921,7 +2103,7 @@ type XListConcatenateBackRequest struct { func (x *XListConcatenateBackRequest) Reset() { *x = XListConcatenateBackRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[29] + mi := &file_protos_cacheclient_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1934,7 +2116,7 @@ func (x *XListConcatenateBackRequest) String() string { func (*XListConcatenateBackRequest) ProtoMessage() {} func (x *XListConcatenateBackRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[29] + mi := &file_protos_cacheclient_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1947,7 +2129,7 @@ func (x *XListConcatenateBackRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListConcatenateBackRequest.ProtoReflect.Descriptor instead. func (*XListConcatenateBackRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{29} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{31} } func (x *XListConcatenateBackRequest) GetListName() []byte { @@ -1997,7 +2179,7 @@ type XListConcatenateBackResponse struct { func (x *XListConcatenateBackResponse) Reset() { *x = XListConcatenateBackResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[30] + mi := &file_protos_cacheclient_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2010,7 +2192,7 @@ func (x *XListConcatenateBackResponse) String() string { func (*XListConcatenateBackResponse) ProtoMessage() {} func (x *XListConcatenateBackResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[30] + mi := &file_protos_cacheclient_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2023,7 +2205,7 @@ func (x *XListConcatenateBackResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListConcatenateBackResponse.ProtoReflect.Descriptor instead. func (*XListConcatenateBackResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{30} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{32} } func (x *XListConcatenateBackResponse) GetListLength() uint32 { @@ -2050,7 +2232,7 @@ type XListPushFrontRequest struct { func (x *XListPushFrontRequest) Reset() { *x = XListPushFrontRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[31] + mi := &file_protos_cacheclient_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2063,7 +2245,7 @@ func (x *XListPushFrontRequest) String() string { func (*XListPushFrontRequest) ProtoMessage() {} func (x *XListPushFrontRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[31] + mi := &file_protos_cacheclient_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2076,7 +2258,7 @@ func (x *XListPushFrontRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPushFrontRequest.ProtoReflect.Descriptor instead. func (*XListPushFrontRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{31} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{33} } func (x *XListPushFrontRequest) GetListName() []byte { @@ -2126,7 +2308,7 @@ type XListPushFrontResponse struct { func (x *XListPushFrontResponse) Reset() { *x = XListPushFrontResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[32] + mi := &file_protos_cacheclient_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2139,7 +2321,7 @@ func (x *XListPushFrontResponse) String() string { func (*XListPushFrontResponse) ProtoMessage() {} func (x *XListPushFrontResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[32] + mi := &file_protos_cacheclient_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2152,7 +2334,7 @@ func (x *XListPushFrontResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPushFrontResponse.ProtoReflect.Descriptor instead. func (*XListPushFrontResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{32} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{34} } func (x *XListPushFrontResponse) GetListLength() uint32 { @@ -2179,7 +2361,7 @@ type XListPushBackRequest struct { func (x *XListPushBackRequest) Reset() { *x = XListPushBackRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[33] + mi := &file_protos_cacheclient_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2192,7 +2374,7 @@ func (x *XListPushBackRequest) String() string { func (*XListPushBackRequest) ProtoMessage() {} func (x *XListPushBackRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[33] + mi := &file_protos_cacheclient_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2205,7 +2387,7 @@ func (x *XListPushBackRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPushBackRequest.ProtoReflect.Descriptor instead. func (*XListPushBackRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{33} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{35} } func (x *XListPushBackRequest) GetListName() []byte { @@ -2255,7 +2437,7 @@ type XListPushBackResponse struct { func (x *XListPushBackResponse) Reset() { *x = XListPushBackResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[34] + mi := &file_protos_cacheclient_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2268,7 +2450,7 @@ func (x *XListPushBackResponse) String() string { func (*XListPushBackResponse) ProtoMessage() {} func (x *XListPushBackResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[34] + mi := &file_protos_cacheclient_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2281,7 +2463,7 @@ func (x *XListPushBackResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPushBackResponse.ProtoReflect.Descriptor instead. func (*XListPushBackResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{34} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{36} } func (x *XListPushBackResponse) GetListLength() uint32 { @@ -2302,7 +2484,7 @@ type XListPopFrontRequest struct { func (x *XListPopFrontRequest) Reset() { *x = XListPopFrontRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[35] + mi := &file_protos_cacheclient_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2315,7 +2497,7 @@ func (x *XListPopFrontRequest) String() string { func (*XListPopFrontRequest) ProtoMessage() {} func (x *XListPopFrontRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[35] + mi := &file_protos_cacheclient_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2328,7 +2510,7 @@ func (x *XListPopFrontRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopFrontRequest.ProtoReflect.Descriptor instead. func (*XListPopFrontRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{35} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{37} } func (x *XListPopFrontRequest) GetListName() []byte { @@ -2353,7 +2535,7 @@ type XListPopFrontResponse struct { func (x *XListPopFrontResponse) Reset() { *x = XListPopFrontResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[36] + mi := &file_protos_cacheclient_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2366,7 +2548,7 @@ func (x *XListPopFrontResponse) String() string { func (*XListPopFrontResponse) ProtoMessage() {} func (x *XListPopFrontResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[36] + mi := &file_protos_cacheclient_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2379,7 +2561,7 @@ func (x *XListPopFrontResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopFrontResponse.ProtoReflect.Descriptor instead. func (*XListPopFrontResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{36} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{38} } func (m *XListPopFrontResponse) GetList() isXListPopFrontResponse_List { @@ -2430,7 +2612,7 @@ type XListPopBackRequest struct { func (x *XListPopBackRequest) Reset() { *x = XListPopBackRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[37] + mi := &file_protos_cacheclient_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2443,7 +2625,7 @@ func (x *XListPopBackRequest) String() string { func (*XListPopBackRequest) ProtoMessage() {} func (x *XListPopBackRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[37] + mi := &file_protos_cacheclient_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2456,7 +2638,7 @@ func (x *XListPopBackRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopBackRequest.ProtoReflect.Descriptor instead. func (*XListPopBackRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{37} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{39} } func (x *XListPopBackRequest) GetListName() []byte { @@ -2481,7 +2663,7 @@ type XListPopBackResponse struct { func (x *XListPopBackResponse) Reset() { *x = XListPopBackResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[38] + mi := &file_protos_cacheclient_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2494,7 +2676,7 @@ func (x *XListPopBackResponse) String() string { func (*XListPopBackResponse) ProtoMessage() {} func (x *XListPopBackResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[38] + mi := &file_protos_cacheclient_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2507,7 +2689,7 @@ func (x *XListPopBackResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopBackResponse.ProtoReflect.Descriptor instead. func (*XListPopBackResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{38} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{40} } func (m *XListPopBackResponse) GetList() isXListPopBackResponse_List { @@ -2559,7 +2741,7 @@ type XListRange struct { func (x *XListRange) Reset() { *x = XListRange{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[39] + mi := &file_protos_cacheclient_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2572,7 +2754,7 @@ func (x *XListRange) String() string { func (*XListRange) ProtoMessage() {} func (x *XListRange) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[39] + mi := &file_protos_cacheclient_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2585,7 +2767,7 @@ func (x *XListRange) ProtoReflect() protoreflect.Message { // Deprecated: Use XListRange.ProtoReflect.Descriptor instead. func (*XListRange) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{39} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{41} } func (x *XListRange) GetBeginIndex() uint32 { @@ -2618,7 +2800,7 @@ type XListEraseRequest struct { func (x *XListEraseRequest) Reset() { *x = XListEraseRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[40] + mi := &file_protos_cacheclient_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2631,7 +2813,7 @@ func (x *XListEraseRequest) String() string { func (*XListEraseRequest) ProtoMessage() {} func (x *XListEraseRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[40] + mi := &file_protos_cacheclient_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2644,7 +2826,7 @@ func (x *XListEraseRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListEraseRequest.ProtoReflect.Descriptor instead. func (*XListEraseRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{40} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{42} } func (x *XListEraseRequest) GetListName() []byte { @@ -2700,7 +2882,7 @@ type XListEraseResponse struct { func (x *XListEraseResponse) Reset() { *x = XListEraseResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[41] + mi := &file_protos_cacheclient_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2713,7 +2895,7 @@ func (x *XListEraseResponse) String() string { func (*XListEraseResponse) ProtoMessage() {} func (x *XListEraseResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[41] + mi := &file_protos_cacheclient_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2726,7 +2908,7 @@ func (x *XListEraseResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListEraseResponse.ProtoReflect.Descriptor instead. func (*XListEraseResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{41} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{43} } type XListRemoveRequest struct { @@ -2744,7 +2926,7 @@ type XListRemoveRequest struct { func (x *XListRemoveRequest) Reset() { *x = XListRemoveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[42] + mi := &file_protos_cacheclient_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2757,7 +2939,7 @@ func (x *XListRemoveRequest) String() string { func (*XListRemoveRequest) ProtoMessage() {} func (x *XListRemoveRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[42] + mi := &file_protos_cacheclient_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2770,7 +2952,7 @@ func (x *XListRemoveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListRemoveRequest.ProtoReflect.Descriptor instead. func (*XListRemoveRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{42} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{44} } func (x *XListRemoveRequest) GetListName() []byte { @@ -2814,7 +2996,7 @@ type XListRemoveResponse struct { func (x *XListRemoveResponse) Reset() { *x = XListRemoveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[43] + mi := &file_protos_cacheclient_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2827,7 +3009,7 @@ func (x *XListRemoveResponse) String() string { func (*XListRemoveResponse) ProtoMessage() {} func (x *XListRemoveResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[43] + mi := &file_protos_cacheclient_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2840,34 +3022,32 @@ func (x *XListRemoveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListRemoveResponse.ProtoReflect.Descriptor instead. func (*XListRemoveResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{43} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{45} } -type XListFetchRequest struct { +type XUnbounded struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - ListName []byte `protobuf:"bytes,1,opt,name=list_name,json=listName,proto3" json:"list_name,omitempty"` } -func (x *XListFetchRequest) Reset() { - *x = XListFetchRequest{} +func (x *XUnbounded) Reset() { + *x = XUnbounded{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[44] + mi := &file_protos_cacheclient_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XListFetchRequest) String() string { +func (x *XUnbounded) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XListFetchRequest) ProtoMessage() {} +func (*XUnbounded) ProtoMessage() {} -func (x *XListFetchRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[44] +func (x *XUnbounded) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2878,19 +3058,337 @@ func (x *XListFetchRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use XListFetchRequest.ProtoReflect.Descriptor instead. -func (*XListFetchRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{44} -} - -func (x *XListFetchRequest) GetListName() []byte { - if x != nil { - return x.ListName - } - return nil +// Deprecated: Use XUnbounded.ProtoReflect.Descriptor instead. +func (*XUnbounded) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{46} } -type XListFetchResponse struct { +type XListFetchRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ListName []byte `protobuf:"bytes,1,opt,name=list_name,json=listName,proto3" json:"list_name,omitempty"` + // Inclusive. + // If unbounded, 0 (start of list) by default + // A negative index counts from the end of the list + // + // Types that are assignable to StartIndex: + // + // *XListFetchRequest_UnboundedStart + // *XListFetchRequest_InclusiveStart + StartIndex isXListFetchRequest_StartIndex `protobuf_oneof:"start_index"` + // Exclusive. + // If unbounded, this effectively means list.length() + // If end_index is > the number of elements to return, return as much as you can + // A negative index counts from the end of the list + // + // Types that are assignable to EndIndex: + // + // *XListFetchRequest_UnboundedEnd + // *XListFetchRequest_ExclusiveEnd + EndIndex isXListFetchRequest_EndIndex `protobuf_oneof:"end_index"` +} + +func (x *XListFetchRequest) Reset() { + *x = XListFetchRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XListFetchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XListFetchRequest) ProtoMessage() {} + +func (x *XListFetchRequest) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[47] + 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 XListFetchRequest.ProtoReflect.Descriptor instead. +func (*XListFetchRequest) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{47} +} + +func (x *XListFetchRequest) GetListName() []byte { + if x != nil { + return x.ListName + } + return nil +} + +func (m *XListFetchRequest) GetStartIndex() isXListFetchRequest_StartIndex { + if m != nil { + return m.StartIndex + } + return nil +} + +func (x *XListFetchRequest) GetUnboundedStart() *XUnbounded { + if x, ok := x.GetStartIndex().(*XListFetchRequest_UnboundedStart); ok { + return x.UnboundedStart + } + return nil +} + +func (x *XListFetchRequest) GetInclusiveStart() int32 { + if x, ok := x.GetStartIndex().(*XListFetchRequest_InclusiveStart); ok { + return x.InclusiveStart + } + return 0 +} + +func (m *XListFetchRequest) GetEndIndex() isXListFetchRequest_EndIndex { + if m != nil { + return m.EndIndex + } + return nil +} + +func (x *XListFetchRequest) GetUnboundedEnd() *XUnbounded { + if x, ok := x.GetEndIndex().(*XListFetchRequest_UnboundedEnd); ok { + return x.UnboundedEnd + } + return nil +} + +func (x *XListFetchRequest) GetExclusiveEnd() int32 { + if x, ok := x.GetEndIndex().(*XListFetchRequest_ExclusiveEnd); ok { + return x.ExclusiveEnd + } + return 0 +} + +type isXListFetchRequest_StartIndex interface { + isXListFetchRequest_StartIndex() +} + +type XListFetchRequest_UnboundedStart struct { + UnboundedStart *XUnbounded `protobuf:"bytes,2,opt,name=unbounded_start,json=unboundedStart,proto3,oneof"` +} + +type XListFetchRequest_InclusiveStart struct { + InclusiveStart int32 `protobuf:"zigzag32,3,opt,name=inclusive_start,json=inclusiveStart,proto3,oneof"` +} + +func (*XListFetchRequest_UnboundedStart) isXListFetchRequest_StartIndex() {} + +func (*XListFetchRequest_InclusiveStart) isXListFetchRequest_StartIndex() {} + +type isXListFetchRequest_EndIndex interface { + isXListFetchRequest_EndIndex() +} + +type XListFetchRequest_UnboundedEnd struct { + UnboundedEnd *XUnbounded `protobuf:"bytes,4,opt,name=unbounded_end,json=unboundedEnd,proto3,oneof"` +} + +type XListFetchRequest_ExclusiveEnd struct { + ExclusiveEnd int32 `protobuf:"zigzag32,5,opt,name=exclusive_end,json=exclusiveEnd,proto3,oneof"` +} + +func (*XListFetchRequest_UnboundedEnd) isXListFetchRequest_EndIndex() {} + +func (*XListFetchRequest_ExclusiveEnd) isXListFetchRequest_EndIndex() {} + +type XListRetainRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ListName []byte `protobuf:"bytes,1,opt,name=list_name,json=listName,proto3" json:"list_name,omitempty"` + // Types that are assignable to StartIndex: + // + // *XListRetainRequest_UnboundedStart + // *XListRetainRequest_InclusiveStart + StartIndex isXListRetainRequest_StartIndex `protobuf_oneof:"start_index"` + // Types that are assignable to EndIndex: + // + // *XListRetainRequest_UnboundedEnd + // *XListRetainRequest_ExclusiveEnd + EndIndex isXListRetainRequest_EndIndex `protobuf_oneof:"end_index"` + TtlMilliseconds uint64 `protobuf:"varint,6,opt,name=ttl_milliseconds,json=ttlMilliseconds,proto3" json:"ttl_milliseconds,omitempty"` + RefreshTtl bool `protobuf:"varint,7,opt,name=refresh_ttl,json=refreshTtl,proto3" json:"refresh_ttl,omitempty"` +} + +func (x *XListRetainRequest) Reset() { + *x = XListRetainRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XListRetainRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XListRetainRequest) ProtoMessage() {} + +func (x *XListRetainRequest) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XListRetainRequest.ProtoReflect.Descriptor instead. +func (*XListRetainRequest) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{48} +} + +func (x *XListRetainRequest) GetListName() []byte { + if x != nil { + return x.ListName + } + return nil +} + +func (m *XListRetainRequest) GetStartIndex() isXListRetainRequest_StartIndex { + if m != nil { + return m.StartIndex + } + return nil +} + +func (x *XListRetainRequest) GetUnboundedStart() *XUnbounded { + if x, ok := x.GetStartIndex().(*XListRetainRequest_UnboundedStart); ok { + return x.UnboundedStart + } + return nil +} + +func (x *XListRetainRequest) GetInclusiveStart() int32 { + if x, ok := x.GetStartIndex().(*XListRetainRequest_InclusiveStart); ok { + return x.InclusiveStart + } + return 0 +} + +func (m *XListRetainRequest) GetEndIndex() isXListRetainRequest_EndIndex { + if m != nil { + return m.EndIndex + } + return nil +} + +func (x *XListRetainRequest) GetUnboundedEnd() *XUnbounded { + if x, ok := x.GetEndIndex().(*XListRetainRequest_UnboundedEnd); ok { + return x.UnboundedEnd + } + return nil +} + +func (x *XListRetainRequest) GetExclusiveEnd() int32 { + if x, ok := x.GetEndIndex().(*XListRetainRequest_ExclusiveEnd); ok { + return x.ExclusiveEnd + } + return 0 +} + +func (x *XListRetainRequest) GetTtlMilliseconds() uint64 { + if x != nil { + return x.TtlMilliseconds + } + return 0 +} + +func (x *XListRetainRequest) GetRefreshTtl() bool { + if x != nil { + return x.RefreshTtl + } + return false +} + +type isXListRetainRequest_StartIndex interface { + isXListRetainRequest_StartIndex() +} + +type XListRetainRequest_UnboundedStart struct { + UnboundedStart *XUnbounded `protobuf:"bytes,2,opt,name=unbounded_start,json=unboundedStart,proto3,oneof"` +} + +type XListRetainRequest_InclusiveStart struct { + InclusiveStart int32 `protobuf:"zigzag32,3,opt,name=inclusive_start,json=inclusiveStart,proto3,oneof"` +} + +func (*XListRetainRequest_UnboundedStart) isXListRetainRequest_StartIndex() {} + +func (*XListRetainRequest_InclusiveStart) isXListRetainRequest_StartIndex() {} + +type isXListRetainRequest_EndIndex interface { + isXListRetainRequest_EndIndex() +} + +type XListRetainRequest_UnboundedEnd struct { + UnboundedEnd *XUnbounded `protobuf:"bytes,4,opt,name=unbounded_end,json=unboundedEnd,proto3,oneof"` +} + +type XListRetainRequest_ExclusiveEnd struct { + ExclusiveEnd int32 `protobuf:"zigzag32,5,opt,name=exclusive_end,json=exclusiveEnd,proto3,oneof"` +} + +func (*XListRetainRequest_UnboundedEnd) isXListRetainRequest_EndIndex() {} + +func (*XListRetainRequest_ExclusiveEnd) isXListRetainRequest_EndIndex() {} + +type XListRetainResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *XListRetainResponse) Reset() { + *x = XListRetainResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XListRetainResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XListRetainResponse) ProtoMessage() {} + +func (x *XListRetainResponse) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[49] + 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 XListRetainResponse.ProtoReflect.Descriptor instead. +func (*XListRetainResponse) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{49} +} + +type XListFetchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2905,7 +3403,7 @@ type XListFetchResponse struct { func (x *XListFetchResponse) Reset() { *x = XListFetchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[45] + mi := &file_protos_cacheclient_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2918,7 +3416,7 @@ func (x *XListFetchResponse) String() string { func (*XListFetchResponse) ProtoMessage() {} func (x *XListFetchResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[45] + mi := &file_protos_cacheclient_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2931,7 +3429,7 @@ func (x *XListFetchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListFetchResponse.ProtoReflect.Descriptor instead. func (*XListFetchResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{45} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{50} } func (m *XListFetchResponse) GetList() isXListFetchResponse_List { @@ -2982,7 +3480,7 @@ type XListLengthRequest struct { func (x *XListLengthRequest) Reset() { *x = XListLengthRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[46] + mi := &file_protos_cacheclient_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2995,7 +3493,7 @@ func (x *XListLengthRequest) String() string { func (*XListLengthRequest) ProtoMessage() {} func (x *XListLengthRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[46] + mi := &file_protos_cacheclient_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3008,7 +3506,7 @@ func (x *XListLengthRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XListLengthRequest.ProtoReflect.Descriptor instead. func (*XListLengthRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{46} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{51} } func (x *XListLengthRequest) GetListName() []byte { @@ -3033,7 +3531,7 @@ type XListLengthResponse struct { func (x *XListLengthResponse) Reset() { *x = XListLengthResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[47] + mi := &file_protos_cacheclient_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3046,7 +3544,7 @@ func (x *XListLengthResponse) String() string { func (*XListLengthResponse) ProtoMessage() {} func (x *XListLengthResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[47] + mi := &file_protos_cacheclient_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3059,7 +3557,7 @@ func (x *XListLengthResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XListLengthResponse.ProtoReflect.Descriptor instead. func (*XListLengthResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{47} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{52} } func (m *XListLengthResponse) GetList() isXListLengthResponse_List { @@ -3104,14 +3602,14 @@ type XSortedSetElement struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` Score float64 `protobuf:"fixed64,2,opt,name=score,proto3" json:"score,omitempty"` } func (x *XSortedSetElement) Reset() { *x = XSortedSetElement{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[48] + mi := &file_protos_cacheclient_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3124,7 +3622,7 @@ func (x *XSortedSetElement) String() string { func (*XSortedSetElement) ProtoMessage() {} func (x *XSortedSetElement) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[48] + mi := &file_protos_cacheclient_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3137,12 +3635,12 @@ func (x *XSortedSetElement) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetElement.ProtoReflect.Descriptor instead. func (*XSortedSetElement) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{48} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{53} } -func (x *XSortedSetElement) GetName() []byte { +func (x *XSortedSetElement) GetValue() []byte { if x != nil { - return x.Name + return x.Value } return nil } @@ -3168,7 +3666,7 @@ type XSortedSetPutRequest struct { func (x *XSortedSetPutRequest) Reset() { *x = XSortedSetPutRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[49] + mi := &file_protos_cacheclient_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3181,7 +3679,7 @@ func (x *XSortedSetPutRequest) String() string { func (*XSortedSetPutRequest) ProtoMessage() {} func (x *XSortedSetPutRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[49] + mi := &file_protos_cacheclient_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3194,7 +3692,7 @@ func (x *XSortedSetPutRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetPutRequest.ProtoReflect.Descriptor instead. func (*XSortedSetPutRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{49} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{54} } func (x *XSortedSetPutRequest) GetSetName() []byte { @@ -3234,7 +3732,7 @@ type XSortedSetPutResponse struct { func (x *XSortedSetPutResponse) Reset() { *x = XSortedSetPutResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[50] + mi := &file_protos_cacheclient_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3247,7 +3745,7 @@ func (x *XSortedSetPutResponse) String() string { func (*XSortedSetPutResponse) ProtoMessage() {} func (x *XSortedSetPutResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[50] + mi := &file_protos_cacheclient_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3260,7 +3758,7 @@ func (x *XSortedSetPutResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetPutResponse.ProtoReflect.Descriptor instead. func (*XSortedSetPutResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{50} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{55} } type XSortedSetFetchRequest struct { @@ -3268,13 +3766,9 @@ type XSortedSetFetchRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` - Order XSortedSetFetchRequest_Order `protobuf:"varint,2,opt,name=order,proto3,enum=cache_client.XSortedSetFetchRequest_Order" json:"order,omitempty"` - // Types that are assignable to NumResults: - // - // *XSortedSetFetchRequest_All - // *XSortedSetFetchRequest_Limit - NumResults isXSortedSetFetchRequest_NumResults `protobuf_oneof:"num_results"` + SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` + Order XSortedSetFetchRequest_Order `protobuf:"varint,2,opt,name=order,proto3,enum=cache_client.XSortedSetFetchRequest_Order" json:"order,omitempty"` + WithScores bool `protobuf:"varint,3,opt,name=with_scores,json=withScores,proto3" json:"with_scores,omitempty"` // Types that are assignable to Range: // // *XSortedSetFetchRequest_ByIndex @@ -3285,7 +3779,7 @@ type XSortedSetFetchRequest struct { func (x *XSortedSetFetchRequest) Reset() { *x = XSortedSetFetchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[51] + mi := &file_protos_cacheclient_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3298,7 +3792,7 @@ func (x *XSortedSetFetchRequest) String() string { func (*XSortedSetFetchRequest) ProtoMessage() {} func (x *XSortedSetFetchRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[51] + mi := &file_protos_cacheclient_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3311,7 +3805,7 @@ func (x *XSortedSetFetchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetFetchRequest.ProtoReflect.Descriptor instead. func (*XSortedSetFetchRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{56} } func (x *XSortedSetFetchRequest) GetSetName() []byte { @@ -3328,25 +3822,11 @@ func (x *XSortedSetFetchRequest) GetOrder() XSortedSetFetchRequest_Order { return XSortedSetFetchRequest_ASCENDING } -func (m *XSortedSetFetchRequest) GetNumResults() isXSortedSetFetchRequest_NumResults { - if m != nil { - return m.NumResults - } - return nil -} - -func (x *XSortedSetFetchRequest) GetAll() *XSortedSetFetchRequest_XAll { - if x, ok := x.GetNumResults().(*XSortedSetFetchRequest_All); ok { - return x.All - } - return nil -} - -func (x *XSortedSetFetchRequest) GetLimit() *XSortedSetFetchRequest_XLimit { - if x, ok := x.GetNumResults().(*XSortedSetFetchRequest_Limit); ok { - return x.Limit +func (x *XSortedSetFetchRequest) GetWithScores() bool { + if x != nil { + return x.WithScores } - return nil + return false } func (m *XSortedSetFetchRequest) GetRange() isXSortedSetFetchRequest_Range { @@ -3370,32 +3850,16 @@ func (x *XSortedSetFetchRequest) GetByScore() *XSortedSetFetchRequest_XByScore { return nil } -type isXSortedSetFetchRequest_NumResults interface { - isXSortedSetFetchRequest_NumResults() -} - -type XSortedSetFetchRequest_All struct { - All *XSortedSetFetchRequest_XAll `protobuf:"bytes,3,opt,name=all,proto3,oneof"` -} - -type XSortedSetFetchRequest_Limit struct { - Limit *XSortedSetFetchRequest_XLimit `protobuf:"bytes,4,opt,name=limit,proto3,oneof"` -} - -func (*XSortedSetFetchRequest_All) isXSortedSetFetchRequest_NumResults() {} - -func (*XSortedSetFetchRequest_Limit) isXSortedSetFetchRequest_NumResults() {} - type isXSortedSetFetchRequest_Range interface { isXSortedSetFetchRequest_Range() } type XSortedSetFetchRequest_ByIndex struct { - ByIndex *XSortedSetFetchRequest_XByIndex `protobuf:"bytes,5,opt,name=by_index,json=byIndex,proto3,oneof"` + ByIndex *XSortedSetFetchRequest_XByIndex `protobuf:"bytes,4,opt,name=by_index,json=byIndex,proto3,oneof"` } type XSortedSetFetchRequest_ByScore struct { - ByScore *XSortedSetFetchRequest_XByScore `protobuf:"bytes,6,opt,name=by_score,json=byScore,proto3,oneof"` + ByScore *XSortedSetFetchRequest_XByScore `protobuf:"bytes,5,opt,name=by_score,json=byScore,proto3,oneof"` } func (*XSortedSetFetchRequest_ByIndex) isXSortedSetFetchRequest_Range() {} @@ -3417,7 +3881,7 @@ type XSortedSetFetchResponse struct { func (x *XSortedSetFetchResponse) Reset() { *x = XSortedSetFetchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[52] + mi := &file_protos_cacheclient_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3430,7 +3894,7 @@ func (x *XSortedSetFetchResponse) String() string { func (*XSortedSetFetchResponse) ProtoMessage() {} func (x *XSortedSetFetchResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[52] + mi := &file_protos_cacheclient_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3443,7 +3907,7 @@ func (x *XSortedSetFetchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetFetchResponse.ProtoReflect.Descriptor instead. func (*XSortedSetFetchResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{52} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{57} } func (m *XSortedSetFetchResponse) GetSortedSet() isXSortedSetFetchResponse_SortedSet { @@ -3488,14 +3952,14 @@ type XSortedSetGetScoreRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` - ElementName [][]byte `protobuf:"bytes,2,rep,name=element_name,json=elementName,proto3" json:"element_name,omitempty"` + SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` + Values [][]byte `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` } func (x *XSortedSetGetScoreRequest) Reset() { *x = XSortedSetGetScoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[53] + mi := &file_protos_cacheclient_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3508,7 +3972,7 @@ func (x *XSortedSetGetScoreRequest) String() string { func (*XSortedSetGetScoreRequest) ProtoMessage() {} func (x *XSortedSetGetScoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[53] + mi := &file_protos_cacheclient_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3521,7 +3985,7 @@ func (x *XSortedSetGetScoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetGetScoreRequest.ProtoReflect.Descriptor instead. func (*XSortedSetGetScoreRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{53} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{58} } func (x *XSortedSetGetScoreRequest) GetSetName() []byte { @@ -3531,9 +3995,9 @@ func (x *XSortedSetGetScoreRequest) GetSetName() []byte { return nil } -func (x *XSortedSetGetScoreRequest) GetElementName() [][]byte { +func (x *XSortedSetGetScoreRequest) GetValues() [][]byte { if x != nil { - return x.ElementName + return x.Values } return nil } @@ -3553,7 +4017,7 @@ type XSortedSetGetScoreResponse struct { func (x *XSortedSetGetScoreResponse) Reset() { *x = XSortedSetGetScoreResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[54] + mi := &file_protos_cacheclient_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3566,7 +4030,7 @@ func (x *XSortedSetGetScoreResponse) String() string { func (*XSortedSetGetScoreResponse) ProtoMessage() {} func (x *XSortedSetGetScoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[54] + mi := &file_protos_cacheclient_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3579,7 +4043,7 @@ func (x *XSortedSetGetScoreResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetGetScoreResponse.ProtoReflect.Descriptor instead. func (*XSortedSetGetScoreResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{54} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{59} } func (m *XSortedSetGetScoreResponse) GetSortedSet() isXSortedSetGetScoreResponse_SortedSet { @@ -3635,7 +4099,7 @@ type XSortedSetRemoveRequest struct { func (x *XSortedSetRemoveRequest) Reset() { *x = XSortedSetRemoveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[55] + mi := &file_protos_cacheclient_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3648,7 +4112,7 @@ func (x *XSortedSetRemoveRequest) String() string { func (*XSortedSetRemoveRequest) ProtoMessage() {} func (x *XSortedSetRemoveRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[55] + mi := &file_protos_cacheclient_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3661,7 +4125,7 @@ func (x *XSortedSetRemoveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetRemoveRequest.ProtoReflect.Descriptor instead. func (*XSortedSetRemoveRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{55} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{60} } func (x *XSortedSetRemoveRequest) GetSetName() []byte { @@ -3717,7 +4181,7 @@ type XSortedSetRemoveResponse struct { func (x *XSortedSetRemoveResponse) Reset() { *x = XSortedSetRemoveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[56] + mi := &file_protos_cacheclient_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3730,7 +4194,7 @@ func (x *XSortedSetRemoveResponse) String() string { func (*XSortedSetRemoveResponse) ProtoMessage() {} func (x *XSortedSetRemoveResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[56] + mi := &file_protos_cacheclient_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3743,7 +4207,7 @@ func (x *XSortedSetRemoveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetRemoveResponse.ProtoReflect.Descriptor instead. func (*XSortedSetRemoveResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{56} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{61} } type XSortedSetIncrementRequest struct { @@ -3752,7 +4216,7 @@ type XSortedSetIncrementRequest struct { unknownFields protoimpl.UnknownFields SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` - ElementName []byte `protobuf:"bytes,2,opt,name=element_name,json=elementName,proto3" json:"element_name,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` Amount float64 `protobuf:"fixed64,3,opt,name=amount,proto3" json:"amount,omitempty"` TtlMilliseconds uint64 `protobuf:"varint,4,opt,name=ttl_milliseconds,json=ttlMilliseconds,proto3" json:"ttl_milliseconds,omitempty"` RefreshTtl bool `protobuf:"varint,5,opt,name=refresh_ttl,json=refreshTtl,proto3" json:"refresh_ttl,omitempty"` @@ -3761,7 +4225,7 @@ type XSortedSetIncrementRequest struct { func (x *XSortedSetIncrementRequest) Reset() { *x = XSortedSetIncrementRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[57] + mi := &file_protos_cacheclient_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3774,7 +4238,7 @@ func (x *XSortedSetIncrementRequest) String() string { func (*XSortedSetIncrementRequest) ProtoMessage() {} func (x *XSortedSetIncrementRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[57] + mi := &file_protos_cacheclient_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3787,7 +4251,7 @@ func (x *XSortedSetIncrementRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetIncrementRequest.ProtoReflect.Descriptor instead. func (*XSortedSetIncrementRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{57} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{62} } func (x *XSortedSetIncrementRequest) GetSetName() []byte { @@ -3797,9 +4261,9 @@ func (x *XSortedSetIncrementRequest) GetSetName() []byte { return nil } -func (x *XSortedSetIncrementRequest) GetElementName() []byte { +func (x *XSortedSetIncrementRequest) GetValue() []byte { if x != nil { - return x.ElementName + return x.Value } return nil } @@ -3830,14 +4294,14 @@ type XSortedSetIncrementResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The value stored after the increment operation. - Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` + // The updated score stored after the increment operation. + Score float64 `protobuf:"fixed64,1,opt,name=score,proto3" json:"score,omitempty"` } func (x *XSortedSetIncrementResponse) Reset() { *x = XSortedSetIncrementResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[58] + mi := &file_protos_cacheclient_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3850,7 +4314,7 @@ func (x *XSortedSetIncrementResponse) String() string { func (*XSortedSetIncrementResponse) ProtoMessage() {} func (x *XSortedSetIncrementResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[58] + mi := &file_protos_cacheclient_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3863,12 +4327,12 @@ func (x *XSortedSetIncrementResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetIncrementResponse.ProtoReflect.Descriptor instead. func (*XSortedSetIncrementResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{58} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{63} } -func (x *XSortedSetIncrementResponse) GetValue() float64 { +func (x *XSortedSetIncrementResponse) GetScore() float64 { if x != nil { - return x.Value + return x.Score } return 0 } @@ -3878,14 +4342,23 @@ type XSortedSetGetRankRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` - ElementName []byte `protobuf:"bytes,2,opt,name=element_name,json=elementName,proto3" json:"element_name,omitempty"` + SetName []byte `protobuf:"bytes,1,opt,name=set_name,json=setName,proto3" json:"set_name,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // The order in which sorted set will be sorted to determine the rank. + // + // When Order.ASCENDING is specified, will return the rank of the value + // when sorted set scores are ordered from low to high. This is the default + // when no Order is specified. + // + // When Order.DESCENDING is specified, will return the rank of the value + // when sorted set scores are ordered from high to low. + Order XSortedSetGetRankRequest_Order `protobuf:"varint,3,opt,name=order,proto3,enum=cache_client.XSortedSetGetRankRequest_Order" json:"order,omitempty"` } func (x *XSortedSetGetRankRequest) Reset() { *x = XSortedSetGetRankRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[59] + mi := &file_protos_cacheclient_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3898,7 +4371,7 @@ func (x *XSortedSetGetRankRequest) String() string { func (*XSortedSetGetRankRequest) ProtoMessage() {} func (x *XSortedSetGetRankRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[59] + mi := &file_protos_cacheclient_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3911,7 +4384,7 @@ func (x *XSortedSetGetRankRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetGetRankRequest.ProtoReflect.Descriptor instead. func (*XSortedSetGetRankRequest) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{59} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{64} } func (x *XSortedSetGetRankRequest) GetSetName() []byte { @@ -3921,13 +4394,20 @@ func (x *XSortedSetGetRankRequest) GetSetName() []byte { return nil } -func (x *XSortedSetGetRankRequest) GetElementName() []byte { +func (x *XSortedSetGetRankRequest) GetValue() []byte { if x != nil { - return x.ElementName + return x.Value } return nil } +func (x *XSortedSetGetRankRequest) GetOrder() XSortedSetGetRankRequest_Order { + if x != nil { + return x.Order + } + return XSortedSetGetRankRequest_ASCENDING +} + type XSortedSetGetRankResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3943,7 +4423,7 @@ type XSortedSetGetRankResponse struct { func (x *XSortedSetGetRankResponse) Reset() { *x = XSortedSetGetRankResponse{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[60] + mi := &file_protos_cacheclient_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3956,7 +4436,7 @@ func (x *XSortedSetGetRankResponse) String() string { func (*XSortedSetGetRankResponse) ProtoMessage() {} func (x *XSortedSetGetRankResponse) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[60] + mi := &file_protos_cacheclient_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3969,7 +4449,7 @@ func (x *XSortedSetGetRankResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetGetRankResponse.ProtoReflect.Descriptor instead. func (*XSortedSetGetRankResponse) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{60} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{65} } func (m *XSortedSetGetRankResponse) GetRank() isXSortedSetGetRankResponse_Rank { @@ -4018,7 +4498,7 @@ type XSetIfNotExistsResponse_XStored struct { func (x *XSetIfNotExistsResponse_XStored) Reset() { *x = XSetIfNotExistsResponse_XStored{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[61] + mi := &file_protos_cacheclient_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4031,7 +4511,7 @@ func (x *XSetIfNotExistsResponse_XStored) String() string { func (*XSetIfNotExistsResponse_XStored) ProtoMessage() {} func (x *XSetIfNotExistsResponse_XStored) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[61] + mi := &file_protos_cacheclient_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4056,7 +4536,7 @@ type XSetIfNotExistsResponse_XNotStored struct { func (x *XSetIfNotExistsResponse_XNotStored) Reset() { *x = XSetIfNotExistsResponse_XNotStored{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[62] + mi := &file_protos_cacheclient_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4069,7 +4549,7 @@ func (x *XSetIfNotExistsResponse_XNotStored) String() string { func (*XSetIfNotExistsResponse_XNotStored) ProtoMessage() {} func (x *XSetIfNotExistsResponse_XNotStored) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[62] + mi := &file_protos_cacheclient_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4097,7 +4577,7 @@ type XDictionaryGetResponse_XDictionaryGetResponsePart struct { func (x *XDictionaryGetResponse_XDictionaryGetResponsePart) Reset() { *x = XDictionaryGetResponse_XDictionaryGetResponsePart{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[63] + mi := &file_protos_cacheclient_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4110,7 +4590,7 @@ func (x *XDictionaryGetResponse_XDictionaryGetResponsePart) String() string { func (*XDictionaryGetResponse_XDictionaryGetResponsePart) ProtoMessage() {} func (x *XDictionaryGetResponse_XDictionaryGetResponsePart) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[63] + mi := &file_protos_cacheclient_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4151,7 +4631,7 @@ type XDictionaryGetResponse_XFound struct { func (x *XDictionaryGetResponse_XFound) Reset() { *x = XDictionaryGetResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[64] + mi := &file_protos_cacheclient_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4164,7 +4644,7 @@ func (x *XDictionaryGetResponse_XFound) String() string { func (*XDictionaryGetResponse_XFound) ProtoMessage() {} func (x *XDictionaryGetResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[64] + mi := &file_protos_cacheclient_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4196,7 +4676,7 @@ type XDictionaryGetResponse_XMissing struct { func (x *XDictionaryGetResponse_XMissing) Reset() { *x = XDictionaryGetResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[65] + mi := &file_protos_cacheclient_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4209,7 +4689,7 @@ func (x *XDictionaryGetResponse_XMissing) String() string { func (*XDictionaryGetResponse_XMissing) ProtoMessage() {} func (x *XDictionaryGetResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[65] + mi := &file_protos_cacheclient_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4236,7 +4716,7 @@ type XDictionaryFetchResponse_XFound struct { func (x *XDictionaryFetchResponse_XFound) Reset() { *x = XDictionaryFetchResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[66] + mi := &file_protos_cacheclient_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4249,7 +4729,7 @@ func (x *XDictionaryFetchResponse_XFound) String() string { func (*XDictionaryFetchResponse_XFound) ProtoMessage() {} func (x *XDictionaryFetchResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[66] + mi := &file_protos_cacheclient_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4281,7 +4761,7 @@ type XDictionaryFetchResponse_XMissing struct { func (x *XDictionaryFetchResponse_XMissing) Reset() { *x = XDictionaryFetchResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[67] + mi := &file_protos_cacheclient_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4294,7 +4774,7 @@ func (x *XDictionaryFetchResponse_XMissing) String() string { func (*XDictionaryFetchResponse_XMissing) ProtoMessage() {} func (x *XDictionaryFetchResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[67] + mi := &file_protos_cacheclient_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4321,7 +4801,7 @@ type XDictionaryDeleteRequest_Some struct { func (x *XDictionaryDeleteRequest_Some) Reset() { *x = XDictionaryDeleteRequest_Some{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[68] + mi := &file_protos_cacheclient_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4334,7 +4814,7 @@ func (x *XDictionaryDeleteRequest_Some) String() string { func (*XDictionaryDeleteRequest_Some) ProtoMessage() {} func (x *XDictionaryDeleteRequest_Some) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[68] + mi := &file_protos_cacheclient_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4366,7 +4846,7 @@ type XDictionaryDeleteRequest_All struct { func (x *XDictionaryDeleteRequest_All) Reset() { *x = XDictionaryDeleteRequest_All{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[69] + mi := &file_protos_cacheclient_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4379,7 +4859,7 @@ func (x *XDictionaryDeleteRequest_All) String() string { func (*XDictionaryDeleteRequest_All) ProtoMessage() {} func (x *XDictionaryDeleteRequest_All) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[69] + mi := &file_protos_cacheclient_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4406,7 +4886,7 @@ type XSetFetchResponse_XFound struct { func (x *XSetFetchResponse_XFound) Reset() { *x = XSetFetchResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[70] + mi := &file_protos_cacheclient_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4419,7 +4899,7 @@ func (x *XSetFetchResponse_XFound) String() string { func (*XSetFetchResponse_XFound) ProtoMessage() {} func (x *XSetFetchResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[70] + mi := &file_protos_cacheclient_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4451,7 +4931,7 @@ type XSetFetchResponse_XMissing struct { func (x *XSetFetchResponse_XMissing) Reset() { *x = XSetFetchResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[71] + mi := &file_protos_cacheclient_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4464,7 +4944,7 @@ func (x *XSetFetchResponse_XMissing) String() string { func (*XSetFetchResponse_XMissing) ProtoMessage() {} func (x *XSetFetchResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[71] + mi := &file_protos_cacheclient_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4492,7 +4972,7 @@ type XSetDifferenceRequest_XMinuend struct { func (x *XSetDifferenceRequest_XMinuend) Reset() { *x = XSetDifferenceRequest_XMinuend{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[72] + mi := &file_protos_cacheclient_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4505,7 +4985,7 @@ func (x *XSetDifferenceRequest_XMinuend) String() string { func (*XSetDifferenceRequest_XMinuend) ProtoMessage() {} func (x *XSetDifferenceRequest_XMinuend) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[72] + mi := &file_protos_cacheclient_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4544,7 +5024,7 @@ type XSetDifferenceRequest_XSubtrahend struct { func (x *XSetDifferenceRequest_XSubtrahend) Reset() { *x = XSetDifferenceRequest_XSubtrahend{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[73] + mi := &file_protos_cacheclient_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4557,7 +5037,7 @@ func (x *XSetDifferenceRequest_XSubtrahend) String() string { func (*XSetDifferenceRequest_XSubtrahend) ProtoMessage() {} func (x *XSetDifferenceRequest_XSubtrahend) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[73] + mi := &file_protos_cacheclient_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4623,7 +5103,7 @@ type XSetDifferenceRequest_XSubtrahend_XSet struct { func (x *XSetDifferenceRequest_XSubtrahend_XSet) Reset() { *x = XSetDifferenceRequest_XSubtrahend_XSet{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[74] + mi := &file_protos_cacheclient_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4636,7 +5116,7 @@ func (x *XSetDifferenceRequest_XSubtrahend_XSet) String() string { func (*XSetDifferenceRequest_XSubtrahend_XSet) ProtoMessage() {} func (x *XSetDifferenceRequest_XSubtrahend_XSet) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[74] + mi := &file_protos_cacheclient_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4669,7 +5149,7 @@ type XSetDifferenceRequest_XSubtrahend_XIdentity struct { func (x *XSetDifferenceRequest_XSubtrahend_XIdentity) Reset() { *x = XSetDifferenceRequest_XSubtrahend_XIdentity{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[75] + mi := &file_protos_cacheclient_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4682,7 +5162,7 @@ func (x *XSetDifferenceRequest_XSubtrahend_XIdentity) String() string { func (*XSetDifferenceRequest_XSubtrahend_XIdentity) ProtoMessage() {} func (x *XSetDifferenceRequest_XSubtrahend_XIdentity) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[75] + mi := &file_protos_cacheclient_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4707,7 +5187,7 @@ type XSetDifferenceResponse_XFound struct { func (x *XSetDifferenceResponse_XFound) Reset() { *x = XSetDifferenceResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[76] + mi := &file_protos_cacheclient_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4720,7 +5200,7 @@ func (x *XSetDifferenceResponse_XFound) String() string { func (*XSetDifferenceResponse_XFound) ProtoMessage() {} func (x *XSetDifferenceResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[76] + mi := &file_protos_cacheclient_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4745,7 +5225,7 @@ type XSetDifferenceResponse_XMissing struct { func (x *XSetDifferenceResponse_XMissing) Reset() { *x = XSetDifferenceResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[77] + mi := &file_protos_cacheclient_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4758,7 +5238,7 @@ func (x *XSetDifferenceResponse_XMissing) String() string { func (*XSetDifferenceResponse_XMissing) ProtoMessage() {} func (x *XSetDifferenceResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[77] + mi := &file_protos_cacheclient_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4774,6 +5254,93 @@ func (*XSetDifferenceResponse_XMissing) Descriptor() ([]byte, []int) { return file_protos_cacheclient_proto_rawDescGZIP(), []int{26, 1} } +type XSetContainsResponse_XFound struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This will be the same length as the elements passed in the request. + // It represents whether each element is a member of the set, with indices corresponding to the request elements. + Contains []bool `protobuf:"varint,1,rep,packed,name=contains,proto3" json:"contains,omitempty"` +} + +func (x *XSetContainsResponse_XFound) Reset() { + *x = XSetContainsResponse_XFound{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XSetContainsResponse_XFound) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XSetContainsResponse_XFound) ProtoMessage() {} + +func (x *XSetContainsResponse_XFound) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[83] + 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 XSetContainsResponse_XFound.ProtoReflect.Descriptor instead. +func (*XSetContainsResponse_XFound) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{28, 0} +} + +func (x *XSetContainsResponse_XFound) GetContains() []bool { + if x != nil { + return x.Contains + } + return nil +} + +type XSetContainsResponse_XMissing struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *XSetContainsResponse_XMissing) Reset() { + *x = XSetContainsResponse_XMissing{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_cacheclient_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XSetContainsResponse_XMissing) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XSetContainsResponse_XMissing) ProtoMessage() {} + +func (x *XSetContainsResponse_XMissing) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[84] + 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 XSetContainsResponse_XMissing.ProtoReflect.Descriptor instead. +func (*XSetContainsResponse_XMissing) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{28, 1} +} + type XListPopFrontResponse_XFound struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4785,7 +5352,7 @@ type XListPopFrontResponse_XFound struct { func (x *XListPopFrontResponse_XFound) Reset() { *x = XListPopFrontResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[78] + mi := &file_protos_cacheclient_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4798,7 +5365,7 @@ func (x *XListPopFrontResponse_XFound) String() string { func (*XListPopFrontResponse_XFound) ProtoMessage() {} func (x *XListPopFrontResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[78] + mi := &file_protos_cacheclient_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4811,7 +5378,7 @@ func (x *XListPopFrontResponse_XFound) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopFrontResponse_XFound.ProtoReflect.Descriptor instead. func (*XListPopFrontResponse_XFound) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{36, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{38, 0} } func (x *XListPopFrontResponse_XFound) GetFront() []byte { @@ -4830,7 +5397,7 @@ type XListPopFrontResponse_XMissing struct { func (x *XListPopFrontResponse_XMissing) Reset() { *x = XListPopFrontResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[79] + mi := &file_protos_cacheclient_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4843,7 +5410,7 @@ func (x *XListPopFrontResponse_XMissing) String() string { func (*XListPopFrontResponse_XMissing) ProtoMessage() {} func (x *XListPopFrontResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[79] + mi := &file_protos_cacheclient_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4856,7 +5423,7 @@ func (x *XListPopFrontResponse_XMissing) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopFrontResponse_XMissing.ProtoReflect.Descriptor instead. func (*XListPopFrontResponse_XMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{36, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{38, 1} } type XListPopBackResponse_XFound struct { @@ -4870,7 +5437,7 @@ type XListPopBackResponse_XFound struct { func (x *XListPopBackResponse_XFound) Reset() { *x = XListPopBackResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[80] + mi := &file_protos_cacheclient_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4883,7 +5450,7 @@ func (x *XListPopBackResponse_XFound) String() string { func (*XListPopBackResponse_XFound) ProtoMessage() {} func (x *XListPopBackResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[80] + mi := &file_protos_cacheclient_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4896,7 +5463,7 @@ func (x *XListPopBackResponse_XFound) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopBackResponse_XFound.ProtoReflect.Descriptor instead. func (*XListPopBackResponse_XFound) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{38, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{40, 0} } func (x *XListPopBackResponse_XFound) GetBack() []byte { @@ -4915,7 +5482,7 @@ type XListPopBackResponse_XMissing struct { func (x *XListPopBackResponse_XMissing) Reset() { *x = XListPopBackResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[81] + mi := &file_protos_cacheclient_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4928,7 +5495,7 @@ func (x *XListPopBackResponse_XMissing) String() string { func (*XListPopBackResponse_XMissing) ProtoMessage() {} func (x *XListPopBackResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[81] + mi := &file_protos_cacheclient_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4941,7 +5508,7 @@ func (x *XListPopBackResponse_XMissing) ProtoReflect() protoreflect.Message { // Deprecated: Use XListPopBackResponse_XMissing.ProtoReflect.Descriptor instead. func (*XListPopBackResponse_XMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{38, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{40, 1} } type XListEraseRequest_XAll struct { @@ -4953,7 +5520,7 @@ type XListEraseRequest_XAll struct { func (x *XListEraseRequest_XAll) Reset() { *x = XListEraseRequest_XAll{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[82] + mi := &file_protos_cacheclient_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4966,7 +5533,7 @@ func (x *XListEraseRequest_XAll) String() string { func (*XListEraseRequest_XAll) ProtoMessage() {} func (x *XListEraseRequest_XAll) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[82] + mi := &file_protos_cacheclient_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4979,7 +5546,7 @@ func (x *XListEraseRequest_XAll) ProtoReflect() protoreflect.Message { // Deprecated: Use XListEraseRequest_XAll.ProtoReflect.Descriptor instead. func (*XListEraseRequest_XAll) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{40, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{42, 0} } type XListEraseRequest_XListRanges struct { @@ -4993,7 +5560,7 @@ type XListEraseRequest_XListRanges struct { func (x *XListEraseRequest_XListRanges) Reset() { *x = XListEraseRequest_XListRanges{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[83] + mi := &file_protos_cacheclient_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5006,7 +5573,7 @@ func (x *XListEraseRequest_XListRanges) String() string { func (*XListEraseRequest_XListRanges) ProtoMessage() {} func (x *XListEraseRequest_XListRanges) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[83] + mi := &file_protos_cacheclient_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5019,7 +5586,7 @@ func (x *XListEraseRequest_XListRanges) ProtoReflect() protoreflect.Message { // Deprecated: Use XListEraseRequest_XListRanges.ProtoReflect.Descriptor instead. func (*XListEraseRequest_XListRanges) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{40, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{42, 1} } func (x *XListEraseRequest_XListRanges) GetRanges() []*XListRange { @@ -5040,7 +5607,7 @@ type XListFetchResponse_XFound struct { func (x *XListFetchResponse_XFound) Reset() { *x = XListFetchResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[84] + mi := &file_protos_cacheclient_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5053,7 +5620,7 @@ func (x *XListFetchResponse_XFound) String() string { func (*XListFetchResponse_XFound) ProtoMessage() {} func (x *XListFetchResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[84] + mi := &file_protos_cacheclient_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5066,7 +5633,7 @@ func (x *XListFetchResponse_XFound) ProtoReflect() protoreflect.Message { // Deprecated: Use XListFetchResponse_XFound.ProtoReflect.Descriptor instead. func (*XListFetchResponse_XFound) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{45, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{50, 0} } func (x *XListFetchResponse_XFound) GetValues() [][]byte { @@ -5085,7 +5652,7 @@ type XListFetchResponse_XMissing struct { func (x *XListFetchResponse_XMissing) Reset() { *x = XListFetchResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[85] + mi := &file_protos_cacheclient_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5098,7 +5665,7 @@ func (x *XListFetchResponse_XMissing) String() string { func (*XListFetchResponse_XMissing) ProtoMessage() {} func (x *XListFetchResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[85] + mi := &file_protos_cacheclient_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5111,7 +5678,7 @@ func (x *XListFetchResponse_XMissing) ProtoReflect() protoreflect.Message { // Deprecated: Use XListFetchResponse_XMissing.ProtoReflect.Descriptor instead. func (*XListFetchResponse_XMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{45, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{50, 1} } type XListLengthResponse_XFound struct { @@ -5125,7 +5692,7 @@ type XListLengthResponse_XFound struct { func (x *XListLengthResponse_XFound) Reset() { *x = XListLengthResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[86] + mi := &file_protos_cacheclient_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5138,7 +5705,7 @@ func (x *XListLengthResponse_XFound) String() string { func (*XListLengthResponse_XFound) ProtoMessage() {} func (x *XListLengthResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[86] + mi := &file_protos_cacheclient_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5151,7 +5718,7 @@ func (x *XListLengthResponse_XFound) ProtoReflect() protoreflect.Message { // Deprecated: Use XListLengthResponse_XFound.ProtoReflect.Descriptor instead. func (*XListLengthResponse_XFound) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{47, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{52, 0} } func (x *XListLengthResponse_XFound) GetLength() uint32 { @@ -5170,7 +5737,7 @@ type XListLengthResponse_XMissing struct { func (x *XListLengthResponse_XMissing) Reset() { *x = XListLengthResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[87] + mi := &file_protos_cacheclient_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5183,7 +5750,7 @@ func (x *XListLengthResponse_XMissing) String() string { func (*XListLengthResponse_XMissing) ProtoMessage() {} func (x *XListLengthResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[87] + mi := &file_protos_cacheclient_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5196,33 +5763,49 @@ func (x *XListLengthResponse_XMissing) ProtoReflect() protoreflect.Message { // Deprecated: Use XListLengthResponse_XMissing.ProtoReflect.Descriptor instead. func (*XListLengthResponse_XMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{47, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{52, 1} } -// num_results fields -type XSortedSetFetchRequest_XAll struct { +type XSortedSetFetchRequest_XByIndex struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Start is inclusive. + // Unbounded is treated as 0. + // + // Types that are assignable to Start: + // + // *XSortedSetFetchRequest_XByIndex_UnboundedStart + // *XSortedSetFetchRequest_XByIndex_InclusiveStartIndex + Start isXSortedSetFetchRequest_XByIndex_Start `protobuf_oneof:"start"` + // End is exclusive. + // Unbounded is treated as the number of elements in the sorted set. + // + // Types that are assignable to End: + // + // *XSortedSetFetchRequest_XByIndex_UnboundedEnd + // *XSortedSetFetchRequest_XByIndex_ExclusiveEndIndex + End isXSortedSetFetchRequest_XByIndex_End `protobuf_oneof:"end"` } -func (x *XSortedSetFetchRequest_XAll) Reset() { - *x = XSortedSetFetchRequest_XAll{} +func (x *XSortedSetFetchRequest_XByIndex) Reset() { + *x = XSortedSetFetchRequest_XByIndex{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[88] + mi := &file_protos_cacheclient_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XSortedSetFetchRequest_XAll) String() string { +func (x *XSortedSetFetchRequest_XByIndex) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XSortedSetFetchRequest_XAll) ProtoMessage() {} +func (*XSortedSetFetchRequest_XByIndex) ProtoMessage() {} -func (x *XSortedSetFetchRequest_XAll) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[88] +func (x *XSortedSetFetchRequest_XByIndex) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5233,110 +5816,113 @@ func (x *XSortedSetFetchRequest_XAll) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use XSortedSetFetchRequest_XAll.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchRequest_XAll) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 0} +// Deprecated: Use XSortedSetFetchRequest_XByIndex.ProtoReflect.Descriptor instead. +func (*XSortedSetFetchRequest_XByIndex) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{56, 0} } -type XSortedSetFetchRequest_XLimit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` +func (m *XSortedSetFetchRequest_XByIndex) GetStart() isXSortedSetFetchRequest_XByIndex_Start { + if m != nil { + return m.Start + } + return nil } -func (x *XSortedSetFetchRequest_XLimit) Reset() { - *x = XSortedSetFetchRequest_XLimit{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *XSortedSetFetchRequest_XByIndex) GetUnboundedStart() *XUnbounded { + if x, ok := x.GetStart().(*XSortedSetFetchRequest_XByIndex_UnboundedStart); ok { + return x.UnboundedStart } + return nil } -func (x *XSortedSetFetchRequest_XLimit) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *XSortedSetFetchRequest_XByIndex) GetInclusiveStartIndex() int32 { + if x, ok := x.GetStart().(*XSortedSetFetchRequest_XByIndex_InclusiveStartIndex); ok { + return x.InclusiveStartIndex + } + return 0 } -func (*XSortedSetFetchRequest_XLimit) ProtoMessage() {} - -func (x *XSortedSetFetchRequest_XLimit) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[89] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *XSortedSetFetchRequest_XByIndex) GetEnd() isXSortedSetFetchRequest_XByIndex_End { + if m != nil { + return m.End } - return mi.MessageOf(x) + return nil } -// Deprecated: Use XSortedSetFetchRequest_XLimit.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchRequest_XLimit) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 1} +func (x *XSortedSetFetchRequest_XByIndex) GetUnboundedEnd() *XUnbounded { + if x, ok := x.GetEnd().(*XSortedSetFetchRequest_XByIndex_UnboundedEnd); ok { + return x.UnboundedEnd + } + return nil } -func (x *XSortedSetFetchRequest_XLimit) GetLimit() uint32 { - if x != nil { - return x.Limit +func (x *XSortedSetFetchRequest_XByIndex) GetExclusiveEndIndex() int32 { + if x, ok := x.GetEnd().(*XSortedSetFetchRequest_XByIndex_ExclusiveEndIndex); ok { + return x.ExclusiveEndIndex } return 0 } -// range fields -type XSortedSetFetchRequest_XByIndex struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type isXSortedSetFetchRequest_XByIndex_Start interface { + isXSortedSetFetchRequest_XByIndex_Start() } -func (x *XSortedSetFetchRequest_XByIndex) Reset() { - *x = XSortedSetFetchRequest_XByIndex{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type XSortedSetFetchRequest_XByIndex_UnboundedStart struct { + UnboundedStart *XUnbounded `protobuf:"bytes,1,opt,name=unbounded_start,json=unboundedStart,proto3,oneof"` +} + +type XSortedSetFetchRequest_XByIndex_InclusiveStartIndex struct { + InclusiveStartIndex int32 `protobuf:"zigzag32,2,opt,name=inclusive_start_index,json=inclusiveStartIndex,proto3,oneof"` } -func (x *XSortedSetFetchRequest_XByIndex) String() string { - return protoimpl.X.MessageStringOf(x) +func (*XSortedSetFetchRequest_XByIndex_UnboundedStart) isXSortedSetFetchRequest_XByIndex_Start() {} + +func (*XSortedSetFetchRequest_XByIndex_InclusiveStartIndex) isXSortedSetFetchRequest_XByIndex_Start() { } -func (*XSortedSetFetchRequest_XByIndex) ProtoMessage() {} +type isXSortedSetFetchRequest_XByIndex_End interface { + isXSortedSetFetchRequest_XByIndex_End() +} -func (x *XSortedSetFetchRequest_XByIndex) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[90] - 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) +type XSortedSetFetchRequest_XByIndex_UnboundedEnd struct { + UnboundedEnd *XUnbounded `protobuf:"bytes,3,opt,name=unbounded_end,json=unboundedEnd,proto3,oneof"` } -// Deprecated: Use XSortedSetFetchRequest_XByIndex.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchRequest_XByIndex) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 2} +type XSortedSetFetchRequest_XByIndex_ExclusiveEndIndex struct { + ExclusiveEndIndex int32 `protobuf:"zigzag32,4,opt,name=exclusive_end_index,json=exclusiveEndIndex,proto3,oneof"` } +func (*XSortedSetFetchRequest_XByIndex_UnboundedEnd) isXSortedSetFetchRequest_XByIndex_End() {} + +func (*XSortedSetFetchRequest_XByIndex_ExclusiveEndIndex) isXSortedSetFetchRequest_XByIndex_End() {} + type XSortedSetFetchRequest_XByScore struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Start *XSortedSetFetchRequest_XByScore_XEndpoint `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` - Stop *XSortedSetFetchRequest_XByScore_XEndpoint `protobuf:"bytes,2,opt,name=stop,proto3" json:"stop,omitempty"` + // Types that are assignable to Min: + // + // *XSortedSetFetchRequest_XByScore_UnboundedMin + // *XSortedSetFetchRequest_XByScore_MinScore + Min isXSortedSetFetchRequest_XByScore_Min `protobuf_oneof:"min"` + // Types that are assignable to Max: + // + // *XSortedSetFetchRequest_XByScore_UnboundedMax + // *XSortedSetFetchRequest_XByScore_MaxScore + Max isXSortedSetFetchRequest_XByScore_Max `protobuf_oneof:"max"` + // Offset and count are used to only get a range of the matching elements, + // similar to "SELECT LIMIT offset, count" in SQL. + // A negative count returns all elements from the offset. + // Use (0, -1) to return all matching elements. + Offset uint32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` + Count int32 `protobuf:"zigzag32,6,opt,name=count,proto3" json:"count,omitempty"` } func (x *XSortedSetFetchRequest_XByScore) Reset() { *x = XSortedSetFetchRequest_XByScore{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[91] + mi := &file_protos_cacheclient_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5349,7 +5935,7 @@ func (x *XSortedSetFetchRequest_XByScore) String() string { func (*XSortedSetFetchRequest_XByScore) ProtoMessage() {} func (x *XSortedSetFetchRequest_XByScore) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[91] + mi := &file_protos_cacheclient_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5362,52 +5948,123 @@ func (x *XSortedSetFetchRequest_XByScore) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetFetchRequest_XByScore.ProtoReflect.Descriptor instead. func (*XSortedSetFetchRequest_XByScore) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 3} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{56, 1} } -func (x *XSortedSetFetchRequest_XByScore) GetStart() *XSortedSetFetchRequest_XByScore_XEndpoint { - if x != nil { - return x.Start +func (m *XSortedSetFetchRequest_XByScore) GetMin() isXSortedSetFetchRequest_XByScore_Min { + if m != nil { + return m.Min } return nil } -func (x *XSortedSetFetchRequest_XByScore) GetStop() *XSortedSetFetchRequest_XByScore_XEndpoint { - if x != nil { - return x.Stop +func (x *XSortedSetFetchRequest_XByScore) GetUnboundedMin() *XUnbounded { + if x, ok := x.GetMin().(*XSortedSetFetchRequest_XByScore_UnboundedMin); ok { + return x.UnboundedMin + } + return nil +} + +func (x *XSortedSetFetchRequest_XByScore) GetMinScore() *XSortedSetFetchRequest_XByScore_XScore { + if x, ok := x.GetMin().(*XSortedSetFetchRequest_XByScore_MinScore); ok { + return x.MinScore } return nil } -type XSortedSetFetchRequest_XByScore_XEndpoint struct { +func (m *XSortedSetFetchRequest_XByScore) GetMax() isXSortedSetFetchRequest_XByScore_Max { + if m != nil { + return m.Max + } + return nil +} + +func (x *XSortedSetFetchRequest_XByScore) GetUnboundedMax() *XUnbounded { + if x, ok := x.GetMax().(*XSortedSetFetchRequest_XByScore_UnboundedMax); ok { + return x.UnboundedMax + } + return nil +} + +func (x *XSortedSetFetchRequest_XByScore) GetMaxScore() *XSortedSetFetchRequest_XByScore_XScore { + if x, ok := x.GetMax().(*XSortedSetFetchRequest_XByScore_MaxScore); ok { + return x.MaxScore + } + return nil +} + +func (x *XSortedSetFetchRequest_XByScore) GetOffset() uint32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *XSortedSetFetchRequest_XByScore) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +type isXSortedSetFetchRequest_XByScore_Min interface { + isXSortedSetFetchRequest_XByScore_Min() +} + +type XSortedSetFetchRequest_XByScore_UnboundedMin struct { + UnboundedMin *XUnbounded `protobuf:"bytes,1,opt,name=unbounded_min,json=unboundedMin,proto3,oneof"` +} + +type XSortedSetFetchRequest_XByScore_MinScore struct { + MinScore *XSortedSetFetchRequest_XByScore_XScore `protobuf:"bytes,2,opt,name=min_score,json=minScore,proto3,oneof"` +} + +func (*XSortedSetFetchRequest_XByScore_UnboundedMin) isXSortedSetFetchRequest_XByScore_Min() {} + +func (*XSortedSetFetchRequest_XByScore_MinScore) isXSortedSetFetchRequest_XByScore_Min() {} + +type isXSortedSetFetchRequest_XByScore_Max interface { + isXSortedSetFetchRequest_XByScore_Max() +} + +type XSortedSetFetchRequest_XByScore_UnboundedMax struct { + UnboundedMax *XUnbounded `protobuf:"bytes,3,opt,name=unbounded_max,json=unboundedMax,proto3,oneof"` +} + +type XSortedSetFetchRequest_XByScore_MaxScore struct { + MaxScore *XSortedSetFetchRequest_XByScore_XScore `protobuf:"bytes,4,opt,name=max_score,json=maxScore,proto3,oneof"` +} + +func (*XSortedSetFetchRequest_XByScore_UnboundedMax) isXSortedSetFetchRequest_XByScore_Max() {} + +func (*XSortedSetFetchRequest_XByScore_MaxScore) isXSortedSetFetchRequest_XByScore_Max() {} + +type XSortedSetFetchRequest_XByScore_XScore struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Kind: - // - // *XSortedSetFetchRequest_XByScore_XEndpoint_Score - // *XSortedSetFetchRequest_XByScore_XEndpoint_Inf - Kind isXSortedSetFetchRequest_XByScore_XEndpoint_Kind `protobuf_oneof:"kind"` + Score float64 `protobuf:"fixed64,1,opt,name=score,proto3" json:"score,omitempty"` + Exclusive bool `protobuf:"varint,2,opt,name=exclusive,proto3" json:"exclusive,omitempty"` } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint) Reset() { - *x = XSortedSetFetchRequest_XByScore_XEndpoint{} +func (x *XSortedSetFetchRequest_XByScore_XScore) Reset() { + *x = XSortedSetFetchRequest_XByScore_XScore{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[92] + mi := &file_protos_cacheclient_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint) String() string { +func (x *XSortedSetFetchRequest_XByScore_XScore) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XSortedSetFetchRequest_XByScore_XEndpoint) ProtoMessage() {} +func (*XSortedSetFetchRequest_XByScore_XScore) ProtoMessage() {} -func (x *XSortedSetFetchRequest_XByScore_XEndpoint) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[92] +func (x *XSortedSetFetchRequest_XByScore_XScore) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5418,76 +6075,54 @@ func (x *XSortedSetFetchRequest_XByScore_XEndpoint) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use XSortedSetFetchRequest_XByScore_XEndpoint.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchRequest_XByScore_XEndpoint) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 3, 0} -} - -func (m *XSortedSetFetchRequest_XByScore_XEndpoint) GetKind() isXSortedSetFetchRequest_XByScore_XEndpoint_Kind { - if m != nil { - return m.Kind - } - return nil +// Deprecated: Use XSortedSetFetchRequest_XByScore_XScore.ProtoReflect.Descriptor instead. +func (*XSortedSetFetchRequest_XByScore_XScore) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{56, 1, 0} } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint) GetScore() *XSortedSetFetchRequest_XByScore_XEndpoint_XScore { - if x, ok := x.GetKind().(*XSortedSetFetchRequest_XByScore_XEndpoint_Score); ok { +func (x *XSortedSetFetchRequest_XByScore_XScore) GetScore() float64 { + if x != nil { return x.Score } - return nil + return 0 } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint) GetInf() *XSortedSetFetchRequest_XByScore_XEndpoint_XInf { - if x, ok := x.GetKind().(*XSortedSetFetchRequest_XByScore_XEndpoint_Inf); ok { - return x.Inf +func (x *XSortedSetFetchRequest_XByScore_XScore) GetExclusive() bool { + if x != nil { + return x.Exclusive } - return nil -} - -type isXSortedSetFetchRequest_XByScore_XEndpoint_Kind interface { - isXSortedSetFetchRequest_XByScore_XEndpoint_Kind() -} - -type XSortedSetFetchRequest_XByScore_XEndpoint_Score struct { - Score *XSortedSetFetchRequest_XByScore_XEndpoint_XScore `protobuf:"bytes,1,opt,name=score,proto3,oneof"` -} - -type XSortedSetFetchRequest_XByScore_XEndpoint_Inf struct { - Inf *XSortedSetFetchRequest_XByScore_XEndpoint_XInf `protobuf:"bytes,2,opt,name=inf,proto3,oneof"` -} - -func (*XSortedSetFetchRequest_XByScore_XEndpoint_Score) isXSortedSetFetchRequest_XByScore_XEndpoint_Kind() { -} - -func (*XSortedSetFetchRequest_XByScore_XEndpoint_Inf) isXSortedSetFetchRequest_XByScore_XEndpoint_Kind() { + return false } -type XSortedSetFetchRequest_XByScore_XEndpoint_XScore struct { +type XSortedSetFetchResponse_XFound struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Score float64 `protobuf:"fixed64,1,opt,name=score,proto3" json:"score,omitempty"` - Open bool `protobuf:"varint,2,opt,name=open,proto3" json:"open,omitempty"` // if true, the endpoint is open (exclusive); false, closed (inclusive) + // Types that are assignable to Elements: + // + // *XSortedSetFetchResponse_XFound_ValuesWithScores + // *XSortedSetFetchResponse_XFound_Values + Elements isXSortedSetFetchResponse_XFound_Elements `protobuf_oneof:"elements"` } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XScore) Reset() { - *x = XSortedSetFetchRequest_XByScore_XEndpoint_XScore{} +func (x *XSortedSetFetchResponse_XFound) Reset() { + *x = XSortedSetFetchResponse_XFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[93] + mi := &file_protos_cacheclient_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XScore) String() string { +func (x *XSortedSetFetchResponse_XFound) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XSortedSetFetchRequest_XByScore_XEndpoint_XScore) ProtoMessage() {} +func (*XSortedSetFetchResponse_XFound) ProtoMessage() {} -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XScore) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[93] +func (x *XSortedSetFetchResponse_XFound) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5498,48 +6133,71 @@ func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XScore) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use XSortedSetFetchRequest_XByScore_XEndpoint_XScore.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchRequest_XByScore_XEndpoint_XScore) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 3, 0, 0} +// Deprecated: Use XSortedSetFetchResponse_XFound.ProtoReflect.Descriptor instead. +func (*XSortedSetFetchResponse_XFound) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{57, 0} +} + +func (m *XSortedSetFetchResponse_XFound) GetElements() isXSortedSetFetchResponse_XFound_Elements { + if m != nil { + return m.Elements + } + return nil } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XScore) GetScore() float64 { - if x != nil { - return x.Score +func (x *XSortedSetFetchResponse_XFound) GetValuesWithScores() *XSortedSetFetchResponse_XFound_XValuesWithScores { + if x, ok := x.GetElements().(*XSortedSetFetchResponse_XFound_ValuesWithScores); ok { + return x.ValuesWithScores } - return 0 + return nil } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XScore) GetOpen() bool { - if x != nil { - return x.Open +func (x *XSortedSetFetchResponse_XFound) GetValues() *XSortedSetFetchResponse_XFound_XValues { + if x, ok := x.GetElements().(*XSortedSetFetchResponse_XFound_Values); ok { + return x.Values } - return false + return nil +} + +type isXSortedSetFetchResponse_XFound_Elements interface { + isXSortedSetFetchResponse_XFound_Elements() +} + +type XSortedSetFetchResponse_XFound_ValuesWithScores struct { + ValuesWithScores *XSortedSetFetchResponse_XFound_XValuesWithScores `protobuf:"bytes,1,opt,name=values_with_scores,json=valuesWithScores,proto3,oneof"` +} + +type XSortedSetFetchResponse_XFound_Values struct { + Values *XSortedSetFetchResponse_XFound_XValues `protobuf:"bytes,2,opt,name=values,proto3,oneof"` } -type XSortedSetFetchRequest_XByScore_XEndpoint_XInf struct { +func (*XSortedSetFetchResponse_XFound_ValuesWithScores) isXSortedSetFetchResponse_XFound_Elements() {} + +func (*XSortedSetFetchResponse_XFound_Values) isXSortedSetFetchResponse_XFound_Elements() {} + +type XSortedSetFetchResponse_XMissing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XInf) Reset() { - *x = XSortedSetFetchRequest_XByScore_XEndpoint_XInf{} +func (x *XSortedSetFetchResponse_XMissing) Reset() { + *x = XSortedSetFetchResponse_XMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[94] + mi := &file_protos_cacheclient_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XInf) String() string { +func (x *XSortedSetFetchResponse_XMissing) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XSortedSetFetchRequest_XByScore_XEndpoint_XInf) ProtoMessage() {} +func (*XSortedSetFetchResponse_XMissing) ProtoMessage() {} -func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XInf) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[94] +func (x *XSortedSetFetchResponse_XMissing) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5550,12 +6208,12 @@ func (x *XSortedSetFetchRequest_XByScore_XEndpoint_XInf) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use XSortedSetFetchRequest_XByScore_XEndpoint_XInf.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchRequest_XByScore_XEndpoint_XInf) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{51, 3, 0, 1} +// Deprecated: Use XSortedSetFetchResponse_XMissing.ProtoReflect.Descriptor instead. +func (*XSortedSetFetchResponse_XMissing) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{57, 1} } -type XSortedSetFetchResponse_XFound struct { +type XSortedSetFetchResponse_XFound_XValuesWithScores struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -5563,23 +6221,23 @@ type XSortedSetFetchResponse_XFound struct { Elements []*XSortedSetElement `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` } -func (x *XSortedSetFetchResponse_XFound) Reset() { - *x = XSortedSetFetchResponse_XFound{} +func (x *XSortedSetFetchResponse_XFound_XValuesWithScores) Reset() { + *x = XSortedSetFetchResponse_XFound_XValuesWithScores{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[95] + mi := &file_protos_cacheclient_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XSortedSetFetchResponse_XFound) String() string { +func (x *XSortedSetFetchResponse_XFound_XValuesWithScores) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XSortedSetFetchResponse_XFound) ProtoMessage() {} +func (*XSortedSetFetchResponse_XFound_XValuesWithScores) ProtoMessage() {} -func (x *XSortedSetFetchResponse_XFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[95] +func (x *XSortedSetFetchResponse_XFound_XValuesWithScores) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5590,41 +6248,43 @@ func (x *XSortedSetFetchResponse_XFound) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use XSortedSetFetchResponse_XFound.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchResponse_XFound) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{52, 0} +// Deprecated: Use XSortedSetFetchResponse_XFound_XValuesWithScores.ProtoReflect.Descriptor instead. +func (*XSortedSetFetchResponse_XFound_XValuesWithScores) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{57, 0, 0} } -func (x *XSortedSetFetchResponse_XFound) GetElements() []*XSortedSetElement { +func (x *XSortedSetFetchResponse_XFound_XValuesWithScores) GetElements() []*XSortedSetElement { if x != nil { return x.Elements } return nil } -type XSortedSetFetchResponse_XMissing struct { +type XSortedSetFetchResponse_XFound_XValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Values [][]byte `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` } -func (x *XSortedSetFetchResponse_XMissing) Reset() { - *x = XSortedSetFetchResponse_XMissing{} +func (x *XSortedSetFetchResponse_XFound_XValues) Reset() { + *x = XSortedSetFetchResponse_XFound_XValues{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[96] + mi := &file_protos_cacheclient_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *XSortedSetFetchResponse_XMissing) String() string { +func (x *XSortedSetFetchResponse_XFound_XValues) String() string { return protoimpl.X.MessageStringOf(x) } -func (*XSortedSetFetchResponse_XMissing) ProtoMessage() {} +func (*XSortedSetFetchResponse_XFound_XValues) ProtoMessage() {} -func (x *XSortedSetFetchResponse_XMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[96] +func (x *XSortedSetFetchResponse_XFound_XValues) ProtoReflect() protoreflect.Message { + mi := &file_protos_cacheclient_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5635,9 +6295,16 @@ func (x *XSortedSetFetchResponse_XMissing) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use XSortedSetFetchResponse_XMissing.ProtoReflect.Descriptor instead. -func (*XSortedSetFetchResponse_XMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{52, 1} +// Deprecated: Use XSortedSetFetchResponse_XFound_XValues.ProtoReflect.Descriptor instead. +func (*XSortedSetFetchResponse_XFound_XValues) Descriptor() ([]byte, []int) { + return file_protos_cacheclient_proto_rawDescGZIP(), []int{57, 0, 1} +} + +func (x *XSortedSetFetchResponse_XFound_XValues) GetValues() [][]byte { + if x != nil { + return x.Values + } + return nil } type XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart struct { @@ -5652,7 +6319,7 @@ type XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart struct { func (x *XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) Reset() { *x = XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[97] + mi := &file_protos_cacheclient_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5665,7 +6332,7 @@ func (x *XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) String() str func (*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) ProtoMessage() {} func (x *XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[97] + mi := &file_protos_cacheclient_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5678,7 +6345,7 @@ func (x *XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) ProtoReflect // Deprecated: Use XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart.ProtoReflect.Descriptor instead. func (*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{54, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{59, 0} } func (x *XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart) GetResult() ECacheResult { @@ -5706,7 +6373,7 @@ type XSortedSetGetScoreResponse_XSortedSetFound struct { func (x *XSortedSetGetScoreResponse_XSortedSetFound) Reset() { *x = XSortedSetGetScoreResponse_XSortedSetFound{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[98] + mi := &file_protos_cacheclient_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5719,7 +6386,7 @@ func (x *XSortedSetGetScoreResponse_XSortedSetFound) String() string { func (*XSortedSetGetScoreResponse_XSortedSetFound) ProtoMessage() {} func (x *XSortedSetGetScoreResponse_XSortedSetFound) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[98] + mi := &file_protos_cacheclient_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5732,7 +6399,7 @@ func (x *XSortedSetGetScoreResponse_XSortedSetFound) ProtoReflect() protoreflect // Deprecated: Use XSortedSetGetScoreResponse_XSortedSetFound.ProtoReflect.Descriptor instead. func (*XSortedSetGetScoreResponse_XSortedSetFound) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{54, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{59, 1} } func (x *XSortedSetGetScoreResponse_XSortedSetFound) GetElements() []*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart { @@ -5751,7 +6418,7 @@ type XSortedSetGetScoreResponse_XSortedSetMissing struct { func (x *XSortedSetGetScoreResponse_XSortedSetMissing) Reset() { *x = XSortedSetGetScoreResponse_XSortedSetMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[99] + mi := &file_protos_cacheclient_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5764,7 +6431,7 @@ func (x *XSortedSetGetScoreResponse_XSortedSetMissing) String() string { func (*XSortedSetGetScoreResponse_XSortedSetMissing) ProtoMessage() {} func (x *XSortedSetGetScoreResponse_XSortedSetMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[99] + mi := &file_protos_cacheclient_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5777,7 +6444,7 @@ func (x *XSortedSetGetScoreResponse_XSortedSetMissing) ProtoReflect() protorefle // Deprecated: Use XSortedSetGetScoreResponse_XSortedSetMissing.ProtoReflect.Descriptor instead. func (*XSortedSetGetScoreResponse_XSortedSetMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{54, 2} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{59, 2} } type XSortedSetRemoveRequest_XAll struct { @@ -5789,7 +6456,7 @@ type XSortedSetRemoveRequest_XAll struct { func (x *XSortedSetRemoveRequest_XAll) Reset() { *x = XSortedSetRemoveRequest_XAll{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[100] + mi := &file_protos_cacheclient_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5802,7 +6469,7 @@ func (x *XSortedSetRemoveRequest_XAll) String() string { func (*XSortedSetRemoveRequest_XAll) ProtoMessage() {} func (x *XSortedSetRemoveRequest_XAll) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[100] + mi := &file_protos_cacheclient_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5815,7 +6482,7 @@ func (x *XSortedSetRemoveRequest_XAll) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetRemoveRequest_XAll.ProtoReflect.Descriptor instead. func (*XSortedSetRemoveRequest_XAll) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{55, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{60, 0} } type XSortedSetRemoveRequest_XSome struct { @@ -5823,13 +6490,13 @@ type XSortedSetRemoveRequest_XSome struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ElementName [][]byte `protobuf:"bytes,1,rep,name=element_name,json=elementName,proto3" json:"element_name,omitempty"` + Values [][]byte `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` } func (x *XSortedSetRemoveRequest_XSome) Reset() { *x = XSortedSetRemoveRequest_XSome{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[101] + mi := &file_protos_cacheclient_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5842,7 +6509,7 @@ func (x *XSortedSetRemoveRequest_XSome) String() string { func (*XSortedSetRemoveRequest_XSome) ProtoMessage() {} func (x *XSortedSetRemoveRequest_XSome) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[101] + mi := &file_protos_cacheclient_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5855,12 +6522,12 @@ func (x *XSortedSetRemoveRequest_XSome) ProtoReflect() protoreflect.Message { // Deprecated: Use XSortedSetRemoveRequest_XSome.ProtoReflect.Descriptor instead. func (*XSortedSetRemoveRequest_XSome) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{55, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{60, 1} } -func (x *XSortedSetRemoveRequest_XSome) GetElementName() [][]byte { +func (x *XSortedSetRemoveRequest_XSome) GetValues() [][]byte { if x != nil { - return x.ElementName + return x.Values } return nil } @@ -5871,13 +6538,16 @@ type XSortedSetGetRankResponse_XRankResponsePart struct { unknownFields protoimpl.UnknownFields Result ECacheResult `protobuf:"varint,1,opt,name=result,proto3,enum=cache_client.ECacheResult" json:"result,omitempty"` - Rank uint64 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` + // Rank is 0-based i.e. when sort order is descending the rank of the + // value with the highest score will be 0. Similarly for ascending order, + // value with the lowest score will have rank 0. + Rank uint64 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` } func (x *XSortedSetGetRankResponse_XRankResponsePart) Reset() { *x = XSortedSetGetRankResponse_XRankResponsePart{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[102] + mi := &file_protos_cacheclient_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5890,7 +6560,7 @@ func (x *XSortedSetGetRankResponse_XRankResponsePart) String() string { func (*XSortedSetGetRankResponse_XRankResponsePart) ProtoMessage() {} func (x *XSortedSetGetRankResponse_XRankResponsePart) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[102] + mi := &file_protos_cacheclient_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5903,7 +6573,7 @@ func (x *XSortedSetGetRankResponse_XRankResponsePart) ProtoReflect() protoreflec // Deprecated: Use XSortedSetGetRankResponse_XRankResponsePart.ProtoReflect.Descriptor instead. func (*XSortedSetGetRankResponse_XRankResponsePart) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{60, 0} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{65, 0} } func (x *XSortedSetGetRankResponse_XRankResponsePart) GetResult() ECacheResult { @@ -5929,7 +6599,7 @@ type XSortedSetGetRankResponse_XSortedSetMissing struct { func (x *XSortedSetGetRankResponse_XSortedSetMissing) Reset() { *x = XSortedSetGetRankResponse_XSortedSetMissing{} if protoimpl.UnsafeEnabled { - mi := &file_protos_cacheclient_proto_msgTypes[103] + mi := &file_protos_cacheclient_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5942,7 +6612,7 @@ func (x *XSortedSetGetRankResponse_XSortedSetMissing) String() string { func (*XSortedSetGetRankResponse_XSortedSetMissing) ProtoMessage() {} func (x *XSortedSetGetRankResponse_XSortedSetMissing) ProtoReflect() protoreflect.Message { - mi := &file_protos_cacheclient_proto_msgTypes[103] + mi := &file_protos_cacheclient_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5955,7 +6625,7 @@ func (x *XSortedSetGetRankResponse_XSortedSetMissing) ProtoReflect() protoreflec // Deprecated: Use XSortedSetGetRankResponse_XSortedSetMissing.ProtoReflect.Descriptor instead. func (*XSortedSetGetRankResponse_XSortedSetMissing) Descriptor() ([]byte, []int) { - return file_protos_cacheclient_proto_rawDescGZIP(), []int{60, 1} + return file_protos_cacheclient_proto_rawDescGZIP(), []int{65, 1} } var File_protos_cacheclient_proto protoreflect.FileDescriptor @@ -6199,537 +6869,635 @@ var file_protos_cacheclient_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x08, 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x05, - 0x0a, 0x03, 0x73, 0x65, 0x74, 0x22, 0xd2, 0x01, 0x0a, 0x1c, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x0a, 0x03, 0x73, 0x65, 0x74, 0x22, 0x4c, 0x0a, 0x13, 0x5f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, + 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x22, 0xdb, 0x01, 0x0a, 0x14, 0x5f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, + 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, + 0x47, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, + 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, + 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x1a, 0x0a, + 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x65, + 0x74, 0x22, 0xd2, 0x01, 0x0a, 0x1c, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, + 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, + 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x54, 0x74, 0x6c, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, + 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x12, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x54, 0x6f, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x40, 0x0a, 0x1d, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, - 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x72, 0x75, 0x6e, 0x63, - 0x61, 0x74, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x40, 0x0a, 0x1d, 0x5f, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, - 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, - 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x01, 0x0a, - 0x1b, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, - 0x65, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, - 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, 0x12, 0x33, 0x0a, - 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, - 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x74, - 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x69, - 0x7a, 0x65, 0x22, 0x3f, 0x0a, 0x1c, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, - 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x22, 0xc9, 0x01, 0x0a, 0x15, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, - 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, - 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, 0x12, 0x31, 0x0a, 0x15, - 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x72, 0x75, - 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0x39, 0x0a, 0x16, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, - 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xca, 0x01, 0x0a, 0x14, 0x5f, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, - 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, - 0x74, 0x6c, 0x12, 0x33, 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x66, - 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x13, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, - 0x74, 0x54, 0x6f, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x38, 0x0a, 0x15, 0x5f, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0x33, 0x0a, 0x14, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, + 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x01, 0x0a, 0x1b, 0x5f, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x29, 0x0a, + 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, + 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, 0x12, 0x33, 0x0a, 0x16, 0x74, 0x72, 0x75, + 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x72, 0x75, 0x6e, 0x63, + 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x3f, + 0x0a, 0x1c, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, + 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, + 0xc9, 0x01, 0x0a, 0x15, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x15, 0x5f, 0x4c, 0x69, 0x73, 0x74, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x10, + 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, + 0x65, 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x39, 0x0a, 0x16, 0x5f, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xca, 0x01, 0x0a, 0x14, 0x5f, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, + 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, 0x12, 0x33, + 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6e, 0x74, + 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, + 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x6f, 0x53, + 0x69, 0x7a, 0x65, 0x22, 0x38, 0x0a, 0x15, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, + 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x33, 0x0a, + 0x14, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x15, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, + 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, + 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x42, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x1e, - 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x6f, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x1a, 0x0a, - 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x22, 0x32, 0x0a, 0x13, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x14, 0x5f, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x41, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, - 0x6e, 0x64, 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, - 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x1c, 0x0a, 0x06, 0x5f, - 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x61, 0x63, 0x6b, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, - 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x43, 0x0a, - 0x0a, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, - 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x11, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x73, 0x6f, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x48, 0x00, 0x52, 0x04, 0x73, 0x6f, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x61, - 0x6c, 0x6c, 0x1a, 0x06, 0x0a, 0x04, 0x5f, 0x41, 0x6c, 0x6c, 0x1a, 0x3f, 0x0a, 0x0b, 0x5f, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x65, - 0x72, 0x61, 0x73, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x12, 0x5f, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, - 0x17, 0x61, 0x6c, 0x6c, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x57, 0x69, 0x74, - 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x22, 0x15, 0x0a, 0x13, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x0a, 0x11, 0x5f, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x5f, 0x4c, - 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, - 0x64, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, - 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x20, 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, - 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, - 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x31, - 0x0a, 0x12, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, + 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, + 0x12, 0x48, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x1e, 0x0a, 0x06, 0x5f, 0x46, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x32, + 0x0a, 0x13, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x14, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, + 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x66, + 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, + 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x47, + 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x1c, 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x62, 0x61, 0x63, 0x6b, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x0a, 0x5f, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x65, 0x67, 0x69, 0x6e, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x62, 0x65, + 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, + 0x01, 0x0a, 0x11, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x13, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x66, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, - 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x46, 0x0a, 0x07, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, + 0x65, 0x12, 0x41, 0x0a, 0x04, 0x73, 0x6f, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, + 0x73, 0x6f, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x5f, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x1a, 0x06, + 0x0a, 0x04, 0x5f, 0x41, 0x6c, 0x6c, 0x1a, 0x3f, 0x0a, 0x0b, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x61, 0x73, 0x65, + 0x22, 0x14, 0x0a, 0x12, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x12, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x6c, 0x6c, + 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x14, 0x61, 0x6c, + 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x15, 0x0a, 0x13, + 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, + 0x64, 0x22, 0xa4, 0x02, 0x0a, 0x11, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, + 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x55, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x11, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, + 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x55, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x01, 0x52, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x65, 0x64, 0x45, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x48, 0x01, 0x52, 0x0c, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x0d, 0x0a, 0x0b, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x65, + 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xf1, 0x02, 0x0a, 0x12, 0x5f, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0f, + 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, + 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x3f, 0x0a, 0x0d, + 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x01, 0x52, + 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x64, 0x12, 0x25, 0x0a, + 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x11, 0x48, 0x01, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x65, 0x45, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, + 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, + 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, 0x6c, + 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, + 0x0b, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x15, 0x0a, 0x13, + 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x6f, + 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, + 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x07, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x1a, 0x20, 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x11, 0x5f, 0x53, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x14, 0x5f, 0x53, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x08, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, - 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, - 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x54, 0x74, 0x6c, 0x22, 0x17, 0x0a, 0x15, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x74, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, - 0x07, 0x0a, 0x16, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, + 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x1a, 0x20, 0x0a, 0x06, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x42, 0x06, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x12, 0x5f, 0x4c, 0x69, 0x73, + 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x13, + 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, + 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x46, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x20, 0x0a, + 0x06, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x1a, + 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x22, 0x3f, 0x0a, 0x11, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x14, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x53, 0x65, 0x74, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, + 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, + 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x74, + 0x6c, 0x22, 0x17, 0x0a, 0x15, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x50, + 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, 0x08, 0x0a, 0x16, 0x5f, + 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x40, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x62, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, 0x52, 0x07, 0x62, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x4a, 0x0a, 0x08, 0x62, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x48, 0x00, 0x52, 0x07, 0x62, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x88, 0x02, 0x0a, 0x08, + 0x5f, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x43, 0x0a, 0x0f, 0x75, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x75, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, + 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x48, 0x00, 0x52, 0x13, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, + 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x65, 0x64, 0x48, 0x01, 0x52, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, + 0x64, 0x45, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x11, 0x48, 0x01, 0x52, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x45, 0x6e, + 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x07, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x05, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x1a, 0xb0, 0x03, 0x0a, 0x08, 0x5f, 0x42, 0x79, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, + 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, + 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x53, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, + 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x5f, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x00, 0x52, + 0x08, 0x6d, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x55, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x01, 0x52, 0x0c, 0x75, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x53, 0x0a, 0x09, 0x6d, 0x61, + 0x78, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x5f, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3c, 0x0a, + 0x06, 0x5f, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x6d, + 0x69, 0x6e, 0x42, 0x05, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x22, 0x26, 0x0a, 0x05, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x91, 0x04, 0x0a, 0x17, 0x5f, + 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, + 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4a, 0x0a, 0x07, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, + 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0xc9, 0x02, 0x0a, 0x06, 0x5f, 0x46, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x6e, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x5f, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x41, 0x6c, 0x6c, 0x48, 0x00, - 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x43, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x62, 0x79, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x2e, 0x5f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x11, 0x5f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x57, 0x69, + 0x74, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x21, 0x0a, 0x07, 0x5f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x42, 0x0c, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x22, 0x4e, + 0x0a, 0x19, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, + 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, + 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xcd, + 0x03, 0x0a, 0x1a, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, + 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x01, 0x52, 0x07, 0x62, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4a, 0x0a, 0x08, 0x62, 0x79, 0x5f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, + 0x56, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x6a, 0x0a, 0x1e, 0x5f, 0x53, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x1a, 0x76, 0x0a, 0x0f, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x63, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, - 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, - 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x01, 0x52, 0x07, 0x62, 0x79, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x1a, 0x06, 0x0a, 0x04, 0x5f, 0x41, 0x6c, 0x6c, 0x1a, 0x1e, 0x0a, 0x06, 0x5f, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x42, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0xa2, 0x03, 0x0a, 0x08, 0x5f, 0x42, 0x79, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x5f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x5f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x1a, - 0xf9, 0x01, 0x0a, 0x09, 0x5f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x56, 0x0a, - 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x5f, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x50, 0x0a, 0x03, 0x69, 0x6e, 0x66, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x42, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x5f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x5f, 0x49, 0x6e, 0x66, - 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x66, 0x1a, 0x32, 0x0a, 0x06, 0x5f, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x1a, 0x06, 0x0a, 0x04, 0x5f, - 0x49, 0x6e, 0x66, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x26, 0x0a, 0x05, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, - 0x47, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, - 0x47, 0x10, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x17, - 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x46, - 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4a, 0x0a, - 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x45, 0x0a, 0x06, 0x5f, 0x46, 0x6f, - 0x75, 0x6e, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x45, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x1a, 0x0a, 0x0a, 0x08, 0x5f, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, - 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x22, 0x59, 0x0a, 0x19, 0x5f, 0x53, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcd, 0x03, 0x0a, 0x1a, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x53, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, - 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x56, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, + 0x74, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x13, 0x0a, 0x11, 0x5f, + 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x42, 0x0c, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x22, 0xf3, + 0x01, 0x0a, 0x17, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, + 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x41, 0x6c, 0x6c, 0x48, 0x00, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x41, 0x0a, 0x04, 0x73, 0x6f, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x6d, 0x65, + 0x48, 0x00, 0x52, 0x04, 0x73, 0x6f, 0x6d, 0x65, 0x1a, 0x06, 0x0a, 0x04, 0x5f, 0x41, 0x6c, 0x6c, + 0x1a, 0x1f, 0x0a, 0x05, 0x5f, 0x53, 0x6f, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xb1, 0x01, 0x0a, 0x1a, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, + 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x54, 0x74, 0x6c, 0x22, 0x33, 0x0a, 0x1b, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x18, 0x5f, 0x53, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, + 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x26, 0x0a, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x01, 0x22, 0xcc, 0x02, 0x0a, 0x19, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, - 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x6a, - 0x0a, 0x1e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x74, - 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x45, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x76, 0x0a, 0x0f, 0x5f, 0x53, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x63, 0x0a, - 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x47, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x1a, 0x13, 0x0a, 0x11, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x5f, 0x73, 0x65, 0x74, 0x22, 0xfe, 0x01, 0x0a, 0x17, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x5f, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x41, 0x0a, 0x04, - 0x73, 0x6f, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x63, - 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6f, 0x6d, 0x65, 0x1a, - 0x06, 0x0a, 0x04, 0x5f, 0x41, 0x6c, 0x6c, 0x1a, 0x2a, 0x0a, 0x05, 0x5f, 0x53, 0x6f, 0x6d, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x1a, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, - 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x74, 0x6c, 0x5f, 0x6d, - 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0f, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x74, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x74, 0x6c, 0x22, 0x33, 0x0a, 0x1b, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, - 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x58, 0x0a, 0x18, 0x5f, 0x53, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x19, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5e, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, - 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x6b, - 0x12, 0x55, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, - 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x5b, 0x0a, 0x11, 0x5f, 0x52, 0x61, 0x6e, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x32, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x72, 0x61, 0x6e, 0x6b, 0x1a, 0x13, 0x0a, 0x11, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, - 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x72, 0x61, 0x6e, - 0x6b, 0x2a, 0x3c, 0x0a, 0x0c, 0x45, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x06, - 0x0a, 0x02, 0x4f, 0x6b, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x69, 0x74, 0x10, 0x02, 0x12, - 0x08, 0x0a, 0x04, 0x4d, 0x69, 0x73, 0x73, 0x10, 0x03, 0x22, 0x04, 0x08, 0x04, 0x10, 0x06, 0x32, - 0xef, 0x14, 0x0a, 0x03, 0x53, 0x63, 0x73, 0x12, 0x3e, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x19, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x19, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x49, 0x66, - 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x49, 0x66, 0x4e, - 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x53, 0x65, 0x74, 0x49, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x50, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x49, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x72, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x62, 0x0a, 0x0f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x63, 0x61, 0x63, + 0x2e, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, + 0x72, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, + 0x6b, 0x12, 0x55, 0x0a, 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x5f, 0x53, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, + 0x07, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x5b, 0x0a, 0x11, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x32, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x1a, 0x13, 0x0a, 0x11, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x72, 0x61, + 0x6e, 0x6b, 0x2a, 0x3c, 0x0a, 0x0c, 0x45, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, + 0x06, 0x0a, 0x02, 0x4f, 0x6b, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x69, 0x74, 0x10, 0x02, + 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x69, 0x73, 0x73, 0x10, 0x03, 0x22, 0x04, 0x08, 0x04, 0x10, 0x06, + 0x32, 0x9c, 0x16, 0x0a, 0x03, 0x53, 0x63, 0x73, 0x12, 0x3e, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, + 0x19, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, + 0x19, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x49, + 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x49, 0x66, + 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x53, 0x65, 0x74, 0x49, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x06, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, - 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x10, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, - 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x72, 0x79, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, + 0x79, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x10, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x08, 0x53, + 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x08, 0x53, 0x65, - 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, + 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x08, 0x53, 0x65, 0x74, - 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x44, - 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x44, 0x69, 0x66, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, - 0x65, 0x74, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, - 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, - 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, + 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x44, 0x69, + 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x53, 0x65, 0x74, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x5c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, + 0x12, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, + 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, 0x6b, 0x12, 0x22, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, + 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x75, 0x73, 0x68, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, - 0x42, 0x61, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x42, 0x61, 0x63, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x73, - 0x68, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x59, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, - 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x12, + 0x74, 0x50, 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, + 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x70, 0x42, 0x61, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, + 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x4c, 0x69, 0x73, - 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0a, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x71, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, - 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, - 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, - 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x12, 0x29, 0x2e, 0x63, 0x61, 0x63, - 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, - 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x50, 0x75, 0x74, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x50, 0x75, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, - 0x74, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, - 0x0a, 0x0e, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x12, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x68, 0x0a, 0x11, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, - 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0f, 0x53, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x25, 0x2e, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, - 0x12, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x10, 0x53, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x26, + 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x14, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6e, + 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, + 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x12, 0x29, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, + 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x74, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x50, 0x75, + 0x74, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x50, 0x75, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x50, + 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0e, + 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, - 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x64, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x68, 0x71, 0x2f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x64, 0x6b, 0x2d, 0x67, 0x6f, 0x3b, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x67, 0x6f, 0xaa, 0x02, 0x1a, 0x4d, 0x6f, 0x6d, - 0x65, 0x6e, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, + 0x11, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0f, 0x53, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x12, 0x53, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x10, 0x53, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x47, 0x65, + 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, + 0x64, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6d, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x68, 0x71, 0x2f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x64, 0x6b, 0x2d, 0x67, 0x6f, 0x3b, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x67, 0x6f, 0xaa, 0x02, 0x1a, 0x4d, 0x6f, 0x6d, 0x65, 0x6e, + 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6744,235 +7512,254 @@ func file_protos_cacheclient_proto_rawDescGZIP() []byte { return file_protos_cacheclient_proto_rawDescData } -var file_protos_cacheclient_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protos_cacheclient_proto_msgTypes = make([]protoimpl.MessageInfo, 104) +var file_protos_cacheclient_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_protos_cacheclient_proto_msgTypes = make([]protoimpl.MessageInfo, 109) var file_protos_cacheclient_proto_goTypes = []interface{}{ (ECacheResult)(0), // 0: cache_client.ECacheResult (XSortedSetFetchRequest_Order)(0), // 1: cache_client._SortedSetFetchRequest.Order - (*XGetRequest)(nil), // 2: cache_client._GetRequest - (*XGetResponse)(nil), // 3: cache_client._GetResponse - (*XDeleteRequest)(nil), // 4: cache_client._DeleteRequest - (*XDeleteResponse)(nil), // 5: cache_client._DeleteResponse - (*XSetRequest)(nil), // 6: cache_client._SetRequest - (*XSetResponse)(nil), // 7: cache_client._SetResponse - (*XSetIfNotExistsRequest)(nil), // 8: cache_client._SetIfNotExistsRequest - (*XSetIfNotExistsResponse)(nil), // 9: cache_client._SetIfNotExistsResponse - (*XIncrementRequest)(nil), // 10: cache_client._IncrementRequest - (*XIncrementResponse)(nil), // 11: cache_client._IncrementResponse - (*XDictionaryGetRequest)(nil), // 12: cache_client._DictionaryGetRequest - (*XDictionaryGetResponse)(nil), // 13: cache_client._DictionaryGetResponse - (*XDictionaryFetchRequest)(nil), // 14: cache_client._DictionaryFetchRequest - (*XDictionaryFieldValuePair)(nil), // 15: cache_client._DictionaryFieldValuePair - (*XDictionaryFetchResponse)(nil), // 16: cache_client._DictionaryFetchResponse - (*XDictionarySetRequest)(nil), // 17: cache_client._DictionarySetRequest - (*XDictionarySetResponse)(nil), // 18: cache_client._DictionarySetResponse - (*XDictionaryIncrementRequest)(nil), // 19: cache_client._DictionaryIncrementRequest - (*XDictionaryIncrementResponse)(nil), // 20: cache_client._DictionaryIncrementResponse - (*XDictionaryDeleteRequest)(nil), // 21: cache_client._DictionaryDeleteRequest - (*XDictionaryDeleteResponse)(nil), // 22: cache_client._DictionaryDeleteResponse - (*XSetFetchRequest)(nil), // 23: cache_client._SetFetchRequest - (*XSetFetchResponse)(nil), // 24: cache_client._SetFetchResponse - (*XSetUnionRequest)(nil), // 25: cache_client._SetUnionRequest - (*XSetUnionResponse)(nil), // 26: cache_client._SetUnionResponse - (*XSetDifferenceRequest)(nil), // 27: cache_client._SetDifferenceRequest - (*XSetDifferenceResponse)(nil), // 28: cache_client._SetDifferenceResponse - (*XListConcatenateFrontRequest)(nil), // 29: cache_client._ListConcatenateFrontRequest - (*XListConcatenateFrontResponse)(nil), // 30: cache_client._ListConcatenateFrontResponse - (*XListConcatenateBackRequest)(nil), // 31: cache_client._ListConcatenateBackRequest - (*XListConcatenateBackResponse)(nil), // 32: cache_client._ListConcatenateBackResponse - (*XListPushFrontRequest)(nil), // 33: cache_client._ListPushFrontRequest - (*XListPushFrontResponse)(nil), // 34: cache_client._ListPushFrontResponse - (*XListPushBackRequest)(nil), // 35: cache_client._ListPushBackRequest - (*XListPushBackResponse)(nil), // 36: cache_client._ListPushBackResponse - (*XListPopFrontRequest)(nil), // 37: cache_client._ListPopFrontRequest - (*XListPopFrontResponse)(nil), // 38: cache_client._ListPopFrontResponse - (*XListPopBackRequest)(nil), // 39: cache_client._ListPopBackRequest - (*XListPopBackResponse)(nil), // 40: cache_client._ListPopBackResponse - (*XListRange)(nil), // 41: cache_client._ListRange - (*XListEraseRequest)(nil), // 42: cache_client._ListEraseRequest - (*XListEraseResponse)(nil), // 43: cache_client._ListEraseResponse - (*XListRemoveRequest)(nil), // 44: cache_client._ListRemoveRequest - (*XListRemoveResponse)(nil), // 45: cache_client._ListRemoveResponse - (*XListFetchRequest)(nil), // 46: cache_client._ListFetchRequest - (*XListFetchResponse)(nil), // 47: cache_client._ListFetchResponse - (*XListLengthRequest)(nil), // 48: cache_client._ListLengthRequest - (*XListLengthResponse)(nil), // 49: cache_client._ListLengthResponse - (*XSortedSetElement)(nil), // 50: cache_client._SortedSetElement - (*XSortedSetPutRequest)(nil), // 51: cache_client._SortedSetPutRequest - (*XSortedSetPutResponse)(nil), // 52: cache_client._SortedSetPutResponse - (*XSortedSetFetchRequest)(nil), // 53: cache_client._SortedSetFetchRequest - (*XSortedSetFetchResponse)(nil), // 54: cache_client._SortedSetFetchResponse - (*XSortedSetGetScoreRequest)(nil), // 55: cache_client._SortedSetGetScoreRequest - (*XSortedSetGetScoreResponse)(nil), // 56: cache_client._SortedSetGetScoreResponse - (*XSortedSetRemoveRequest)(nil), // 57: cache_client._SortedSetRemoveRequest - (*XSortedSetRemoveResponse)(nil), // 58: cache_client._SortedSetRemoveResponse - (*XSortedSetIncrementRequest)(nil), // 59: cache_client._SortedSetIncrementRequest - (*XSortedSetIncrementResponse)(nil), // 60: cache_client._SortedSetIncrementResponse - (*XSortedSetGetRankRequest)(nil), // 61: cache_client._SortedSetGetRankRequest - (*XSortedSetGetRankResponse)(nil), // 62: cache_client._SortedSetGetRankResponse - (*XSetIfNotExistsResponse_XStored)(nil), // 63: cache_client._SetIfNotExistsResponse._Stored - (*XSetIfNotExistsResponse_XNotStored)(nil), // 64: cache_client._SetIfNotExistsResponse._NotStored - (*XDictionaryGetResponse_XDictionaryGetResponsePart)(nil), // 65: cache_client._DictionaryGetResponse._DictionaryGetResponsePart - (*XDictionaryGetResponse_XFound)(nil), // 66: cache_client._DictionaryGetResponse._Found - (*XDictionaryGetResponse_XMissing)(nil), // 67: cache_client._DictionaryGetResponse._Missing - (*XDictionaryFetchResponse_XFound)(nil), // 68: cache_client._DictionaryFetchResponse._Found - (*XDictionaryFetchResponse_XMissing)(nil), // 69: cache_client._DictionaryFetchResponse._Missing - (*XDictionaryDeleteRequest_Some)(nil), // 70: cache_client._DictionaryDeleteRequest.Some - (*XDictionaryDeleteRequest_All)(nil), // 71: cache_client._DictionaryDeleteRequest.All - (*XSetFetchResponse_XFound)(nil), // 72: cache_client._SetFetchResponse._Found - (*XSetFetchResponse_XMissing)(nil), // 73: cache_client._SetFetchResponse._Missing - (*XSetDifferenceRequest_XMinuend)(nil), // 74: cache_client._SetDifferenceRequest._Minuend - (*XSetDifferenceRequest_XSubtrahend)(nil), // 75: cache_client._SetDifferenceRequest._Subtrahend - (*XSetDifferenceRequest_XSubtrahend_XSet)(nil), // 76: cache_client._SetDifferenceRequest._Subtrahend._Set - (*XSetDifferenceRequest_XSubtrahend_XIdentity)(nil), // 77: cache_client._SetDifferenceRequest._Subtrahend._Identity - (*XSetDifferenceResponse_XFound)(nil), // 78: cache_client._SetDifferenceResponse._Found - (*XSetDifferenceResponse_XMissing)(nil), // 79: cache_client._SetDifferenceResponse._Missing - (*XListPopFrontResponse_XFound)(nil), // 80: cache_client._ListPopFrontResponse._Found - (*XListPopFrontResponse_XMissing)(nil), // 81: cache_client._ListPopFrontResponse._Missing - (*XListPopBackResponse_XFound)(nil), // 82: cache_client._ListPopBackResponse._Found - (*XListPopBackResponse_XMissing)(nil), // 83: cache_client._ListPopBackResponse._Missing - (*XListEraseRequest_XAll)(nil), // 84: cache_client._ListEraseRequest._All - (*XListEraseRequest_XListRanges)(nil), // 85: cache_client._ListEraseRequest._ListRanges - (*XListFetchResponse_XFound)(nil), // 86: cache_client._ListFetchResponse._Found - (*XListFetchResponse_XMissing)(nil), // 87: cache_client._ListFetchResponse._Missing - (*XListLengthResponse_XFound)(nil), // 88: cache_client._ListLengthResponse._Found - (*XListLengthResponse_XMissing)(nil), // 89: cache_client._ListLengthResponse._Missing - (*XSortedSetFetchRequest_XAll)(nil), // 90: cache_client._SortedSetFetchRequest._All - (*XSortedSetFetchRequest_XLimit)(nil), // 91: cache_client._SortedSetFetchRequest._Limit - (*XSortedSetFetchRequest_XByIndex)(nil), // 92: cache_client._SortedSetFetchRequest._ByIndex - (*XSortedSetFetchRequest_XByScore)(nil), // 93: cache_client._SortedSetFetchRequest._ByScore - (*XSortedSetFetchRequest_XByScore_XEndpoint)(nil), // 94: cache_client._SortedSetFetchRequest._ByScore._Endpoint - (*XSortedSetFetchRequest_XByScore_XEndpoint_XScore)(nil), // 95: cache_client._SortedSetFetchRequest._ByScore._Endpoint._Score - (*XSortedSetFetchRequest_XByScore_XEndpoint_XInf)(nil), // 96: cache_client._SortedSetFetchRequest._ByScore._Endpoint._Inf - (*XSortedSetFetchResponse_XFound)(nil), // 97: cache_client._SortedSetFetchResponse._Found - (*XSortedSetFetchResponse_XMissing)(nil), // 98: cache_client._SortedSetFetchResponse._Missing - (*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart)(nil), // 99: cache_client._SortedSetGetScoreResponse._SortedSetGetScoreResponsePart - (*XSortedSetGetScoreResponse_XSortedSetFound)(nil), // 100: cache_client._SortedSetGetScoreResponse._SortedSetFound - (*XSortedSetGetScoreResponse_XSortedSetMissing)(nil), // 101: cache_client._SortedSetGetScoreResponse._SortedSetMissing - (*XSortedSetRemoveRequest_XAll)(nil), // 102: cache_client._SortedSetRemoveRequest._All - (*XSortedSetRemoveRequest_XSome)(nil), // 103: cache_client._SortedSetRemoveRequest._Some - (*XSortedSetGetRankResponse_XRankResponsePart)(nil), // 104: cache_client._SortedSetGetRankResponse._RankResponsePart - (*XSortedSetGetRankResponse_XSortedSetMissing)(nil), // 105: cache_client._SortedSetGetRankResponse._SortedSetMissing + (XSortedSetGetRankRequest_Order)(0), // 2: cache_client._SortedSetGetRankRequest.Order + (*XGetRequest)(nil), // 3: cache_client._GetRequest + (*XGetResponse)(nil), // 4: cache_client._GetResponse + (*XDeleteRequest)(nil), // 5: cache_client._DeleteRequest + (*XDeleteResponse)(nil), // 6: cache_client._DeleteResponse + (*XSetRequest)(nil), // 7: cache_client._SetRequest + (*XSetResponse)(nil), // 8: cache_client._SetResponse + (*XSetIfNotExistsRequest)(nil), // 9: cache_client._SetIfNotExistsRequest + (*XSetIfNotExistsResponse)(nil), // 10: cache_client._SetIfNotExistsResponse + (*XIncrementRequest)(nil), // 11: cache_client._IncrementRequest + (*XIncrementResponse)(nil), // 12: cache_client._IncrementResponse + (*XDictionaryGetRequest)(nil), // 13: cache_client._DictionaryGetRequest + (*XDictionaryGetResponse)(nil), // 14: cache_client._DictionaryGetResponse + (*XDictionaryFetchRequest)(nil), // 15: cache_client._DictionaryFetchRequest + (*XDictionaryFieldValuePair)(nil), // 16: cache_client._DictionaryFieldValuePair + (*XDictionaryFetchResponse)(nil), // 17: cache_client._DictionaryFetchResponse + (*XDictionarySetRequest)(nil), // 18: cache_client._DictionarySetRequest + (*XDictionarySetResponse)(nil), // 19: cache_client._DictionarySetResponse + (*XDictionaryIncrementRequest)(nil), // 20: cache_client._DictionaryIncrementRequest + (*XDictionaryIncrementResponse)(nil), // 21: cache_client._DictionaryIncrementResponse + (*XDictionaryDeleteRequest)(nil), // 22: cache_client._DictionaryDeleteRequest + (*XDictionaryDeleteResponse)(nil), // 23: cache_client._DictionaryDeleteResponse + (*XSetFetchRequest)(nil), // 24: cache_client._SetFetchRequest + (*XSetFetchResponse)(nil), // 25: cache_client._SetFetchResponse + (*XSetUnionRequest)(nil), // 26: cache_client._SetUnionRequest + (*XSetUnionResponse)(nil), // 27: cache_client._SetUnionResponse + (*XSetDifferenceRequest)(nil), // 28: cache_client._SetDifferenceRequest + (*XSetDifferenceResponse)(nil), // 29: cache_client._SetDifferenceResponse + (*XSetContainsRequest)(nil), // 30: cache_client._SetContainsRequest + (*XSetContainsResponse)(nil), // 31: cache_client._SetContainsResponse + (*XListConcatenateFrontRequest)(nil), // 32: cache_client._ListConcatenateFrontRequest + (*XListConcatenateFrontResponse)(nil), // 33: cache_client._ListConcatenateFrontResponse + (*XListConcatenateBackRequest)(nil), // 34: cache_client._ListConcatenateBackRequest + (*XListConcatenateBackResponse)(nil), // 35: cache_client._ListConcatenateBackResponse + (*XListPushFrontRequest)(nil), // 36: cache_client._ListPushFrontRequest + (*XListPushFrontResponse)(nil), // 37: cache_client._ListPushFrontResponse + (*XListPushBackRequest)(nil), // 38: cache_client._ListPushBackRequest + (*XListPushBackResponse)(nil), // 39: cache_client._ListPushBackResponse + (*XListPopFrontRequest)(nil), // 40: cache_client._ListPopFrontRequest + (*XListPopFrontResponse)(nil), // 41: cache_client._ListPopFrontResponse + (*XListPopBackRequest)(nil), // 42: cache_client._ListPopBackRequest + (*XListPopBackResponse)(nil), // 43: cache_client._ListPopBackResponse + (*XListRange)(nil), // 44: cache_client._ListRange + (*XListEraseRequest)(nil), // 45: cache_client._ListEraseRequest + (*XListEraseResponse)(nil), // 46: cache_client._ListEraseResponse + (*XListRemoveRequest)(nil), // 47: cache_client._ListRemoveRequest + (*XListRemoveResponse)(nil), // 48: cache_client._ListRemoveResponse + (*XUnbounded)(nil), // 49: cache_client._Unbounded + (*XListFetchRequest)(nil), // 50: cache_client._ListFetchRequest + (*XListRetainRequest)(nil), // 51: cache_client._ListRetainRequest + (*XListRetainResponse)(nil), // 52: cache_client._ListRetainResponse + (*XListFetchResponse)(nil), // 53: cache_client._ListFetchResponse + (*XListLengthRequest)(nil), // 54: cache_client._ListLengthRequest + (*XListLengthResponse)(nil), // 55: cache_client._ListLengthResponse + (*XSortedSetElement)(nil), // 56: cache_client._SortedSetElement + (*XSortedSetPutRequest)(nil), // 57: cache_client._SortedSetPutRequest + (*XSortedSetPutResponse)(nil), // 58: cache_client._SortedSetPutResponse + (*XSortedSetFetchRequest)(nil), // 59: cache_client._SortedSetFetchRequest + (*XSortedSetFetchResponse)(nil), // 60: cache_client._SortedSetFetchResponse + (*XSortedSetGetScoreRequest)(nil), // 61: cache_client._SortedSetGetScoreRequest + (*XSortedSetGetScoreResponse)(nil), // 62: cache_client._SortedSetGetScoreResponse + (*XSortedSetRemoveRequest)(nil), // 63: cache_client._SortedSetRemoveRequest + (*XSortedSetRemoveResponse)(nil), // 64: cache_client._SortedSetRemoveResponse + (*XSortedSetIncrementRequest)(nil), // 65: cache_client._SortedSetIncrementRequest + (*XSortedSetIncrementResponse)(nil), // 66: cache_client._SortedSetIncrementResponse + (*XSortedSetGetRankRequest)(nil), // 67: cache_client._SortedSetGetRankRequest + (*XSortedSetGetRankResponse)(nil), // 68: cache_client._SortedSetGetRankResponse + (*XSetIfNotExistsResponse_XStored)(nil), // 69: cache_client._SetIfNotExistsResponse._Stored + (*XSetIfNotExistsResponse_XNotStored)(nil), // 70: cache_client._SetIfNotExistsResponse._NotStored + (*XDictionaryGetResponse_XDictionaryGetResponsePart)(nil), // 71: cache_client._DictionaryGetResponse._DictionaryGetResponsePart + (*XDictionaryGetResponse_XFound)(nil), // 72: cache_client._DictionaryGetResponse._Found + (*XDictionaryGetResponse_XMissing)(nil), // 73: cache_client._DictionaryGetResponse._Missing + (*XDictionaryFetchResponse_XFound)(nil), // 74: cache_client._DictionaryFetchResponse._Found + (*XDictionaryFetchResponse_XMissing)(nil), // 75: cache_client._DictionaryFetchResponse._Missing + (*XDictionaryDeleteRequest_Some)(nil), // 76: cache_client._DictionaryDeleteRequest.Some + (*XDictionaryDeleteRequest_All)(nil), // 77: cache_client._DictionaryDeleteRequest.All + (*XSetFetchResponse_XFound)(nil), // 78: cache_client._SetFetchResponse._Found + (*XSetFetchResponse_XMissing)(nil), // 79: cache_client._SetFetchResponse._Missing + (*XSetDifferenceRequest_XMinuend)(nil), // 80: cache_client._SetDifferenceRequest._Minuend + (*XSetDifferenceRequest_XSubtrahend)(nil), // 81: cache_client._SetDifferenceRequest._Subtrahend + (*XSetDifferenceRequest_XSubtrahend_XSet)(nil), // 82: cache_client._SetDifferenceRequest._Subtrahend._Set + (*XSetDifferenceRequest_XSubtrahend_XIdentity)(nil), // 83: cache_client._SetDifferenceRequest._Subtrahend._Identity + (*XSetDifferenceResponse_XFound)(nil), // 84: cache_client._SetDifferenceResponse._Found + (*XSetDifferenceResponse_XMissing)(nil), // 85: cache_client._SetDifferenceResponse._Missing + (*XSetContainsResponse_XFound)(nil), // 86: cache_client._SetContainsResponse._Found + (*XSetContainsResponse_XMissing)(nil), // 87: cache_client._SetContainsResponse._Missing + (*XListPopFrontResponse_XFound)(nil), // 88: cache_client._ListPopFrontResponse._Found + (*XListPopFrontResponse_XMissing)(nil), // 89: cache_client._ListPopFrontResponse._Missing + (*XListPopBackResponse_XFound)(nil), // 90: cache_client._ListPopBackResponse._Found + (*XListPopBackResponse_XMissing)(nil), // 91: cache_client._ListPopBackResponse._Missing + (*XListEraseRequest_XAll)(nil), // 92: cache_client._ListEraseRequest._All + (*XListEraseRequest_XListRanges)(nil), // 93: cache_client._ListEraseRequest._ListRanges + (*XListFetchResponse_XFound)(nil), // 94: cache_client._ListFetchResponse._Found + (*XListFetchResponse_XMissing)(nil), // 95: cache_client._ListFetchResponse._Missing + (*XListLengthResponse_XFound)(nil), // 96: cache_client._ListLengthResponse._Found + (*XListLengthResponse_XMissing)(nil), // 97: cache_client._ListLengthResponse._Missing + (*XSortedSetFetchRequest_XByIndex)(nil), // 98: cache_client._SortedSetFetchRequest._ByIndex + (*XSortedSetFetchRequest_XByScore)(nil), // 99: cache_client._SortedSetFetchRequest._ByScore + (*XSortedSetFetchRequest_XByScore_XScore)(nil), // 100: cache_client._SortedSetFetchRequest._ByScore._Score + (*XSortedSetFetchResponse_XFound)(nil), // 101: cache_client._SortedSetFetchResponse._Found + (*XSortedSetFetchResponse_XMissing)(nil), // 102: cache_client._SortedSetFetchResponse._Missing + (*XSortedSetFetchResponse_XFound_XValuesWithScores)(nil), // 103: cache_client._SortedSetFetchResponse._Found._ValuesWithScores + (*XSortedSetFetchResponse_XFound_XValues)(nil), // 104: cache_client._SortedSetFetchResponse._Found._Values + (*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart)(nil), // 105: cache_client._SortedSetGetScoreResponse._SortedSetGetScoreResponsePart + (*XSortedSetGetScoreResponse_XSortedSetFound)(nil), // 106: cache_client._SortedSetGetScoreResponse._SortedSetFound + (*XSortedSetGetScoreResponse_XSortedSetMissing)(nil), // 107: cache_client._SortedSetGetScoreResponse._SortedSetMissing + (*XSortedSetRemoveRequest_XAll)(nil), // 108: cache_client._SortedSetRemoveRequest._All + (*XSortedSetRemoveRequest_XSome)(nil), // 109: cache_client._SortedSetRemoveRequest._Some + (*XSortedSetGetRankResponse_XRankResponsePart)(nil), // 110: cache_client._SortedSetGetRankResponse._RankResponsePart + (*XSortedSetGetRankResponse_XSortedSetMissing)(nil), // 111: cache_client._SortedSetGetRankResponse._SortedSetMissing } var file_protos_cacheclient_proto_depIdxs = []int32{ 0, // 0: cache_client._GetResponse.result:type_name -> cache_client.ECacheResult 0, // 1: cache_client._SetResponse.result:type_name -> cache_client.ECacheResult - 63, // 2: cache_client._SetIfNotExistsResponse.stored:type_name -> cache_client._SetIfNotExistsResponse._Stored - 64, // 3: cache_client._SetIfNotExistsResponse.not_stored:type_name -> cache_client._SetIfNotExistsResponse._NotStored - 66, // 4: cache_client._DictionaryGetResponse.found:type_name -> cache_client._DictionaryGetResponse._Found - 67, // 5: cache_client._DictionaryGetResponse.missing:type_name -> cache_client._DictionaryGetResponse._Missing - 68, // 6: cache_client._DictionaryFetchResponse.found:type_name -> cache_client._DictionaryFetchResponse._Found - 69, // 7: cache_client._DictionaryFetchResponse.missing:type_name -> cache_client._DictionaryFetchResponse._Missing - 15, // 8: cache_client._DictionarySetRequest.items:type_name -> cache_client._DictionaryFieldValuePair - 70, // 9: cache_client._DictionaryDeleteRequest.some:type_name -> cache_client._DictionaryDeleteRequest.Some - 71, // 10: cache_client._DictionaryDeleteRequest.all:type_name -> cache_client._DictionaryDeleteRequest.All - 72, // 11: cache_client._SetFetchResponse.found:type_name -> cache_client._SetFetchResponse._Found - 73, // 12: cache_client._SetFetchResponse.missing:type_name -> cache_client._SetFetchResponse._Missing - 74, // 13: cache_client._SetDifferenceRequest.minuend:type_name -> cache_client._SetDifferenceRequest._Minuend - 75, // 14: cache_client._SetDifferenceRequest.subtrahend:type_name -> cache_client._SetDifferenceRequest._Subtrahend - 78, // 15: cache_client._SetDifferenceResponse.found:type_name -> cache_client._SetDifferenceResponse._Found - 79, // 16: cache_client._SetDifferenceResponse.missing:type_name -> cache_client._SetDifferenceResponse._Missing - 80, // 17: cache_client._ListPopFrontResponse.found:type_name -> cache_client._ListPopFrontResponse._Found - 81, // 18: cache_client._ListPopFrontResponse.missing:type_name -> cache_client._ListPopFrontResponse._Missing - 82, // 19: cache_client._ListPopBackResponse.found:type_name -> cache_client._ListPopBackResponse._Found - 83, // 20: cache_client._ListPopBackResponse.missing:type_name -> cache_client._ListPopBackResponse._Missing - 85, // 21: cache_client._ListEraseRequest.some:type_name -> cache_client._ListEraseRequest._ListRanges - 84, // 22: cache_client._ListEraseRequest.all:type_name -> cache_client._ListEraseRequest._All - 86, // 23: cache_client._ListFetchResponse.found:type_name -> cache_client._ListFetchResponse._Found - 87, // 24: cache_client._ListFetchResponse.missing:type_name -> cache_client._ListFetchResponse._Missing - 88, // 25: cache_client._ListLengthResponse.found:type_name -> cache_client._ListLengthResponse._Found - 89, // 26: cache_client._ListLengthResponse.missing:type_name -> cache_client._ListLengthResponse._Missing - 50, // 27: cache_client._SortedSetPutRequest.elements:type_name -> cache_client._SortedSetElement - 1, // 28: cache_client._SortedSetFetchRequest.order:type_name -> cache_client._SortedSetFetchRequest.Order - 90, // 29: cache_client._SortedSetFetchRequest.all:type_name -> cache_client._SortedSetFetchRequest._All - 91, // 30: cache_client._SortedSetFetchRequest.limit:type_name -> cache_client._SortedSetFetchRequest._Limit - 92, // 31: cache_client._SortedSetFetchRequest.by_index:type_name -> cache_client._SortedSetFetchRequest._ByIndex - 93, // 32: cache_client._SortedSetFetchRequest.by_score:type_name -> cache_client._SortedSetFetchRequest._ByScore - 97, // 33: cache_client._SortedSetFetchResponse.found:type_name -> cache_client._SortedSetFetchResponse._Found - 98, // 34: cache_client._SortedSetFetchResponse.missing:type_name -> cache_client._SortedSetFetchResponse._Missing - 100, // 35: cache_client._SortedSetGetScoreResponse.found:type_name -> cache_client._SortedSetGetScoreResponse._SortedSetFound - 101, // 36: cache_client._SortedSetGetScoreResponse.missing:type_name -> cache_client._SortedSetGetScoreResponse._SortedSetMissing - 102, // 37: cache_client._SortedSetRemoveRequest.all:type_name -> cache_client._SortedSetRemoveRequest._All - 103, // 38: cache_client._SortedSetRemoveRequest.some:type_name -> cache_client._SortedSetRemoveRequest._Some - 104, // 39: cache_client._SortedSetGetRankResponse.element_rank:type_name -> cache_client._SortedSetGetRankResponse._RankResponsePart - 105, // 40: cache_client._SortedSetGetRankResponse.missing:type_name -> cache_client._SortedSetGetRankResponse._SortedSetMissing - 0, // 41: cache_client._DictionaryGetResponse._DictionaryGetResponsePart.result:type_name -> cache_client.ECacheResult - 65, // 42: cache_client._DictionaryGetResponse._Found.items:type_name -> cache_client._DictionaryGetResponse._DictionaryGetResponsePart - 15, // 43: cache_client._DictionaryFetchResponse._Found.items:type_name -> cache_client._DictionaryFieldValuePair - 76, // 44: cache_client._SetDifferenceRequest._Subtrahend.set:type_name -> cache_client._SetDifferenceRequest._Subtrahend._Set - 77, // 45: cache_client._SetDifferenceRequest._Subtrahend.identity:type_name -> cache_client._SetDifferenceRequest._Subtrahend._Identity - 41, // 46: cache_client._ListEraseRequest._ListRanges.ranges:type_name -> cache_client._ListRange - 94, // 47: cache_client._SortedSetFetchRequest._ByScore.start:type_name -> cache_client._SortedSetFetchRequest._ByScore._Endpoint - 94, // 48: cache_client._SortedSetFetchRequest._ByScore.stop:type_name -> cache_client._SortedSetFetchRequest._ByScore._Endpoint - 95, // 49: cache_client._SortedSetFetchRequest._ByScore._Endpoint.score:type_name -> cache_client._SortedSetFetchRequest._ByScore._Endpoint._Score - 96, // 50: cache_client._SortedSetFetchRequest._ByScore._Endpoint.inf:type_name -> cache_client._SortedSetFetchRequest._ByScore._Endpoint._Inf - 50, // 51: cache_client._SortedSetFetchResponse._Found.elements:type_name -> cache_client._SortedSetElement - 0, // 52: cache_client._SortedSetGetScoreResponse._SortedSetGetScoreResponsePart.result:type_name -> cache_client.ECacheResult - 99, // 53: cache_client._SortedSetGetScoreResponse._SortedSetFound.elements:type_name -> cache_client._SortedSetGetScoreResponse._SortedSetGetScoreResponsePart - 0, // 54: cache_client._SortedSetGetRankResponse._RankResponsePart.result:type_name -> cache_client.ECacheResult - 2, // 55: cache_client.Scs.Get:input_type -> cache_client._GetRequest - 6, // 56: cache_client.Scs.Set:input_type -> cache_client._SetRequest - 8, // 57: cache_client.Scs.SetIfNotExists:input_type -> cache_client._SetIfNotExistsRequest - 4, // 58: cache_client.Scs.Delete:input_type -> cache_client._DeleteRequest - 10, // 59: cache_client.Scs.Increment:input_type -> cache_client._IncrementRequest - 12, // 60: cache_client.Scs.DictionaryGet:input_type -> cache_client._DictionaryGetRequest - 14, // 61: cache_client.Scs.DictionaryFetch:input_type -> cache_client._DictionaryFetchRequest - 17, // 62: cache_client.Scs.DictionarySet:input_type -> cache_client._DictionarySetRequest - 19, // 63: cache_client.Scs.DictionaryIncrement:input_type -> cache_client._DictionaryIncrementRequest - 21, // 64: cache_client.Scs.DictionaryDelete:input_type -> cache_client._DictionaryDeleteRequest - 23, // 65: cache_client.Scs.SetFetch:input_type -> cache_client._SetFetchRequest - 25, // 66: cache_client.Scs.SetUnion:input_type -> cache_client._SetUnionRequest - 27, // 67: cache_client.Scs.SetDifference:input_type -> cache_client._SetDifferenceRequest - 33, // 68: cache_client.Scs.ListPushFront:input_type -> cache_client._ListPushFrontRequest - 35, // 69: cache_client.Scs.ListPushBack:input_type -> cache_client._ListPushBackRequest - 37, // 70: cache_client.Scs.ListPopFront:input_type -> cache_client._ListPopFrontRequest - 39, // 71: cache_client.Scs.ListPopBack:input_type -> cache_client._ListPopBackRequest - 42, // 72: cache_client.Scs.ListErase:input_type -> cache_client._ListEraseRequest - 44, // 73: cache_client.Scs.ListRemove:input_type -> cache_client._ListRemoveRequest - 46, // 74: cache_client.Scs.ListFetch:input_type -> cache_client._ListFetchRequest - 48, // 75: cache_client.Scs.ListLength:input_type -> cache_client._ListLengthRequest - 29, // 76: cache_client.Scs.ListConcatenateFront:input_type -> cache_client._ListConcatenateFrontRequest - 31, // 77: cache_client.Scs.ListConcatenateBack:input_type -> cache_client._ListConcatenateBackRequest - 51, // 78: cache_client.Scs.SortedSetPut:input_type -> cache_client._SortedSetPutRequest - 53, // 79: cache_client.Scs.SortedSetFetch:input_type -> cache_client._SortedSetFetchRequest - 55, // 80: cache_client.Scs.SortedSetGetScore:input_type -> cache_client._SortedSetGetScoreRequest - 57, // 81: cache_client.Scs.SortedSetRemove:input_type -> cache_client._SortedSetRemoveRequest - 59, // 82: cache_client.Scs.SortedSetIncrement:input_type -> cache_client._SortedSetIncrementRequest - 61, // 83: cache_client.Scs.SortedSetGetRank:input_type -> cache_client._SortedSetGetRankRequest - 3, // 84: cache_client.Scs.Get:output_type -> cache_client._GetResponse - 7, // 85: cache_client.Scs.Set:output_type -> cache_client._SetResponse - 9, // 86: cache_client.Scs.SetIfNotExists:output_type -> cache_client._SetIfNotExistsResponse - 5, // 87: cache_client.Scs.Delete:output_type -> cache_client._DeleteResponse - 11, // 88: cache_client.Scs.Increment:output_type -> cache_client._IncrementResponse - 13, // 89: cache_client.Scs.DictionaryGet:output_type -> cache_client._DictionaryGetResponse - 16, // 90: cache_client.Scs.DictionaryFetch:output_type -> cache_client._DictionaryFetchResponse - 18, // 91: cache_client.Scs.DictionarySet:output_type -> cache_client._DictionarySetResponse - 20, // 92: cache_client.Scs.DictionaryIncrement:output_type -> cache_client._DictionaryIncrementResponse - 22, // 93: cache_client.Scs.DictionaryDelete:output_type -> cache_client._DictionaryDeleteResponse - 24, // 94: cache_client.Scs.SetFetch:output_type -> cache_client._SetFetchResponse - 26, // 95: cache_client.Scs.SetUnion:output_type -> cache_client._SetUnionResponse - 28, // 96: cache_client.Scs.SetDifference:output_type -> cache_client._SetDifferenceResponse - 34, // 97: cache_client.Scs.ListPushFront:output_type -> cache_client._ListPushFrontResponse - 36, // 98: cache_client.Scs.ListPushBack:output_type -> cache_client._ListPushBackResponse - 38, // 99: cache_client.Scs.ListPopFront:output_type -> cache_client._ListPopFrontResponse - 40, // 100: cache_client.Scs.ListPopBack:output_type -> cache_client._ListPopBackResponse - 43, // 101: cache_client.Scs.ListErase:output_type -> cache_client._ListEraseResponse - 45, // 102: cache_client.Scs.ListRemove:output_type -> cache_client._ListRemoveResponse - 47, // 103: cache_client.Scs.ListFetch:output_type -> cache_client._ListFetchResponse - 49, // 104: cache_client.Scs.ListLength:output_type -> cache_client._ListLengthResponse - 30, // 105: cache_client.Scs.ListConcatenateFront:output_type -> cache_client._ListConcatenateFrontResponse - 32, // 106: cache_client.Scs.ListConcatenateBack:output_type -> cache_client._ListConcatenateBackResponse - 52, // 107: cache_client.Scs.SortedSetPut:output_type -> cache_client._SortedSetPutResponse - 54, // 108: cache_client.Scs.SortedSetFetch:output_type -> cache_client._SortedSetFetchResponse - 56, // 109: cache_client.Scs.SortedSetGetScore:output_type -> cache_client._SortedSetGetScoreResponse - 58, // 110: cache_client.Scs.SortedSetRemove:output_type -> cache_client._SortedSetRemoveResponse - 60, // 111: cache_client.Scs.SortedSetIncrement:output_type -> cache_client._SortedSetIncrementResponse - 62, // 112: cache_client.Scs.SortedSetGetRank:output_type -> cache_client._SortedSetGetRankResponse - 84, // [84:113] is the sub-list for method output_type - 55, // [55:84] is the sub-list for method input_type - 55, // [55:55] is the sub-list for extension type_name - 55, // [55:55] is the sub-list for extension extendee - 0, // [0:55] is the sub-list for field type_name + 69, // 2: cache_client._SetIfNotExistsResponse.stored:type_name -> cache_client._SetIfNotExistsResponse._Stored + 70, // 3: cache_client._SetIfNotExistsResponse.not_stored:type_name -> cache_client._SetIfNotExistsResponse._NotStored + 72, // 4: cache_client._DictionaryGetResponse.found:type_name -> cache_client._DictionaryGetResponse._Found + 73, // 5: cache_client._DictionaryGetResponse.missing:type_name -> cache_client._DictionaryGetResponse._Missing + 74, // 6: cache_client._DictionaryFetchResponse.found:type_name -> cache_client._DictionaryFetchResponse._Found + 75, // 7: cache_client._DictionaryFetchResponse.missing:type_name -> cache_client._DictionaryFetchResponse._Missing + 16, // 8: cache_client._DictionarySetRequest.items:type_name -> cache_client._DictionaryFieldValuePair + 76, // 9: cache_client._DictionaryDeleteRequest.some:type_name -> cache_client._DictionaryDeleteRequest.Some + 77, // 10: cache_client._DictionaryDeleteRequest.all:type_name -> cache_client._DictionaryDeleteRequest.All + 78, // 11: cache_client._SetFetchResponse.found:type_name -> cache_client._SetFetchResponse._Found + 79, // 12: cache_client._SetFetchResponse.missing:type_name -> cache_client._SetFetchResponse._Missing + 80, // 13: cache_client._SetDifferenceRequest.minuend:type_name -> cache_client._SetDifferenceRequest._Minuend + 81, // 14: cache_client._SetDifferenceRequest.subtrahend:type_name -> cache_client._SetDifferenceRequest._Subtrahend + 84, // 15: cache_client._SetDifferenceResponse.found:type_name -> cache_client._SetDifferenceResponse._Found + 85, // 16: cache_client._SetDifferenceResponse.missing:type_name -> cache_client._SetDifferenceResponse._Missing + 86, // 17: cache_client._SetContainsResponse.found:type_name -> cache_client._SetContainsResponse._Found + 87, // 18: cache_client._SetContainsResponse.missing:type_name -> cache_client._SetContainsResponse._Missing + 88, // 19: cache_client._ListPopFrontResponse.found:type_name -> cache_client._ListPopFrontResponse._Found + 89, // 20: cache_client._ListPopFrontResponse.missing:type_name -> cache_client._ListPopFrontResponse._Missing + 90, // 21: cache_client._ListPopBackResponse.found:type_name -> cache_client._ListPopBackResponse._Found + 91, // 22: cache_client._ListPopBackResponse.missing:type_name -> cache_client._ListPopBackResponse._Missing + 93, // 23: cache_client._ListEraseRequest.some:type_name -> cache_client._ListEraseRequest._ListRanges + 92, // 24: cache_client._ListEraseRequest.all:type_name -> cache_client._ListEraseRequest._All + 49, // 25: cache_client._ListFetchRequest.unbounded_start:type_name -> cache_client._Unbounded + 49, // 26: cache_client._ListFetchRequest.unbounded_end:type_name -> cache_client._Unbounded + 49, // 27: cache_client._ListRetainRequest.unbounded_start:type_name -> cache_client._Unbounded + 49, // 28: cache_client._ListRetainRequest.unbounded_end:type_name -> cache_client._Unbounded + 94, // 29: cache_client._ListFetchResponse.found:type_name -> cache_client._ListFetchResponse._Found + 95, // 30: cache_client._ListFetchResponse.missing:type_name -> cache_client._ListFetchResponse._Missing + 96, // 31: cache_client._ListLengthResponse.found:type_name -> cache_client._ListLengthResponse._Found + 97, // 32: cache_client._ListLengthResponse.missing:type_name -> cache_client._ListLengthResponse._Missing + 56, // 33: cache_client._SortedSetPutRequest.elements:type_name -> cache_client._SortedSetElement + 1, // 34: cache_client._SortedSetFetchRequest.order:type_name -> cache_client._SortedSetFetchRequest.Order + 98, // 35: cache_client._SortedSetFetchRequest.by_index:type_name -> cache_client._SortedSetFetchRequest._ByIndex + 99, // 36: cache_client._SortedSetFetchRequest.by_score:type_name -> cache_client._SortedSetFetchRequest._ByScore + 101, // 37: cache_client._SortedSetFetchResponse.found:type_name -> cache_client._SortedSetFetchResponse._Found + 102, // 38: cache_client._SortedSetFetchResponse.missing:type_name -> cache_client._SortedSetFetchResponse._Missing + 106, // 39: cache_client._SortedSetGetScoreResponse.found:type_name -> cache_client._SortedSetGetScoreResponse._SortedSetFound + 107, // 40: cache_client._SortedSetGetScoreResponse.missing:type_name -> cache_client._SortedSetGetScoreResponse._SortedSetMissing + 108, // 41: cache_client._SortedSetRemoveRequest.all:type_name -> cache_client._SortedSetRemoveRequest._All + 109, // 42: cache_client._SortedSetRemoveRequest.some:type_name -> cache_client._SortedSetRemoveRequest._Some + 2, // 43: cache_client._SortedSetGetRankRequest.order:type_name -> cache_client._SortedSetGetRankRequest.Order + 110, // 44: cache_client._SortedSetGetRankResponse.element_rank:type_name -> cache_client._SortedSetGetRankResponse._RankResponsePart + 111, // 45: cache_client._SortedSetGetRankResponse.missing:type_name -> cache_client._SortedSetGetRankResponse._SortedSetMissing + 0, // 46: cache_client._DictionaryGetResponse._DictionaryGetResponsePart.result:type_name -> cache_client.ECacheResult + 71, // 47: cache_client._DictionaryGetResponse._Found.items:type_name -> cache_client._DictionaryGetResponse._DictionaryGetResponsePart + 16, // 48: cache_client._DictionaryFetchResponse._Found.items:type_name -> cache_client._DictionaryFieldValuePair + 82, // 49: cache_client._SetDifferenceRequest._Subtrahend.set:type_name -> cache_client._SetDifferenceRequest._Subtrahend._Set + 83, // 50: cache_client._SetDifferenceRequest._Subtrahend.identity:type_name -> cache_client._SetDifferenceRequest._Subtrahend._Identity + 44, // 51: cache_client._ListEraseRequest._ListRanges.ranges:type_name -> cache_client._ListRange + 49, // 52: cache_client._SortedSetFetchRequest._ByIndex.unbounded_start:type_name -> cache_client._Unbounded + 49, // 53: cache_client._SortedSetFetchRequest._ByIndex.unbounded_end:type_name -> cache_client._Unbounded + 49, // 54: cache_client._SortedSetFetchRequest._ByScore.unbounded_min:type_name -> cache_client._Unbounded + 100, // 55: cache_client._SortedSetFetchRequest._ByScore.min_score:type_name -> cache_client._SortedSetFetchRequest._ByScore._Score + 49, // 56: cache_client._SortedSetFetchRequest._ByScore.unbounded_max:type_name -> cache_client._Unbounded + 100, // 57: cache_client._SortedSetFetchRequest._ByScore.max_score:type_name -> cache_client._SortedSetFetchRequest._ByScore._Score + 103, // 58: cache_client._SortedSetFetchResponse._Found.values_with_scores:type_name -> cache_client._SortedSetFetchResponse._Found._ValuesWithScores + 104, // 59: cache_client._SortedSetFetchResponse._Found.values:type_name -> cache_client._SortedSetFetchResponse._Found._Values + 56, // 60: cache_client._SortedSetFetchResponse._Found._ValuesWithScores.elements:type_name -> cache_client._SortedSetElement + 0, // 61: cache_client._SortedSetGetScoreResponse._SortedSetGetScoreResponsePart.result:type_name -> cache_client.ECacheResult + 105, // 62: cache_client._SortedSetGetScoreResponse._SortedSetFound.elements:type_name -> cache_client._SortedSetGetScoreResponse._SortedSetGetScoreResponsePart + 0, // 63: cache_client._SortedSetGetRankResponse._RankResponsePart.result:type_name -> cache_client.ECacheResult + 3, // 64: cache_client.Scs.Get:input_type -> cache_client._GetRequest + 7, // 65: cache_client.Scs.Set:input_type -> cache_client._SetRequest + 9, // 66: cache_client.Scs.SetIfNotExists:input_type -> cache_client._SetIfNotExistsRequest + 5, // 67: cache_client.Scs.Delete:input_type -> cache_client._DeleteRequest + 11, // 68: cache_client.Scs.Increment:input_type -> cache_client._IncrementRequest + 13, // 69: cache_client.Scs.DictionaryGet:input_type -> cache_client._DictionaryGetRequest + 15, // 70: cache_client.Scs.DictionaryFetch:input_type -> cache_client._DictionaryFetchRequest + 18, // 71: cache_client.Scs.DictionarySet:input_type -> cache_client._DictionarySetRequest + 20, // 72: cache_client.Scs.DictionaryIncrement:input_type -> cache_client._DictionaryIncrementRequest + 22, // 73: cache_client.Scs.DictionaryDelete:input_type -> cache_client._DictionaryDeleteRequest + 24, // 74: cache_client.Scs.SetFetch:input_type -> cache_client._SetFetchRequest + 26, // 75: cache_client.Scs.SetUnion:input_type -> cache_client._SetUnionRequest + 28, // 76: cache_client.Scs.SetDifference:input_type -> cache_client._SetDifferenceRequest + 30, // 77: cache_client.Scs.SetContains:input_type -> cache_client._SetContainsRequest + 36, // 78: cache_client.Scs.ListPushFront:input_type -> cache_client._ListPushFrontRequest + 38, // 79: cache_client.Scs.ListPushBack:input_type -> cache_client._ListPushBackRequest + 40, // 80: cache_client.Scs.ListPopFront:input_type -> cache_client._ListPopFrontRequest + 42, // 81: cache_client.Scs.ListPopBack:input_type -> cache_client._ListPopBackRequest + 45, // 82: cache_client.Scs.ListErase:input_type -> cache_client._ListEraseRequest + 47, // 83: cache_client.Scs.ListRemove:input_type -> cache_client._ListRemoveRequest + 50, // 84: cache_client.Scs.ListFetch:input_type -> cache_client._ListFetchRequest + 54, // 85: cache_client.Scs.ListLength:input_type -> cache_client._ListLengthRequest + 32, // 86: cache_client.Scs.ListConcatenateFront:input_type -> cache_client._ListConcatenateFrontRequest + 34, // 87: cache_client.Scs.ListConcatenateBack:input_type -> cache_client._ListConcatenateBackRequest + 51, // 88: cache_client.Scs.ListRetain:input_type -> cache_client._ListRetainRequest + 57, // 89: cache_client.Scs.SortedSetPut:input_type -> cache_client._SortedSetPutRequest + 59, // 90: cache_client.Scs.SortedSetFetch:input_type -> cache_client._SortedSetFetchRequest + 61, // 91: cache_client.Scs.SortedSetGetScore:input_type -> cache_client._SortedSetGetScoreRequest + 63, // 92: cache_client.Scs.SortedSetRemove:input_type -> cache_client._SortedSetRemoveRequest + 65, // 93: cache_client.Scs.SortedSetIncrement:input_type -> cache_client._SortedSetIncrementRequest + 67, // 94: cache_client.Scs.SortedSetGetRank:input_type -> cache_client._SortedSetGetRankRequest + 4, // 95: cache_client.Scs.Get:output_type -> cache_client._GetResponse + 8, // 96: cache_client.Scs.Set:output_type -> cache_client._SetResponse + 10, // 97: cache_client.Scs.SetIfNotExists:output_type -> cache_client._SetIfNotExistsResponse + 6, // 98: cache_client.Scs.Delete:output_type -> cache_client._DeleteResponse + 12, // 99: cache_client.Scs.Increment:output_type -> cache_client._IncrementResponse + 14, // 100: cache_client.Scs.DictionaryGet:output_type -> cache_client._DictionaryGetResponse + 17, // 101: cache_client.Scs.DictionaryFetch:output_type -> cache_client._DictionaryFetchResponse + 19, // 102: cache_client.Scs.DictionarySet:output_type -> cache_client._DictionarySetResponse + 21, // 103: cache_client.Scs.DictionaryIncrement:output_type -> cache_client._DictionaryIncrementResponse + 23, // 104: cache_client.Scs.DictionaryDelete:output_type -> cache_client._DictionaryDeleteResponse + 25, // 105: cache_client.Scs.SetFetch:output_type -> cache_client._SetFetchResponse + 27, // 106: cache_client.Scs.SetUnion:output_type -> cache_client._SetUnionResponse + 29, // 107: cache_client.Scs.SetDifference:output_type -> cache_client._SetDifferenceResponse + 31, // 108: cache_client.Scs.SetContains:output_type -> cache_client._SetContainsResponse + 37, // 109: cache_client.Scs.ListPushFront:output_type -> cache_client._ListPushFrontResponse + 39, // 110: cache_client.Scs.ListPushBack:output_type -> cache_client._ListPushBackResponse + 41, // 111: cache_client.Scs.ListPopFront:output_type -> cache_client._ListPopFrontResponse + 43, // 112: cache_client.Scs.ListPopBack:output_type -> cache_client._ListPopBackResponse + 46, // 113: cache_client.Scs.ListErase:output_type -> cache_client._ListEraseResponse + 48, // 114: cache_client.Scs.ListRemove:output_type -> cache_client._ListRemoveResponse + 53, // 115: cache_client.Scs.ListFetch:output_type -> cache_client._ListFetchResponse + 55, // 116: cache_client.Scs.ListLength:output_type -> cache_client._ListLengthResponse + 33, // 117: cache_client.Scs.ListConcatenateFront:output_type -> cache_client._ListConcatenateFrontResponse + 35, // 118: cache_client.Scs.ListConcatenateBack:output_type -> cache_client._ListConcatenateBackResponse + 52, // 119: cache_client.Scs.ListRetain:output_type -> cache_client._ListRetainResponse + 58, // 120: cache_client.Scs.SortedSetPut:output_type -> cache_client._SortedSetPutResponse + 60, // 121: cache_client.Scs.SortedSetFetch:output_type -> cache_client._SortedSetFetchResponse + 62, // 122: cache_client.Scs.SortedSetGetScore:output_type -> cache_client._SortedSetGetScoreResponse + 64, // 123: cache_client.Scs.SortedSetRemove:output_type -> cache_client._SortedSetRemoveResponse + 66, // 124: cache_client.Scs.SortedSetIncrement:output_type -> cache_client._SortedSetIncrementResponse + 68, // 125: cache_client.Scs.SortedSetGetRank:output_type -> cache_client._SortedSetGetRankResponse + 95, // [95:126] is the sub-list for method output_type + 64, // [64:95] is the sub-list for method input_type + 64, // [64:64] is the sub-list for extension type_name + 64, // [64:64] is the sub-list for extension extendee + 0, // [0:64] is the sub-list for field type_name } func init() { file_protos_cacheclient_proto_init() } @@ -7306,7 +8093,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListConcatenateFrontRequest); i { + switch v := v.(*XSetContainsRequest); i { case 0: return &v.state case 1: @@ -7318,7 +8105,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListConcatenateFrontResponse); i { + switch v := v.(*XSetContainsResponse); i { case 0: return &v.state case 1: @@ -7330,7 +8117,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListConcatenateBackRequest); i { + switch v := v.(*XListConcatenateFrontRequest); i { case 0: return &v.state case 1: @@ -7342,7 +8129,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListConcatenateBackResponse); i { + switch v := v.(*XListConcatenateFrontResponse); i { case 0: return &v.state case 1: @@ -7354,7 +8141,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPushFrontRequest); i { + switch v := v.(*XListConcatenateBackRequest); i { case 0: return &v.state case 1: @@ -7366,7 +8153,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPushFrontResponse); i { + switch v := v.(*XListConcatenateBackResponse); i { case 0: return &v.state case 1: @@ -7378,7 +8165,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPushBackRequest); i { + switch v := v.(*XListPushFrontRequest); i { case 0: return &v.state case 1: @@ -7390,7 +8177,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPushBackResponse); i { + switch v := v.(*XListPushFrontResponse); i { case 0: return &v.state case 1: @@ -7402,7 +8189,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopFrontRequest); i { + switch v := v.(*XListPushBackRequest); i { case 0: return &v.state case 1: @@ -7414,7 +8201,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopFrontResponse); i { + switch v := v.(*XListPushBackResponse); i { case 0: return &v.state case 1: @@ -7426,7 +8213,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopBackRequest); i { + switch v := v.(*XListPopFrontRequest); i { case 0: return &v.state case 1: @@ -7438,7 +8225,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopBackResponse); i { + switch v := v.(*XListPopFrontResponse); i { case 0: return &v.state case 1: @@ -7450,7 +8237,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListRange); i { + switch v := v.(*XListPopBackRequest); i { case 0: return &v.state case 1: @@ -7462,7 +8249,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListEraseRequest); i { + switch v := v.(*XListPopBackResponse); i { case 0: return &v.state case 1: @@ -7474,7 +8261,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListEraseResponse); i { + switch v := v.(*XListRange); i { case 0: return &v.state case 1: @@ -7486,7 +8273,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListRemoveRequest); i { + switch v := v.(*XListEraseRequest); i { case 0: return &v.state case 1: @@ -7498,7 +8285,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListRemoveResponse); i { + switch v := v.(*XListEraseResponse); i { case 0: return &v.state case 1: @@ -7510,7 +8297,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListFetchRequest); i { + switch v := v.(*XListRemoveRequest); i { case 0: return &v.state case 1: @@ -7522,7 +8309,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListFetchResponse); i { + switch v := v.(*XListRemoveResponse); i { case 0: return &v.state case 1: @@ -7534,7 +8321,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListLengthRequest); i { + switch v := v.(*XUnbounded); i { case 0: return &v.state case 1: @@ -7546,7 +8333,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListLengthResponse); i { + switch v := v.(*XListFetchRequest); i { case 0: return &v.state case 1: @@ -7558,7 +8345,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetElement); i { + switch v := v.(*XListRetainRequest); i { case 0: return &v.state case 1: @@ -7570,7 +8357,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetPutRequest); i { + switch v := v.(*XListRetainResponse); i { case 0: return &v.state case 1: @@ -7582,7 +8369,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetPutResponse); i { + switch v := v.(*XListFetchResponse); i { case 0: return &v.state case 1: @@ -7594,7 +8381,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest); i { + switch v := v.(*XListLengthRequest); i { case 0: return &v.state case 1: @@ -7606,7 +8393,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchResponse); i { + switch v := v.(*XListLengthResponse); i { case 0: return &v.state case 1: @@ -7618,7 +8405,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetScoreRequest); i { + switch v := v.(*XSortedSetElement); i { case 0: return &v.state case 1: @@ -7630,7 +8417,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetScoreResponse); i { + switch v := v.(*XSortedSetPutRequest); i { case 0: return &v.state case 1: @@ -7642,7 +8429,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetRemoveRequest); i { + switch v := v.(*XSortedSetPutResponse); i { case 0: return &v.state case 1: @@ -7654,7 +8441,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetRemoveResponse); i { + switch v := v.(*XSortedSetFetchRequest); i { case 0: return &v.state case 1: @@ -7666,7 +8453,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetIncrementRequest); i { + switch v := v.(*XSortedSetFetchResponse); i { case 0: return &v.state case 1: @@ -7678,7 +8465,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetIncrementResponse); i { + switch v := v.(*XSortedSetGetScoreRequest); i { case 0: return &v.state case 1: @@ -7690,7 +8477,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetRankRequest); i { + switch v := v.(*XSortedSetGetScoreResponse); i { case 0: return &v.state case 1: @@ -7702,7 +8489,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetRankResponse); i { + switch v := v.(*XSortedSetRemoveRequest); i { case 0: return &v.state case 1: @@ -7714,7 +8501,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetIfNotExistsResponse_XStored); i { + switch v := v.(*XSortedSetRemoveResponse); i { case 0: return &v.state case 1: @@ -7726,7 +8513,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetIfNotExistsResponse_XNotStored); i { + switch v := v.(*XSortedSetIncrementRequest); i { case 0: return &v.state case 1: @@ -7738,7 +8525,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryGetResponse_XDictionaryGetResponsePart); i { + switch v := v.(*XSortedSetIncrementResponse); i { case 0: return &v.state case 1: @@ -7750,7 +8537,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryGetResponse_XFound); i { + switch v := v.(*XSortedSetGetRankRequest); i { case 0: return &v.state case 1: @@ -7762,7 +8549,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryGetResponse_XMissing); i { + switch v := v.(*XSortedSetGetRankResponse); i { case 0: return &v.state case 1: @@ -7774,7 +8561,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryFetchResponse_XFound); i { + switch v := v.(*XSetIfNotExistsResponse_XStored); i { case 0: return &v.state case 1: @@ -7786,7 +8573,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryFetchResponse_XMissing); i { + switch v := v.(*XSetIfNotExistsResponse_XNotStored); i { case 0: return &v.state case 1: @@ -7798,7 +8585,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryDeleteRequest_Some); i { + switch v := v.(*XDictionaryGetResponse_XDictionaryGetResponsePart); i { case 0: return &v.state case 1: @@ -7810,7 +8597,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XDictionaryDeleteRequest_All); i { + switch v := v.(*XDictionaryGetResponse_XFound); i { case 0: return &v.state case 1: @@ -7822,7 +8609,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetFetchResponse_XFound); i { + switch v := v.(*XDictionaryGetResponse_XMissing); i { case 0: return &v.state case 1: @@ -7834,7 +8621,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetFetchResponse_XMissing); i { + switch v := v.(*XDictionaryFetchResponse_XFound); i { case 0: return &v.state case 1: @@ -7846,7 +8633,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetDifferenceRequest_XMinuend); i { + switch v := v.(*XDictionaryFetchResponse_XMissing); i { case 0: return &v.state case 1: @@ -7858,7 +8645,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetDifferenceRequest_XSubtrahend); i { + switch v := v.(*XDictionaryDeleteRequest_Some); i { case 0: return &v.state case 1: @@ -7870,7 +8657,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetDifferenceRequest_XSubtrahend_XSet); i { + switch v := v.(*XDictionaryDeleteRequest_All); i { case 0: return &v.state case 1: @@ -7882,7 +8669,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetDifferenceRequest_XSubtrahend_XIdentity); i { + switch v := v.(*XSetFetchResponse_XFound); i { case 0: return &v.state case 1: @@ -7894,7 +8681,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetDifferenceResponse_XFound); i { + switch v := v.(*XSetFetchResponse_XMissing); i { case 0: return &v.state case 1: @@ -7906,7 +8693,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSetDifferenceResponse_XMissing); i { + switch v := v.(*XSetDifferenceRequest_XMinuend); i { case 0: return &v.state case 1: @@ -7918,7 +8705,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopFrontResponse_XFound); i { + switch v := v.(*XSetDifferenceRequest_XSubtrahend); i { case 0: return &v.state case 1: @@ -7930,7 +8717,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopFrontResponse_XMissing); i { + switch v := v.(*XSetDifferenceRequest_XSubtrahend_XSet); i { case 0: return &v.state case 1: @@ -7942,7 +8729,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopBackResponse_XFound); i { + switch v := v.(*XSetDifferenceRequest_XSubtrahend_XIdentity); i { case 0: return &v.state case 1: @@ -7954,7 +8741,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListPopBackResponse_XMissing); i { + switch v := v.(*XSetDifferenceResponse_XFound); i { case 0: return &v.state case 1: @@ -7966,7 +8753,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListEraseRequest_XAll); i { + switch v := v.(*XSetDifferenceResponse_XMissing); i { case 0: return &v.state case 1: @@ -7978,7 +8765,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListEraseRequest_XListRanges); i { + switch v := v.(*XSetContainsResponse_XFound); i { case 0: return &v.state case 1: @@ -7990,7 +8777,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListFetchResponse_XFound); i { + switch v := v.(*XSetContainsResponse_XMissing); i { case 0: return &v.state case 1: @@ -8002,7 +8789,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListFetchResponse_XMissing); i { + switch v := v.(*XListPopFrontResponse_XFound); i { case 0: return &v.state case 1: @@ -8014,7 +8801,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListLengthResponse_XFound); i { + switch v := v.(*XListPopFrontResponse_XMissing); i { case 0: return &v.state case 1: @@ -8026,7 +8813,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XListLengthResponse_XMissing); i { + switch v := v.(*XListPopBackResponse_XFound); i { case 0: return &v.state case 1: @@ -8038,7 +8825,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XAll); i { + switch v := v.(*XListPopBackResponse_XMissing); i { case 0: return &v.state case 1: @@ -8050,7 +8837,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XLimit); i { + switch v := v.(*XListEraseRequest_XAll); i { case 0: return &v.state case 1: @@ -8062,7 +8849,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XByIndex); i { + switch v := v.(*XListEraseRequest_XListRanges); i { case 0: return &v.state case 1: @@ -8074,7 +8861,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XByScore); i { + switch v := v.(*XListFetchResponse_XFound); i { case 0: return &v.state case 1: @@ -8086,7 +8873,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XByScore_XEndpoint); i { + switch v := v.(*XListFetchResponse_XMissing); i { case 0: return &v.state case 1: @@ -8098,7 +8885,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XByScore_XEndpoint_XScore); i { + switch v := v.(*XListLengthResponse_XFound); i { case 0: return &v.state case 1: @@ -8110,7 +8897,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchRequest_XByScore_XEndpoint_XInf); i { + switch v := v.(*XListLengthResponse_XMissing); i { case 0: return &v.state case 1: @@ -8122,7 +8909,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchResponse_XFound); i { + switch v := v.(*XSortedSetFetchRequest_XByIndex); i { case 0: return &v.state case 1: @@ -8134,7 +8921,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetFetchResponse_XMissing); i { + switch v := v.(*XSortedSetFetchRequest_XByScore); i { case 0: return &v.state case 1: @@ -8146,7 +8933,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart); i { + switch v := v.(*XSortedSetFetchRequest_XByScore_XScore); i { case 0: return &v.state case 1: @@ -8158,7 +8945,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetScoreResponse_XSortedSetFound); i { + switch v := v.(*XSortedSetFetchResponse_XFound); i { case 0: return &v.state case 1: @@ -8170,7 +8957,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetScoreResponse_XSortedSetMissing); i { + switch v := v.(*XSortedSetFetchResponse_XMissing); i { case 0: return &v.state case 1: @@ -8182,7 +8969,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetRemoveRequest_XAll); i { + switch v := v.(*XSortedSetFetchResponse_XFound_XValuesWithScores); i { case 0: return &v.state case 1: @@ -8194,7 +8981,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetRemoveRequest_XSome); i { + switch v := v.(*XSortedSetFetchResponse_XFound_XValues); i { case 0: return &v.state case 1: @@ -8206,7 +8993,7 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*XSortedSetGetRankResponse_XRankResponsePart); i { + switch v := v.(*XSortedSetGetScoreResponse_XSortedSetGetScoreResponsePart); i { case 0: return &v.state case 1: @@ -8218,6 +9005,66 @@ func file_protos_cacheclient_proto_init() { } } file_protos_cacheclient_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XSortedSetGetScoreResponse_XSortedSetFound); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_cacheclient_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XSortedSetGetScoreResponse_XSortedSetMissing); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_cacheclient_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XSortedSetRemoveRequest_XAll); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_cacheclient_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XSortedSetRemoveRequest_XSome); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_cacheclient_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XSortedSetGetRankResponse_XRankResponsePart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_cacheclient_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*XSortedSetGetRankResponse_XSortedSetMissing); i { case 0: return &v.state @@ -8258,66 +9105,92 @@ func file_protos_cacheclient_proto_init() { (*XSetDifferenceResponse_Found)(nil), (*XSetDifferenceResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[36].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[28].OneofWrappers = []interface{}{ + (*XSetContainsResponse_Found)(nil), + (*XSetContainsResponse_Missing)(nil), + } + file_protos_cacheclient_proto_msgTypes[38].OneofWrappers = []interface{}{ (*XListPopFrontResponse_Found)(nil), (*XListPopFrontResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[38].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[40].OneofWrappers = []interface{}{ (*XListPopBackResponse_Found)(nil), (*XListPopBackResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[40].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[42].OneofWrappers = []interface{}{ (*XListEraseRequest_Some)(nil), (*XListEraseRequest_All)(nil), } - file_protos_cacheclient_proto_msgTypes[42].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[44].OneofWrappers = []interface{}{ (*XListRemoveRequest_AllElementsWithValue)(nil), } - file_protos_cacheclient_proto_msgTypes[45].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[47].OneofWrappers = []interface{}{ + (*XListFetchRequest_UnboundedStart)(nil), + (*XListFetchRequest_InclusiveStart)(nil), + (*XListFetchRequest_UnboundedEnd)(nil), + (*XListFetchRequest_ExclusiveEnd)(nil), + } + file_protos_cacheclient_proto_msgTypes[48].OneofWrappers = []interface{}{ + (*XListRetainRequest_UnboundedStart)(nil), + (*XListRetainRequest_InclusiveStart)(nil), + (*XListRetainRequest_UnboundedEnd)(nil), + (*XListRetainRequest_ExclusiveEnd)(nil), + } + file_protos_cacheclient_proto_msgTypes[50].OneofWrappers = []interface{}{ (*XListFetchResponse_Found)(nil), (*XListFetchResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[47].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[52].OneofWrappers = []interface{}{ (*XListLengthResponse_Found)(nil), (*XListLengthResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[51].OneofWrappers = []interface{}{ - (*XSortedSetFetchRequest_All)(nil), - (*XSortedSetFetchRequest_Limit)(nil), + file_protos_cacheclient_proto_msgTypes[56].OneofWrappers = []interface{}{ (*XSortedSetFetchRequest_ByIndex)(nil), (*XSortedSetFetchRequest_ByScore)(nil), } - file_protos_cacheclient_proto_msgTypes[52].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[57].OneofWrappers = []interface{}{ (*XSortedSetFetchResponse_Found)(nil), (*XSortedSetFetchResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[54].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[59].OneofWrappers = []interface{}{ (*XSortedSetGetScoreResponse_Found)(nil), (*XSortedSetGetScoreResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[55].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[60].OneofWrappers = []interface{}{ (*XSortedSetRemoveRequest_All)(nil), (*XSortedSetRemoveRequest_Some)(nil), } - file_protos_cacheclient_proto_msgTypes[60].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[65].OneofWrappers = []interface{}{ (*XSortedSetGetRankResponse_ElementRank)(nil), (*XSortedSetGetRankResponse_Missing)(nil), } - file_protos_cacheclient_proto_msgTypes[73].OneofWrappers = []interface{}{ + file_protos_cacheclient_proto_msgTypes[78].OneofWrappers = []interface{}{ (*XSetDifferenceRequest_XSubtrahend_Set)(nil), (*XSetDifferenceRequest_XSubtrahend_Identity)(nil), } - file_protos_cacheclient_proto_msgTypes[92].OneofWrappers = []interface{}{ - (*XSortedSetFetchRequest_XByScore_XEndpoint_Score)(nil), - (*XSortedSetFetchRequest_XByScore_XEndpoint_Inf)(nil), + file_protos_cacheclient_proto_msgTypes[95].OneofWrappers = []interface{}{ + (*XSortedSetFetchRequest_XByIndex_UnboundedStart)(nil), + (*XSortedSetFetchRequest_XByIndex_InclusiveStartIndex)(nil), + (*XSortedSetFetchRequest_XByIndex_UnboundedEnd)(nil), + (*XSortedSetFetchRequest_XByIndex_ExclusiveEndIndex)(nil), + } + file_protos_cacheclient_proto_msgTypes[96].OneofWrappers = []interface{}{ + (*XSortedSetFetchRequest_XByScore_UnboundedMin)(nil), + (*XSortedSetFetchRequest_XByScore_MinScore)(nil), + (*XSortedSetFetchRequest_XByScore_UnboundedMax)(nil), + (*XSortedSetFetchRequest_XByScore_MaxScore)(nil), + } + file_protos_cacheclient_proto_msgTypes[98].OneofWrappers = []interface{}{ + (*XSortedSetFetchResponse_XFound_ValuesWithScores)(nil), + (*XSortedSetFetchResponse_XFound_Values)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_cacheclient_proto_rawDesc, - NumEnums: 2, - NumMessages: 104, + NumEnums: 3, + NumMessages: 109, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/protos/cacheclient.proto b/internal/protos/cacheclient.proto index d0cf6d82..437ee514 100644 --- a/internal/protos/cacheclient.proto +++ b/internal/protos/cacheclient.proto @@ -32,6 +32,7 @@ service Scs { rpc SetFetch (_SetFetchRequest) returns (_SetFetchResponse) {} rpc SetUnion (_SetUnionRequest) returns (_SetUnionResponse) {} rpc SetDifference (_SetDifferenceRequest) returns (_SetDifferenceResponse) {} + rpc SetContains (_SetContainsRequest) returns (_SetContainsResponse) {} rpc ListPushFront(_ListPushFrontRequest) returns (_ListPushFrontResponse) {} rpc ListPushBack(_ListPushBackRequest) returns (_ListPushBackResponse) {} @@ -43,6 +44,7 @@ service Scs { rpc ListLength(_ListLengthRequest) returns (_ListLengthResponse) {} rpc ListConcatenateFront(_ListConcatenateFrontRequest) returns (_ListConcatenateFrontResponse) {} rpc ListConcatenateBack(_ListConcatenateBackRequest) returns (_ListConcatenateBackResponse) {} + rpc ListRetain(_ListRetainRequest) returns (_ListRetainResponse) {} // Sorted Set Operations // A sorted set is a collection of elements ordered by their score. @@ -273,6 +275,26 @@ message _SetDifferenceResponse { } } +message _SetContainsRequest { + bytes set_name = 1; + repeated bytes elements = 2; +} + +message _SetContainsResponse { + message _Found { + // This will be the same length as the elements passed in the request. + // It represents whether each element is a member of the set, with indices corresponding to the request elements. + repeated bool contains = 1; + } + + message _Missing {} + + oneof set { + _Found found = 1; + _Missing missing = 2; + } +} + message _ListConcatenateFrontRequest { bytes list_name = 1; repeated bytes values = 2; @@ -401,10 +423,126 @@ message _ListRemoveRequest { message _ListRemoveResponse {} +/* + # ListFetch and ListRetain documentation and examples + + # start and end are zero-based indexes, both are optional + + # start is inclusive + # If start is not set, then the default is Unbounded, which is treated as 0 + # Unbounded == 0, + # this field has a explicit presence for future compatibility to support reverse order and controlling our stride + + # end is exclusive + # If end is not set, then the default is Unbounded which becomes (list.len) + + # start and end can be negative numbers, negative indicates offsets starting at the end of the list. + # For example, -1 is the last element of the list, -2 the penultimate, etc + # list: [ a, b, c, d, e, f, g, h, i, j] + # positive index positions: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 + # negative index positions: -10, -9, -8, -7, -6, -5, -4, -3, -2, -1 + + list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + + # Using the slice notation: + # start:end + + # start=0, end=Unbounded + list_[0:] == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + + # start=5, end=Unbounded + list_[5:] == [5, 6, 7, 8, 9] + + # start=5, end=0 + list_[5:0] == [] + + # start=-5, end=Unbounded + list_[-5:] == [5, 6, 7, 8, 9] + + # start=-5, end=0 + list_[-5:0] == [] + + # start=0, end=5 + list_[0:5] == [0, 1, 2, 3] + + # start=Unbounded, end=5 + list_[0:5] == [0, 1, 2, 3] + + # start=0, end=-5 + list_[0:-5] == [0, 1, 2, 3, 4] + + # start=Unbounded, end=-5 + list_[0:-5] == [0, 1, 2, 3, 4] + + # start=2, end=6 + list_[2:6] == [2, 3, 4, 5] + + # start=2, end=-6 + list_[2:-6] == [2, 3] + + # start=-7, end=-2 + list_[-7:-2] == [3, 4, 5, 6, 7] + + // if using ListRetain, this will remove all elements in the list + # start=-2, end=-6 + list_[-2:-6] == [] + + # empty list + list_[0:0] == [] + + # List of length one special cases + list_size_one_ = ['a'] + + # start=-1, end=1 + list_size_one_[-1:1] == ['a'] + + # start=1, end=-1 + list_size_one_[1:-1] == [] + + # start=0, end=0 + list_size_one_[0:0] == [] + + # start=0, end=-1 + list_size_one_[0:-1] == [] + */ + +message _Unbounded { } + message _ListFetchRequest { bytes list_name = 1; + // Inclusive. + // If unbounded, 0 (start of list) by default + // A negative index counts from the end of the list + oneof start_index { + _Unbounded unbounded_start = 2; + sint32 inclusive_start = 3; + } + // Exclusive. + // If unbounded, this effectively means list.length() + // If end_index is > the number of elements to return, return as much as you can + // A negative index counts from the end of the list + oneof end_index { + _Unbounded unbounded_end = 4; + sint32 exclusive_end = 5; + } } +message _ListRetainRequest { + bytes list_name = 1; + oneof start_index { + _Unbounded unbounded_start = 2; + sint32 inclusive_start = 3; + } + oneof end_index { + _Unbounded unbounded_end = 4; + sint32 exclusive_end = 5; + } + uint64 ttl_milliseconds = 6; + bool refresh_ttl = 7; +} + +message _ListRetainResponse {} + message _ListFetchResponse { message _Found { repeated bytes values = 1; @@ -436,7 +574,7 @@ message _ListLengthResponse { } message _SortedSetElement { - bytes name = 1; + bytes value = 1; double score = 2; } @@ -455,55 +593,74 @@ message _SortedSetFetchRequest { DESCENDING = 1; } - // num_results fields - message _All {} + message _ByIndex { + // Start and end are zero-based indexes, with 0 being the first element. + // A negative index indicates offsets from the end of the sorted set, with + // -1 being the last element. - message _Limit { - uint32 limit = 1; + // Start is inclusive. + // Unbounded is treated as 0. + oneof start { + _Unbounded unbounded_start = 1; + sint32 inclusive_start_index = 2; + } + // End is exclusive. + // Unbounded is treated as the number of elements in the sorted set. + oneof end { + _Unbounded unbounded_end = 3; + sint32 exclusive_end_index = 4; + } } - // range fields - message _ByIndex {} - message _ByScore { - message _Endpoint { - message _Score { - double score = 1; - bool open = 2; // if true, the endpoint is open (exclusive); false, closed (inclusive) - } - - message _Inf {} - - oneof kind { - _Score score = 1; - _Inf inf = 2; - } + message _Score { + double score = 1; + bool exclusive = 2; } - _Endpoint start = 1; - _Endpoint stop = 2; + oneof min { + _Unbounded unbounded_min = 1; + _Score min_score = 2; + } + oneof max { + _Unbounded unbounded_max = 3; + _Score max_score = 4; + } + // Offset and count are used to only get a range of the matching elements, + // similar to "SELECT LIMIT offset, count" in SQL. + // A negative count returns all elements from the offset. + // Use (0, -1) to return all matching elements. + uint32 offset = 5; + sint32 count = 6; } bytes set_name = 1; Order order = 2; - oneof num_results { - _All all = 3; - _Limit limit = 4; - } + bool with_scores = 3; oneof range { - _ByIndex by_index = 5; - _ByScore by_score = 6; + _ByIndex by_index = 4; + _ByScore by_score = 5; } } message _SortedSetFetchResponse { message _Found { - repeated _SortedSetElement elements = 1; - } + message _ValuesWithScores { + repeated _SortedSetElement elements = 1; + } + + message _Values { + repeated bytes values = 1; + } - message _Missing { + oneof elements { + _ValuesWithScores values_with_scores = 1; + _Values values = 2; + } } + message _Missing {} + oneof sorted_set { _Found found = 1; _Missing missing = 2; @@ -512,7 +669,7 @@ message _SortedSetFetchResponse { message _SortedSetGetScoreRequest { bytes set_name = 1; - repeated bytes element_name = 2; + repeated bytes values = 2; } message _SortedSetGetScoreResponse { @@ -538,7 +695,7 @@ message _SortedSetRemoveRequest { bytes set_name = 1; message _All {} message _Some { - repeated bytes element_name = 1; + repeated bytes values = 1; } oneof remove_elements { _All all = 2; @@ -550,25 +707,42 @@ message _SortedSetRemoveResponse {} message _SortedSetIncrementRequest { bytes set_name = 1; - bytes element_name = 2; + bytes value = 2; double amount = 3; uint64 ttl_milliseconds = 4; bool refresh_ttl = 5; } message _SortedSetIncrementResponse { - // The value stored after the increment operation. - double value = 1; + // The updated score stored after the increment operation. + double score = 1; } message _SortedSetGetRankRequest { + enum Order { + ASCENDING = 0; + DESCENDING = 1; + } + bytes set_name = 1; - bytes element_name = 2; + bytes value = 2; + // The order in which sorted set will be sorted to determine the rank. + // + // When Order.ASCENDING is specified, will return the rank of the value + // when sorted set scores are ordered from low to high. This is the default + // when no Order is specified. + // + // When Order.DESCENDING is specified, will return the rank of the value + // when sorted set scores are ordered from high to low. + Order order = 3; } message _SortedSetGetRankResponse { message _RankResponsePart { ECacheResult result = 1; + // Rank is 0-based i.e. when sort order is descending the rank of the + // value with the highest score will be 0. Similarly for ascending order, + // value with the lowest score will have rank 0. uint64 rank = 2; } diff --git a/internal/protos/cacheclient_grpc.pb.go b/internal/protos/cacheclient_grpc.pb.go index 811bedf6..be91d48c 100644 --- a/internal/protos/cacheclient_grpc.pb.go +++ b/internal/protos/cacheclient_grpc.pb.go @@ -36,6 +36,7 @@ type ScsClient interface { SetFetch(ctx context.Context, in *XSetFetchRequest, opts ...grpc.CallOption) (*XSetFetchResponse, error) SetUnion(ctx context.Context, in *XSetUnionRequest, opts ...grpc.CallOption) (*XSetUnionResponse, error) SetDifference(ctx context.Context, in *XSetDifferenceRequest, opts ...grpc.CallOption) (*XSetDifferenceResponse, error) + SetContains(ctx context.Context, in *XSetContainsRequest, opts ...grpc.CallOption) (*XSetContainsResponse, error) ListPushFront(ctx context.Context, in *XListPushFrontRequest, opts ...grpc.CallOption) (*XListPushFrontResponse, error) ListPushBack(ctx context.Context, in *XListPushBackRequest, opts ...grpc.CallOption) (*XListPushBackResponse, error) ListPopFront(ctx context.Context, in *XListPopFrontRequest, opts ...grpc.CallOption) (*XListPopFrontResponse, error) @@ -46,6 +47,7 @@ type ScsClient interface { ListLength(ctx context.Context, in *XListLengthRequest, opts ...grpc.CallOption) (*XListLengthResponse, error) ListConcatenateFront(ctx context.Context, in *XListConcatenateFrontRequest, opts ...grpc.CallOption) (*XListConcatenateFrontResponse, error) ListConcatenateBack(ctx context.Context, in *XListConcatenateBackRequest, opts ...grpc.CallOption) (*XListConcatenateBackResponse, error) + ListRetain(ctx context.Context, in *XListRetainRequest, opts ...grpc.CallOption) (*XListRetainResponse, error) // Add or Updates new element with its score to the Sorted Set. // If sorted set doesn't exist, a new one is created with the specified // element and its associated score. @@ -196,6 +198,15 @@ func (c *scsClient) SetDifference(ctx context.Context, in *XSetDifferenceRequest return out, nil } +func (c *scsClient) SetContains(ctx context.Context, in *XSetContainsRequest, opts ...grpc.CallOption) (*XSetContainsResponse, error) { + out := new(XSetContainsResponse) + err := c.cc.Invoke(ctx, "/cache_client.Scs/SetContains", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *scsClient) ListPushFront(ctx context.Context, in *XListPushFrontRequest, opts ...grpc.CallOption) (*XListPushFrontResponse, error) { out := new(XListPushFrontResponse) err := c.cc.Invoke(ctx, "/cache_client.Scs/ListPushFront", in, out, opts...) @@ -286,6 +297,15 @@ func (c *scsClient) ListConcatenateBack(ctx context.Context, in *XListConcatenat return out, nil } +func (c *scsClient) ListRetain(ctx context.Context, in *XListRetainRequest, opts ...grpc.CallOption) (*XListRetainResponse, error) { + out := new(XListRetainResponse) + err := c.cc.Invoke(ctx, "/cache_client.Scs/ListRetain", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *scsClient) SortedSetPut(ctx context.Context, in *XSortedSetPutRequest, opts ...grpc.CallOption) (*XSortedSetPutResponse, error) { out := new(XSortedSetPutResponse) err := c.cc.Invoke(ctx, "/cache_client.Scs/SortedSetPut", in, out, opts...) @@ -357,6 +377,7 @@ type ScsServer interface { SetFetch(context.Context, *XSetFetchRequest) (*XSetFetchResponse, error) SetUnion(context.Context, *XSetUnionRequest) (*XSetUnionResponse, error) SetDifference(context.Context, *XSetDifferenceRequest) (*XSetDifferenceResponse, error) + SetContains(context.Context, *XSetContainsRequest) (*XSetContainsResponse, error) ListPushFront(context.Context, *XListPushFrontRequest) (*XListPushFrontResponse, error) ListPushBack(context.Context, *XListPushBackRequest) (*XListPushBackResponse, error) ListPopFront(context.Context, *XListPopFrontRequest) (*XListPopFrontResponse, error) @@ -367,6 +388,7 @@ type ScsServer interface { ListLength(context.Context, *XListLengthRequest) (*XListLengthResponse, error) ListConcatenateFront(context.Context, *XListConcatenateFrontRequest) (*XListConcatenateFrontResponse, error) ListConcatenateBack(context.Context, *XListConcatenateBackRequest) (*XListConcatenateBackResponse, error) + ListRetain(context.Context, *XListRetainRequest) (*XListRetainResponse, error) // Add or Updates new element with its score to the Sorted Set. // If sorted set doesn't exist, a new one is created with the specified // element and its associated score. @@ -436,6 +458,9 @@ func (UnimplementedScsServer) SetUnion(context.Context, *XSetUnionRequest) (*XSe func (UnimplementedScsServer) SetDifference(context.Context, *XSetDifferenceRequest) (*XSetDifferenceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetDifference not implemented") } +func (UnimplementedScsServer) SetContains(context.Context, *XSetContainsRequest) (*XSetContainsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetContains not implemented") +} func (UnimplementedScsServer) ListPushFront(context.Context, *XListPushFrontRequest) (*XListPushFrontResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListPushFront not implemented") } @@ -466,6 +491,9 @@ func (UnimplementedScsServer) ListConcatenateFront(context.Context, *XListConcat func (UnimplementedScsServer) ListConcatenateBack(context.Context, *XListConcatenateBackRequest) (*XListConcatenateBackResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListConcatenateBack not implemented") } +func (UnimplementedScsServer) ListRetain(context.Context, *XListRetainRequest) (*XListRetainResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRetain not implemented") +} func (UnimplementedScsServer) SortedSetPut(context.Context, *XSortedSetPutRequest) (*XSortedSetPutResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SortedSetPut not implemented") } @@ -731,6 +759,24 @@ func _Scs_SetDifference_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _Scs_SetContains_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(XSetContainsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ScsServer).SetContains(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cache_client.Scs/SetContains", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ScsServer).SetContains(ctx, req.(*XSetContainsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Scs_ListPushFront_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(XListPushFrontRequest) if err := dec(in); err != nil { @@ -911,6 +957,24 @@ func _Scs_ListConcatenateBack_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Scs_ListRetain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(XListRetainRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ScsServer).ListRetain(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cache_client.Scs/ListRetain", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ScsServer).ListRetain(ctx, req.(*XListRetainRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Scs_SortedSetPut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(XSortedSetPutRequest) if err := dec(in); err != nil { @@ -1078,6 +1142,10 @@ var Scs_ServiceDesc = grpc.ServiceDesc{ MethodName: "SetDifference", Handler: _Scs_SetDifference_Handler, }, + { + MethodName: "SetContains", + Handler: _Scs_SetContains_Handler, + }, { MethodName: "ListPushFront", Handler: _Scs_ListPushFront_Handler, @@ -1118,6 +1186,10 @@ var Scs_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListConcatenateBack", Handler: _Scs_ListConcatenateBack_Handler, }, + { + MethodName: "ListRetain", + Handler: _Scs_ListRetain_Handler, + }, { MethodName: "SortedSetPut", Handler: _Scs_SortedSetPut_Handler, diff --git a/internal/protos/controlclient.pb.go b/internal/protos/controlclient.pb.go index 6f8bb334..a426d9a8 100644 --- a/internal/protos/controlclient.pb.go +++ b/internal/protos/controlclient.pb.go @@ -771,6 +771,130 @@ func (*XFlushCacheResponse) Descriptor() ([]byte, []int) { return file_protos_controlclient_proto_rawDescGZIP(), []int{15} } +type XGenerateTokenRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // how many seconds do you want the api token to be valid for? + ValidForSeconds uint32 `protobuf:"varint,1,opt,name=valid_for_seconds,json=validForSeconds,proto3" json:"valid_for_seconds,omitempty"` +} + +func (x *XGenerateTokenRequest) Reset() { + *x = XGenerateTokenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_controlclient_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XGenerateTokenRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XGenerateTokenRequest) ProtoMessage() {} + +func (x *XGenerateTokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_protos_controlclient_proto_msgTypes[16] + 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 XGenerateTokenRequest.ProtoReflect.Descriptor instead. +func (*XGenerateTokenRequest) Descriptor() ([]byte, []int) { + return file_protos_controlclient_proto_rawDescGZIP(), []int{16} +} + +func (x *XGenerateTokenRequest) GetValidForSeconds() uint32 { + if x != nil { + return x.ValidForSeconds + } + return 0 +} + +type XGenerateTokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // the token that will be used to make requests against Momento backend + ApiToken string `protobuf:"bytes,1,opt,name=api_token,json=apiToken,proto3" json:"api_token,omitempty"` + // the token that will allow the api token to be refreshed, which will + // give you back a new refresh and api token + RefreshToken string `protobuf:"bytes,2,opt,name=refresh_token,json=refreshToken,proto3" json:"refresh_token,omitempty"` + // the Momento endpoint that this token is allowed to make requests against + Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // epoch seconds when the api token expires + ValidUntil uint64 `protobuf:"varint,4,opt,name=valid_until,json=validUntil,proto3" json:"valid_until,omitempty"` +} + +func (x *XGenerateTokenResponse) Reset() { + *x = XGenerateTokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_controlclient_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XGenerateTokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XGenerateTokenResponse) ProtoMessage() {} + +func (x *XGenerateTokenResponse) ProtoReflect() protoreflect.Message { + mi := &file_protos_controlclient_proto_msgTypes[17] + 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 XGenerateTokenResponse.ProtoReflect.Descriptor instead. +func (*XGenerateTokenResponse) Descriptor() ([]byte, []int) { + return file_protos_controlclient_proto_rawDescGZIP(), []int{17} +} + +func (x *XGenerateTokenResponse) GetApiToken() string { + if x != nil { + return x.ApiToken + } + return "" +} + +func (x *XGenerateTokenResponse) GetRefreshToken() string { + if x != nil { + return x.RefreshToken + } + return "" +} + +func (x *XGenerateTokenResponse) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +func (x *XGenerateTokenResponse) GetValidUntil() uint64 { + if x != nil { + return x.ValidUntil + } + return 0 +} + var File_protos_controlclient_proto protoreflect.FileDescriptor var file_protos_controlclient_proto_rawDesc = []byte{ @@ -832,58 +956,78 @@ var file_protos_controlclient_proto_rawDesc = []byte{ 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x5f, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb4, 0x05, 0x0a, 0x0a, 0x53, 0x63, - 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x57, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x12, 0x22, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0a, 0x46, 0x6c, 0x75, - 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x46, 0x6c, - 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x69, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, - 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, - 0x10, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, - 0x79, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x2e, 0x5f, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, - 0x67, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x52, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, - 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x42, 0x68, 0x0a, 0x13, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x68, 0x71, 0x2f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x64, 0x6b, 0x2d, 0x67, 0x6f, 0x3b, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x67, 0x6f, 0xaa, 0x02, 0x1c, 0x4d, 0x6f, - 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x0a, 0x15, 0x5f, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x97, + 0x01, 0x0a, 0x16, 0x5f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, + 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x32, 0x96, 0x06, 0x0a, 0x0a, 0x53, 0x63, 0x73, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x57, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x12, 0x22, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0a, 0x46, 0x6c, 0x75, 0x73, + 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x46, 0x6c, 0x75, + 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x69, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, + 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, + 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x10, + 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, + 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, + 0x67, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x60, 0x0a, 0x0d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x5f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x5f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x68, 0x0a, 0x13, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x68, 0x71, + 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x64, 0x6b, 0x2d, 0x67, 0x6f, 0x3b, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x67, 0x6f, 0xaa, 0x02, 0x1c, 0x4d, + 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -898,7 +1042,7 @@ func file_protos_controlclient_proto_rawDescGZIP() []byte { return file_protos_controlclient_proto_rawDescData } -var file_protos_controlclient_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_protos_controlclient_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_protos_controlclient_proto_goTypes = []interface{}{ (*XDeleteCacheRequest)(nil), // 0: control_client._DeleteCacheRequest (*XDeleteCacheResponse)(nil), // 1: control_client._DeleteCacheResponse @@ -916,6 +1060,8 @@ var file_protos_controlclient_proto_goTypes = []interface{}{ (*XListSigningKeysResponse)(nil), // 13: control_client._ListSigningKeysResponse (*XFlushCacheRequest)(nil), // 14: control_client._FlushCacheRequest (*XFlushCacheResponse)(nil), // 15: control_client._FlushCacheResponse + (*XGenerateTokenRequest)(nil), // 16: control_client._GenerateTokenRequest + (*XGenerateTokenResponse)(nil), // 17: control_client._GenerateTokenResponse } var file_protos_controlclient_proto_depIdxs = []int32{ 5, // 0: control_client._ListCachesResponse.cache:type_name -> control_client._Cache @@ -927,15 +1073,17 @@ var file_protos_controlclient_proto_depIdxs = []int32{ 7, // 6: control_client.ScsControl.CreateSigningKey:input_type -> control_client._CreateSigningKeyRequest 9, // 7: control_client.ScsControl.RevokeSigningKey:input_type -> control_client._RevokeSigningKeyRequest 12, // 8: control_client.ScsControl.ListSigningKeys:input_type -> control_client._ListSigningKeysRequest - 3, // 9: control_client.ScsControl.CreateCache:output_type -> control_client._CreateCacheResponse - 1, // 10: control_client.ScsControl.DeleteCache:output_type -> control_client._DeleteCacheResponse - 6, // 11: control_client.ScsControl.ListCaches:output_type -> control_client._ListCachesResponse - 15, // 12: control_client.ScsControl.FlushCache:output_type -> control_client._FlushCacheResponse - 8, // 13: control_client.ScsControl.CreateSigningKey:output_type -> control_client._CreateSigningKeyResponse - 10, // 14: control_client.ScsControl.RevokeSigningKey:output_type -> control_client._RevokeSigningKeyResponse - 13, // 15: control_client.ScsControl.ListSigningKeys:output_type -> control_client._ListSigningKeysResponse - 9, // [9:16] is the sub-list for method output_type - 2, // [2:9] is the sub-list for method input_type + 16, // 9: control_client.ScsControl.GenerateToken:input_type -> control_client._GenerateTokenRequest + 3, // 10: control_client.ScsControl.CreateCache:output_type -> control_client._CreateCacheResponse + 1, // 11: control_client.ScsControl.DeleteCache:output_type -> control_client._DeleteCacheResponse + 6, // 12: control_client.ScsControl.ListCaches:output_type -> control_client._ListCachesResponse + 15, // 13: control_client.ScsControl.FlushCache:output_type -> control_client._FlushCacheResponse + 8, // 14: control_client.ScsControl.CreateSigningKey:output_type -> control_client._CreateSigningKeyResponse + 10, // 15: control_client.ScsControl.RevokeSigningKey:output_type -> control_client._RevokeSigningKeyResponse + 13, // 16: control_client.ScsControl.ListSigningKeys:output_type -> control_client._ListSigningKeysResponse + 17, // 17: control_client.ScsControl.GenerateToken:output_type -> control_client._GenerateTokenResponse + 10, // [10:18] is the sub-list for method output_type + 2, // [2:10] is the sub-list for method input_type 2, // [2:2] is the sub-list for extension type_name 2, // [2:2] is the sub-list for extension extendee 0, // [0:2] is the sub-list for field type_name @@ -1139,6 +1287,30 @@ func file_protos_controlclient_proto_init() { return nil } } + file_protos_controlclient_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XGenerateTokenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_controlclient_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XGenerateTokenResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1146,7 +1318,7 @@ func file_protos_controlclient_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_controlclient_proto_rawDesc, NumEnums: 0, - NumMessages: 16, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/protos/controlclient.proto b/internal/protos/controlclient.proto index bd1d9f6f..9c36268e 100644 --- a/internal/protos/controlclient.proto +++ b/internal/protos/controlclient.proto @@ -15,6 +15,8 @@ service ScsControl { rpc CreateSigningKey (_CreateSigningKeyRequest) returns (_CreateSigningKeyResponse) {} rpc RevokeSigningKey (_RevokeSigningKeyRequest) returns (_RevokeSigningKeyResponse) {} rpc ListSigningKeys (_ListSigningKeysRequest) returns (_ListSigningKeysResponse) {} + // api for programatically generating api and refresh tokens + rpc GenerateToken(_GenerateTokenRequest) returns (_GenerateTokenResponse) {} } message _DeleteCacheRequest { @@ -83,3 +85,20 @@ message _FlushCacheRequest { message _FlushCacheResponse { } + +message _GenerateTokenRequest { + // how many seconds do you want the api token to be valid for? + uint32 valid_for_seconds = 1; +} + +message _GenerateTokenResponse { + // the token that will be used to make requests against Momento backend + string api_token = 1; + // the token that will allow the api token to be refreshed, which will + // give you back a new refresh and api token + string refresh_token = 2; + // the Momento endpoint that this token is allowed to make requests against + string endpoint = 3; + // epoch seconds when the api token expires + uint64 valid_until = 4; +} diff --git a/internal/protos/controlclient_grpc.pb.go b/internal/protos/controlclient_grpc.pb.go index 3946c3d9..1e7725b3 100644 --- a/internal/protos/controlclient_grpc.pb.go +++ b/internal/protos/controlclient_grpc.pb.go @@ -30,6 +30,8 @@ type ScsControlClient interface { CreateSigningKey(ctx context.Context, in *XCreateSigningKeyRequest, opts ...grpc.CallOption) (*XCreateSigningKeyResponse, error) RevokeSigningKey(ctx context.Context, in *XRevokeSigningKeyRequest, opts ...grpc.CallOption) (*XRevokeSigningKeyResponse, error) ListSigningKeys(ctx context.Context, in *XListSigningKeysRequest, opts ...grpc.CallOption) (*XListSigningKeysResponse, error) + // api for programatically generating api and refresh tokens + GenerateToken(ctx context.Context, in *XGenerateTokenRequest, opts ...grpc.CallOption) (*XGenerateTokenResponse, error) } type scsControlClient struct { @@ -103,6 +105,15 @@ func (c *scsControlClient) ListSigningKeys(ctx context.Context, in *XListSigning return out, nil } +func (c *scsControlClient) GenerateToken(ctx context.Context, in *XGenerateTokenRequest, opts ...grpc.CallOption) (*XGenerateTokenResponse, error) { + out := new(XGenerateTokenResponse) + err := c.cc.Invoke(ctx, "/control_client.ScsControl/GenerateToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ScsControlServer is the server API for ScsControl service. // All implementations must embed UnimplementedScsControlServer // for forward compatibility @@ -114,6 +125,8 @@ type ScsControlServer interface { CreateSigningKey(context.Context, *XCreateSigningKeyRequest) (*XCreateSigningKeyResponse, error) RevokeSigningKey(context.Context, *XRevokeSigningKeyRequest) (*XRevokeSigningKeyResponse, error) ListSigningKeys(context.Context, *XListSigningKeysRequest) (*XListSigningKeysResponse, error) + // api for programatically generating api and refresh tokens + GenerateToken(context.Context, *XGenerateTokenRequest) (*XGenerateTokenResponse, error) mustEmbedUnimplementedScsControlServer() } @@ -142,6 +155,9 @@ func (UnimplementedScsControlServer) RevokeSigningKey(context.Context, *XRevokeS func (UnimplementedScsControlServer) ListSigningKeys(context.Context, *XListSigningKeysRequest) (*XListSigningKeysResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListSigningKeys not implemented") } +func (UnimplementedScsControlServer) GenerateToken(context.Context, *XGenerateTokenRequest) (*XGenerateTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateToken not implemented") +} func (UnimplementedScsControlServer) mustEmbedUnimplementedScsControlServer() {} // UnsafeScsControlServer may be embedded to opt out of forward compatibility for this service. @@ -281,6 +297,24 @@ func _ScsControl_ListSigningKeys_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } +func _ScsControl_GenerateToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(XGenerateTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ScsControlServer).GenerateToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/control_client.ScsControl/GenerateToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ScsControlServer).GenerateToken(ctx, req.(*XGenerateTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + // ScsControl_ServiceDesc is the grpc.ServiceDesc for ScsControl service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -316,6 +350,10 @@ var ScsControl_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListSigningKeys", Handler: _ScsControl_ListSigningKeys_Handler, }, + { + MethodName: "GenerateToken", + Handler: _ScsControl_GenerateToken_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "protos/controlclient.proto", diff --git a/momento/requester.go b/momento/requester.go index bd736b19..3b0bb7aa 100644 --- a/momento/requester.go +++ b/momento/requester.go @@ -84,16 +84,16 @@ func prepareName(name string, label string) (string, error) { return name, nil } -func prepareElementName(name Value) ([]byte, error) { +func prepareElementValue(name Value) ([]byte, error) { if name == nil { return nil, buildError( - momentoerrors.InvalidArgumentError, "element name cannot be nil or empty", nil, + momentoerrors.InvalidArgumentError, "element value cannot be nil or empty", nil, ) } // just validate not empty using prepareName nameBytes := name.asBytes() - _, err := prepareName(string(nameBytes), "element name") + _, err := prepareName(string(nameBytes), "element value") if err != nil { return nil, err } diff --git a/momento/sorted_set_fetch.go b/momento/sorted_set_fetch.go index fd472733..86d29eaa 100644 --- a/momento/sorted_set_fetch.go +++ b/momento/sorted_set_fetch.go @@ -2,7 +2,6 @@ package momento import ( "context" - "fmt" pb "github.com/momentohq/client-sdk-go/internal/protos" ) @@ -53,10 +52,9 @@ type FetchLimitedElements struct { func (FetchLimitedElements) isSortedSetFetchNumResults() {} type SortedSetFetchRequest struct { - CacheName string - SetName string - Order SortedSetOrder - NumberOfResults SortedSetFetchNumResults + CacheName string + SetName string + Order SortedSetOrder grpcRequest *pb.XSortedSetFetchRequest grpcResponse *pb.XSortedSetFetchResponse @@ -75,31 +73,15 @@ func (r *SortedSetFetchRequest) initGrpcRequest(scsDataClient) error { } grpcReq := &pb.XSortedSetFetchRequest{ - SetName: []byte(r.SetName), - Order: pb.XSortedSetFetchRequest_Order(r.Order), - } - - switch numResults := r.NumberOfResults.(type) { - case *FetchAllElements: - grpcReq.NumResults = &pb.XSortedSetFetchRequest_All{} - case FetchAllElements: - grpcReq.NumResults = &pb.XSortedSetFetchRequest_All{} - case nil: - grpcReq.NumResults = &pb.XSortedSetFetchRequest_All{} - case *FetchLimitedElements: - grpcReq.NumResults = &pb.XSortedSetFetchRequest_Limit{ - Limit: &pb.XSortedSetFetchRequest_XLimit{ - Limit: numResults.Limit, - }, - } - case FetchLimitedElements: - grpcReq.NumResults = &pb.XSortedSetFetchRequest_Limit{ - Limit: &pb.XSortedSetFetchRequest_XLimit{ - Limit: numResults.Limit, + SetName: []byte(r.SetName), + Order: pb.XSortedSetFetchRequest_Order(r.Order), + WithScores: true, + Range: &pb.XSortedSetFetchRequest_ByIndex{ + ByIndex: &pb.XSortedSetFetchRequest_XByIndex{ + Start: &pb.XSortedSetFetchRequest_XByIndex_UnboundedStart{}, + End: &pb.XSortedSetFetchRequest_XByIndex_UnboundedEnd{}, }, - } - default: - return fmt.Errorf("unexpected fetch results type %T", r.NumberOfResults) + }, } r.grpcRequest = grpcReq @@ -121,7 +103,7 @@ func (r *SortedSetFetchRequest) interpretGrpcResponse() error { switch grpcResp := r.grpcResponse.SortedSet.(type) { case *pb.XSortedSetFetchResponse_Found: r.response = &SortedSetFetchHit{ - Elements: sortedSetGrpcElementToModel(grpcResp.Found.GetElements()), + Elements: sortedSetGrpcElementToModel(grpcResp.Found.GetValuesWithScores().Elements), } case *pb.XSortedSetFetchResponse_Missing: r.response = &SortedSetFetchMiss{} @@ -135,7 +117,7 @@ func sortedSetGrpcElementToModel(grpcSetElements []*pb.XSortedSetElement) []*Sor var returnList []*SortedSetElement for _, element := range grpcSetElements { returnList = append(returnList, &SortedSetElement{ - Value: element.Name, + Value: element.Value, Score: element.Score, }) } diff --git a/momento/sorted_set_get_rank.go b/momento/sorted_set_get_rank.go index fa85e3db..c4fdd74f 100644 --- a/momento/sorted_set_get_rank.go +++ b/momento/sorted_set_get_rank.go @@ -27,9 +27,9 @@ func (SortedSetGetRankHit) isSortedSetGetRankResponse() {} ///////// Request type SortedSetGetRankRequest struct { - CacheName string - SetName string - ElementName Value + CacheName string + SetName string + ElementValue Value grpcRequest *pb.XSortedSetGetRankRequest grpcResponse *pb.XSortedSetGetRankResponse @@ -47,14 +47,14 @@ func (r *SortedSetGetRankRequest) initGrpcRequest(scsDataClient) error { return err } - var elementName []byte - if elementName, err = prepareElementName(r.ElementName); err != nil { + var value []byte + if value, err = prepareElementValue(r.ElementValue); err != nil { return err } resp := &pb.XSortedSetGetRankRequest{ - SetName: []byte(r.SetName), - ElementName: elementName, + SetName: []byte(r.SetName), + Value: value, } r.grpcRequest = resp diff --git a/momento/sorted_set_get_score.go b/momento/sorted_set_get_score.go index 00ade690..e1f4cde8 100644 --- a/momento/sorted_set_get_score.go +++ b/momento/sorted_set_get_score.go @@ -45,9 +45,9 @@ func (SortedSetScoreInvalid) isSortedSetScoreElement() {} ///////// Request type SortedSetGetScoreRequest struct { - CacheName string - SetName string - ElementNames []Value + CacheName string + SetName string + ElementValues []Value grpcRequest *pb.XSortedSetGetScoreRequest grpcResponse *pb.XSortedSetGetScoreResponse @@ -65,14 +65,14 @@ func (r *SortedSetGetScoreRequest) initGrpcRequest(scsDataClient) error { return err } - elementNames, err := momentoValuesToPrimitiveByteList(r.ElementNames) + values, err := momentoValuesToPrimitiveByteList(r.ElementValues) if err != nil { return err } resp := &pb.XSortedSetGetScoreRequest{ - SetName: []byte(r.SetName), - ElementName: elementNames, + SetName: []byte(r.SetName), + Values: values, } r.grpcRequest = resp diff --git a/momento/sorted_set_increment_score.go b/momento/sorted_set_increment_score.go index c301f031..58716949 100644 --- a/momento/sorted_set_increment_score.go +++ b/momento/sorted_set_increment_score.go @@ -25,11 +25,11 @@ func (SortedSetIncrementScoreSuccess) isSortedSetIncrementResponse() {} ////// Request type SortedSetIncrementScoreRequest struct { - CacheName string - SetName string - ElementName Value - Amount float64 - Ttl utils.CollectionTtl + CacheName string + SetName string + ElementValue Value + Amount float64 + Ttl utils.CollectionTtl grpcRequest *pb.XSortedSetIncrementRequest grpcResponse *pb.XSortedSetIncrementResponse @@ -54,8 +54,8 @@ func (r *SortedSetIncrementScoreRequest) initGrpcRequest(client scsDataClient) e return err } - var elementName []byte - if elementName, err = prepareElementName(r.ElementName); err != nil { + var value []byte + if value, err = prepareElementValue(r.ElementValue); err != nil { return err } @@ -69,7 +69,7 @@ func (r *SortedSetIncrementScoreRequest) initGrpcRequest(client scsDataClient) e r.grpcRequest = &pb.XSortedSetIncrementRequest{ SetName: []byte(r.SetName), - ElementName: elementName, + Value: value, Amount: r.Amount, TtlMilliseconds: ttlMillis, RefreshTtl: r.Ttl.RefreshTtl, @@ -88,7 +88,7 @@ func (r *SortedSetIncrementScoreRequest) makeGrpcRequest(metadata context.Contex func (r *SortedSetIncrementScoreRequest) interpretGrpcResponse() error { r.response = &SortedSetIncrementScoreSuccess{ - Value: r.grpcResponse.Value, + Value: r.grpcResponse.Score, } return nil } diff --git a/momento/sorted_set_put.go b/momento/sorted_set_put.go index f2c0ef85..66ffc09e 100644 --- a/momento/sorted_set_put.go +++ b/momento/sorted_set_put.go @@ -83,7 +83,7 @@ func convertSortedSetElementToGrpc(modelSetElements []*SortedSetPutElement) []*p var returnList []*pb.XSortedSetElement for _, el := range modelSetElements { returnList = append(returnList, &pb.XSortedSetElement{ - Name: el.Value.asBytes(), + Value: el.Value.asBytes(), Score: el.Score, }) } diff --git a/momento/sorted_set_remove.go b/momento/sorted_set_remove.go index 77ffb25b..a97ff02d 100644 --- a/momento/sorted_set_remove.go +++ b/momento/sorted_set_remove.go @@ -74,7 +74,7 @@ func (r *SortedSetRemoveRequest) initGrpcRequest(scsDataClient) error { } grpcReq.RemoveElements = &pb.XSortedSetRemoveRequest_Some{ Some: &pb.XSortedSetRemoveRequest_XSome{ - ElementName: elemToRemove, + Values: elemToRemove, }, } case *RemoveSomeElements: @@ -84,7 +84,7 @@ func (r *SortedSetRemoveRequest) initGrpcRequest(scsDataClient) error { } grpcReq.RemoveElements = &pb.XSortedSetRemoveRequest_Some{ Some: &pb.XSortedSetRemoveRequest_XSome{ - ElementName: elemToRemove, + Values: elemToRemove, }, } default: diff --git a/momento/sorted_set_test.go b/momento/sorted_set_test.go index 552da31b..0a712009 100644 --- a/momento/sorted_set_test.go +++ b/momento/sorted_set_test.go @@ -60,20 +60,20 @@ var _ = Describe("SortedSet", func() { Expect( client.SortedSetGetRank(ctx, &SortedSetGetRankRequest{ - CacheName: cacheName, SetName: collectionName, ElementName: element, + CacheName: cacheName, SetName: collectionName, ElementValue: element, }), ).Error().To(HaveMomentoErrorCode(expectedError)) elements := []Value{element} Expect( client.SortedSetGetScore(ctx, &SortedSetGetScoreRequest{ - CacheName: cacheName, SetName: collectionName, ElementNames: elements, + CacheName: cacheName, SetName: collectionName, ElementValues: elements, }), ).Error().To(HaveMomentoErrorCode(expectedError)) Expect( client.SortedSetIncrementScore(ctx, &SortedSetIncrementScoreRequest{ - CacheName: cacheName, SetName: collectionName, ElementName: element, Amount: 1, + CacheName: cacheName, SetName: collectionName, ElementValue: element, Amount: 1, }), ).Error().To(HaveMomentoErrorCode(expectedError)) @@ -104,7 +104,6 @@ var _ = Describe("SortedSet", func() { func( changer func(SortedSetPutElement, *utils.CollectionTtl), ) { - Skip("skipping sorted set tests until backend issue is resolved") value := "foo" element := SortedSetPutElement{ Value: String(value), @@ -167,10 +166,10 @@ var _ = Describe("SortedSet", func() { `SortedSetIncrementScore`, func(element SortedSetPutElement, ttl *utils.CollectionTtl) { request := &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: element.Value, - Amount: element.Score, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: element.Value, + Amount: element.Score, } if ttl != nil { request.Ttl = *ttl @@ -201,7 +200,6 @@ var _ = Describe("SortedSet", func() { Describe("SortedSetFetch", func() { It(`Misses if the set does not exist`, func() { - Skip("skipping sorted set tests until backend issue is resolved") Expect( sharedContext.Client.SortedSetFetch( sharedContext.Ctx, @@ -214,7 +212,6 @@ var _ = Describe("SortedSet", func() { }) It(`Fetches`, func() { - Skip("skipping sorted set tests until backend issue is resolved") putElements( []*SortedSetPutElement{ {Value: String("first"), Score: 9999}, @@ -260,24 +257,26 @@ var _ = Describe("SortedSet", func() { }, )) - Expect( - sharedContext.Client.SortedSetFetch( - sharedContext.Ctx, - &SortedSetFetchRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - Order: DESCENDING, - NumberOfResults: FetchLimitedElements{Limit: 2}, - }, - ), - ).To(Equal( - &SortedSetFetchHit{ - Elements: []*SortedSetElement{ - {Value: []byte("first"), Score: 9999}, - {Value: []byte("middle"), Score: 50}, - }, - }, - )) + // XXX This test needs to be changed for start/end. + // + // Expect( + // sharedContext.Client.SortedSetFetch( + // sharedContext.Ctx, + // &SortedSetFetchRequest{ + // CacheName: sharedContext.CacheName, + // SetName: sharedContext.CollectionName, + // Order: DESCENDING, + // NumberOfResults: FetchLimitedElements{Limit: 2}, + // }, + // ), + // ).To(Equal( + // &SortedSetFetchHit{ + // Elements: []*SortedSetElement{ + // {Value: []byte("first"), Score: 9999}, + // {Value: []byte("middle"), Score: 50}, + // }, + // }, + // )) }) }) @@ -287,9 +286,9 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetGetRank( sharedContext.Ctx, &SortedSetGetRankRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("foo"), + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("foo"), }, ), ).To(BeAssignableToTypeOf(&SortedSetGetRankMiss{})) @@ -308,9 +307,9 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetGetRank( sharedContext.Ctx, &SortedSetGetRankRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("first"), + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("first"), }, ), ).To(Equal(&SortedSetGetRankHit{Rank: 2})) @@ -319,22 +318,22 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetGetRank( sharedContext.Ctx, &SortedSetGetRankRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("last"), + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("last"), }, ), ).To(Equal(&SortedSetGetRankHit{Rank: 0})) }) - It(`returns an error for a nil element name`, func() { + It(`returns an error for a nil element value`, func() { Expect( sharedContext.Client.SortedSetGetRank( sharedContext.Ctx, &SortedSetGetRankRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: nil, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: nil, }, ), ).Error().To(HaveMomentoErrorCode(InvalidArgumentError)) @@ -347,9 +346,9 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetGetScore( sharedContext.Ctx, &SortedSetGetScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementNames: []Value{String("foo")}, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValues: []Value{String("foo")}, }, ), ).To(BeAssignableToTypeOf(&SortedSetGetScoreMiss{})) @@ -370,7 +369,7 @@ var _ = Describe("SortedSet", func() { &SortedSetGetScoreRequest{ CacheName: sharedContext.CacheName, SetName: sharedContext.CollectionName, - ElementNames: []Value{ + ElementValues: []Value{ String("first"), String("last"), String("dne"), }, }, @@ -386,14 +385,14 @@ var _ = Describe("SortedSet", func() { )) }) - It(`returns an error when element names are nil`, func() { + It(`returns an error when element values are nil`, func() { Expect( sharedContext.Client.SortedSetGetScore( sharedContext.Ctx, &SortedSetGetScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementNames: nil, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValues: nil, }, ), ).Error().To(HaveMomentoErrorCode(InvalidArgumentError)) @@ -402,9 +401,9 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetGetScore( sharedContext.Ctx, &SortedSetGetScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementNames: []Value{nil, String("aValue"), nil}, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValues: []Value{nil, String("aValue"), nil}, }, ), ).Error().To(HaveMomentoErrorCode(InvalidArgumentError)) @@ -417,10 +416,10 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetIncrementScore( sharedContext.Ctx, &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("dne"), - Amount: 99, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("dne"), + Amount: 99, }, ), ).To(BeAssignableToTypeOf(&SortedSetIncrementScoreSuccess{Value: 99})) @@ -431,10 +430,10 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetIncrementScore( sharedContext.Ctx, &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("dne"), - Amount: 0, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("dne"), + Amount: 0, }, ), ).Error().To(HaveMomentoErrorCode(InvalidArgumentError)) @@ -445,9 +444,9 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetIncrementScore( sharedContext.Ctx, &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("dne"), + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("dne"), }, ), ).Error().To(HaveMomentoErrorCode(InvalidArgumentError)) @@ -466,10 +465,10 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetIncrementScore( sharedContext.Ctx, &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("middle"), - Amount: 42, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("middle"), + Amount: 42, }, ), ).To(BeAssignableToTypeOf(&SortedSetIncrementScoreSuccess{Value: 92})) @@ -478,24 +477,24 @@ var _ = Describe("SortedSet", func() { sharedContext.Client.SortedSetIncrementScore( sharedContext.Ctx, &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: String("middle"), - Amount: -42, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: String("middle"), + Amount: -42, }, ), ).To(BeAssignableToTypeOf(&SortedSetIncrementScoreSuccess{Value: 50})) }) - It("returns an error when element name is nil", func() { + It("returns an error when element value is nil", func() { Expect( sharedContext.Client.SortedSetIncrementScore( sharedContext.Ctx, &SortedSetIncrementScoreRequest{ - CacheName: sharedContext.CacheName, - SetName: sharedContext.CollectionName, - ElementName: nil, - Amount: 42, + CacheName: sharedContext.CacheName, + SetName: sharedContext.CollectionName, + ElementValue: nil, + Amount: 42, }, ), ).Error().To(HaveMomentoErrorCode(InvalidArgumentError)) @@ -520,7 +519,6 @@ var _ = Describe("SortedSet", func() { }) It(`Removes elements`, func() { - Skip("skipping sorted set tests until backend issue is resolved") putElements( []*SortedSetPutElement{ {Value: String("first"), Score: 9999},