From e015bd9ba6f07c39f2f64ef0aa357de03dc8a554 Mon Sep 17 00:00:00 2001 From: Yusuke Tsutsumi Date: Sat, 18 Oct 2025 12:30:52 -0700 Subject: [PATCH] feat(301): add undelete example Adding an example implementation of the undelete pattern. --- buf.lock | 8 +- example/bookstore/v1/bookstore.pb.go | 2445 +++++++++++-------- example/bookstore/v1/bookstore.pb.gw.go | 309 +++ example/bookstore/v1/bookstore.proto | 94 + example/bookstore/v1/bookstore.swagger.json | 188 +- example/bookstore/v1/bookstore.yaml | 27 + example/bookstore/v1/bookstore_grpc.pb.go | 179 +- example/bookstore/v1/bookstore_openapi.json | 135 + example/bookstore/v1/bookstore_openapi.yaml | 86 + example/service/service.go | 152 +- example/service/service_test.go | 140 ++ test_undelete.sh | 53 + 12 files changed, 2786 insertions(+), 1030 deletions(-) create mode 100755 test_undelete.sh diff --git a/buf.lock b/buf.lock index 61cc5f4..e72f380 100644 --- a/buf.lock +++ b/buf.lock @@ -2,11 +2,11 @@ version: v2 deps: - name: buf.build/aep/api - commit: 1454930c8f994a1980143dae475be0a2 - digest: b5:7c0b638065cd7705d85bdddc0c3cd22bf7b438e27e14109f811a3bd5c01d92318901b5aa63173de6e31f1cff75f912c953e72cc03487b717e72bbe1de264ee25 + commit: f9844266f27f43ee861dce4ac7335d0d + digest: b5:f7824771c2516b21bc5a9017eab1f93c92908dbfe0caca28dd1caccffbb38aaf005a357b49f5ca3efe507fa74b2ad66fa18892bd4415e526ae526ad8389bba69 - name: buf.build/bufbuild/protovalidate - commit: f05a6f4403ce4327bae4f50f281c3ed0 - digest: b5:f1d76430ee97c89cd2044e9ae1c510887b701ee7bca60564ebf82e3919e53cacefc830a0eb803277c2d98c5f313b4167e8914afc9f214332717a50b5e170e6f4 + commit: 52f32327d4b045a79293a6ad4e7e1236 + digest: b5:cbabc98d4b7b7b0447c9b15f68eeb8a7a44ef8516cb386ac5f66e7fd4062cd6723ed3f452ad8c384b851f79e33d26e7f8a94e2b807282b3def1cd966c7eace97 - name: buf.build/googleapis/googleapis commit: 28151c0d0a1641bf938a7672c500e01d digest: b5:93b70089baa4fc05a92d3e52db91a4b7812db3b57b9664f6cb301733938cb630e377a938e8a56779388171c749c1d42a2e9a6c6230f2ff45f127a8102a6a27d0 diff --git a/example/bookstore/v1/bookstore.pb.go b/example/bookstore/v1/bookstore.pb.go index 3961684..8a3300f 100644 --- a/example/bookstore/v1/bookstore.pb.go +++ b/example/bookstore/v1/bookstore.pb.go @@ -178,6 +178,73 @@ func (x *BookEdition) GetPath() string { return "" } +// A DeletedPublisher. +type DeletedPublisher struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Field for description. + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + // Field for expire_time. + ExpireTime string `protobuf:"bytes,2,opt,name=expire_time,proto3" json:"expire_time,omitempty"` + // Field for path. + Path string `protobuf:"bytes,10018,opt,name=path,proto3" json:"path,omitempty"` +} + +func (x *DeletedPublisher) Reset() { + *x = DeletedPublisher{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeletedPublisher) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletedPublisher) ProtoMessage() {} + +func (x *DeletedPublisher) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[2] + 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 DeletedPublisher.ProtoReflect.Descriptor instead. +func (*DeletedPublisher) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{2} +} + +func (x *DeletedPublisher) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *DeletedPublisher) GetExpireTime() string { + if x != nil { + return x.ExpireTime + } + return "" +} + +func (x *DeletedPublisher) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + // A Isbn. type Isbn struct { state protoimpl.MessageState @@ -191,7 +258,7 @@ type Isbn struct { func (x *Isbn) Reset() { *x = Isbn{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[2] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -204,7 +271,7 @@ func (x *Isbn) String() string { func (*Isbn) ProtoMessage() {} func (x *Isbn) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[2] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -217,7 +284,7 @@ func (x *Isbn) ProtoReflect() protoreflect.Message { // Deprecated: Use Isbn.ProtoReflect.Descriptor instead. func (*Isbn) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{2} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{3} } func (x *Isbn) GetPath() string { @@ -246,7 +313,7 @@ type Item struct { func (x *Item) Reset() { *x = Item{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[3] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -259,7 +326,7 @@ func (x *Item) String() string { func (*Item) ProtoMessage() {} func (x *Item) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[3] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -272,7 +339,7 @@ func (x *Item) ProtoReflect() protoreflect.Message { // Deprecated: Use Item.ProtoReflect.Descriptor instead. func (*Item) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{3} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{4} } func (x *Item) GetBook() string { @@ -318,7 +385,7 @@ type Publisher struct { func (x *Publisher) Reset() { *x = Publisher{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[4] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -331,7 +398,7 @@ func (x *Publisher) String() string { func (*Publisher) ProtoMessage() {} func (x *Publisher) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[4] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -344,7 +411,7 @@ func (x *Publisher) ProtoReflect() protoreflect.Message { // Deprecated: Use Publisher.ProtoReflect.Descriptor instead. func (*Publisher) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{4} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{5} } func (x *Publisher) GetDescription() string { @@ -378,7 +445,7 @@ type Store struct { func (x *Store) Reset() { *x = Store{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[5] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -391,7 +458,7 @@ func (x *Store) String() string { func (*Store) ProtoMessage() {} func (x *Store) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[5] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -404,7 +471,7 @@ func (x *Store) ProtoReflect() protoreflect.Message { // Deprecated: Use Store.ProtoReflect.Descriptor instead. func (*Store) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{5} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{6} } func (x *Store) GetName() string { @@ -445,7 +512,7 @@ type CreateBookRequest struct { func (x *CreateBookRequest) Reset() { *x = CreateBookRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[6] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -458,7 +525,7 @@ func (x *CreateBookRequest) String() string { func (*CreateBookRequest) ProtoMessage() {} func (x *CreateBookRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[6] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -471,7 +538,7 @@ func (x *CreateBookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBookRequest.ProtoReflect.Descriptor instead. func (*CreateBookRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{6} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{7} } func (x *CreateBookRequest) GetParent() string { @@ -508,7 +575,7 @@ type GetBookRequest struct { func (x *GetBookRequest) Reset() { *x = GetBookRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[7] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -521,7 +588,7 @@ func (x *GetBookRequest) String() string { func (*GetBookRequest) ProtoMessage() {} func (x *GetBookRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[7] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -534,7 +601,7 @@ func (x *GetBookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBookRequest.ProtoReflect.Descriptor instead. func (*GetBookRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{7} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{8} } func (x *GetBookRequest) GetPath() string { @@ -561,7 +628,7 @@ type UpdateBookRequest struct { func (x *UpdateBookRequest) Reset() { *x = UpdateBookRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[8] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -574,7 +641,7 @@ func (x *UpdateBookRequest) String() string { func (*UpdateBookRequest) ProtoMessage() {} func (x *UpdateBookRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[8] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -587,7 +654,7 @@ func (x *UpdateBookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateBookRequest.ProtoReflect.Descriptor instead. func (*UpdateBookRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{8} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{9} } func (x *UpdateBookRequest) GetPath() string { @@ -626,7 +693,7 @@ type DeleteBookRequest struct { func (x *DeleteBookRequest) Reset() { *x = DeleteBookRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[9] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -639,7 +706,7 @@ func (x *DeleteBookRequest) String() string { func (*DeleteBookRequest) ProtoMessage() {} func (x *DeleteBookRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[9] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -652,7 +719,7 @@ func (x *DeleteBookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBookRequest.ProtoReflect.Descriptor instead. func (*DeleteBookRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{9} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{10} } func (x *DeleteBookRequest) GetPath() string { @@ -686,7 +753,7 @@ type ListBooksRequest struct { func (x *ListBooksRequest) Reset() { *x = ListBooksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[10] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -699,7 +766,7 @@ func (x *ListBooksRequest) String() string { func (*ListBooksRequest) ProtoMessage() {} func (x *ListBooksRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[10] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -712,7 +779,7 @@ func (x *ListBooksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBooksRequest.ProtoReflect.Descriptor instead. func (*ListBooksRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{10} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{11} } func (x *ListBooksRequest) GetParent() string { @@ -753,7 +820,7 @@ type ListBooksResponse struct { func (x *ListBooksResponse) Reset() { *x = ListBooksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[11] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -766,7 +833,7 @@ func (x *ListBooksResponse) String() string { func (*ListBooksResponse) ProtoMessage() {} func (x *ListBooksResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[11] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -779,7 +846,7 @@ func (x *ListBooksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBooksResponse.ProtoReflect.Descriptor instead. func (*ListBooksResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{11} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{12} } func (x *ListBooksResponse) GetResults() []*Book { @@ -818,7 +885,7 @@ type ApplyBookRequest struct { func (x *ApplyBookRequest) Reset() { *x = ApplyBookRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[12] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -831,7 +898,7 @@ func (x *ApplyBookRequest) String() string { func (*ApplyBookRequest) ProtoMessage() {} func (x *ApplyBookRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[12] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -844,7 +911,7 @@ func (x *ApplyBookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyBookRequest.ProtoReflect.Descriptor instead. func (*ApplyBookRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{12} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{13} } func (x *ApplyBookRequest) GetPath() string { @@ -871,7 +938,7 @@ type ArchiveBookResponse struct { func (x *ArchiveBookResponse) Reset() { *x = ArchiveBookResponse{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[13] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -884,7 +951,7 @@ func (x *ArchiveBookResponse) String() string { func (*ArchiveBookResponse) ProtoMessage() {} func (x *ArchiveBookResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[13] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -897,7 +964,7 @@ func (x *ArchiveBookResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ArchiveBookResponse.ProtoReflect.Descriptor instead. func (*ArchiveBookResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{13} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{14} } // Request message for the archive method @@ -913,7 +980,7 @@ type ArchiveBookRequest struct { func (x *ArchiveBookRequest) Reset() { *x = ArchiveBookRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[14] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -926,7 +993,7 @@ func (x *ArchiveBookRequest) String() string { func (*ArchiveBookRequest) ProtoMessage() {} func (x *ArchiveBookRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[14] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -939,7 +1006,7 @@ func (x *ArchiveBookRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ArchiveBookRequest.ProtoReflect.Descriptor instead. func (*ArchiveBookRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{14} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{15} } func (x *ArchiveBookRequest) GetPath() string { @@ -966,7 +1033,7 @@ type CreateBookEditionRequest struct { func (x *CreateBookEditionRequest) Reset() { *x = CreateBookEditionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[15] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -979,7 +1046,7 @@ func (x *CreateBookEditionRequest) String() string { func (*CreateBookEditionRequest) ProtoMessage() {} func (x *CreateBookEditionRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[15] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -992,7 +1059,7 @@ func (x *CreateBookEditionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBookEditionRequest.ProtoReflect.Descriptor instead. func (*CreateBookEditionRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{15} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{16} } func (x *CreateBookEditionRequest) GetParent() string { @@ -1029,7 +1096,7 @@ type GetBookEditionRequest struct { func (x *GetBookEditionRequest) Reset() { *x = GetBookEditionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[16] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1042,7 +1109,7 @@ func (x *GetBookEditionRequest) String() string { func (*GetBookEditionRequest) ProtoMessage() {} func (x *GetBookEditionRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[16] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1055,7 +1122,7 @@ func (x *GetBookEditionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBookEditionRequest.ProtoReflect.Descriptor instead. func (*GetBookEditionRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{16} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{17} } func (x *GetBookEditionRequest) GetPath() string { @@ -1078,7 +1145,7 @@ type DeleteBookEditionRequest struct { func (x *DeleteBookEditionRequest) Reset() { *x = DeleteBookEditionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[17] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1091,7 +1158,7 @@ func (x *DeleteBookEditionRequest) String() string { func (*DeleteBookEditionRequest) ProtoMessage() {} func (x *DeleteBookEditionRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[17] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1104,7 +1171,7 @@ func (x *DeleteBookEditionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBookEditionRequest.ProtoReflect.Descriptor instead. func (*DeleteBookEditionRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{17} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{18} } func (x *DeleteBookEditionRequest) GetPath() string { @@ -1131,7 +1198,7 @@ type ListBookEditionsRequest struct { func (x *ListBookEditionsRequest) Reset() { *x = ListBookEditionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[18] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1144,7 +1211,7 @@ func (x *ListBookEditionsRequest) String() string { func (*ListBookEditionsRequest) ProtoMessage() {} func (x *ListBookEditionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[18] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1157,7 +1224,7 @@ func (x *ListBookEditionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBookEditionsRequest.ProtoReflect.Descriptor instead. func (*ListBookEditionsRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{18} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{19} } func (x *ListBookEditionsRequest) GetParent() string { @@ -1196,7 +1263,7 @@ type ListBookEditionsResponse struct { func (x *ListBookEditionsResponse) Reset() { *x = ListBookEditionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[19] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1209,7 +1276,7 @@ func (x *ListBookEditionsResponse) String() string { func (*ListBookEditionsResponse) ProtoMessage() {} func (x *ListBookEditionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[19] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1222,7 +1289,7 @@ func (x *ListBookEditionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBookEditionsResponse.ProtoReflect.Descriptor instead. func (*ListBookEditionsResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{19} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{20} } func (x *ListBookEditionsResponse) GetResults() []*BookEdition { @@ -1239,75 +1306,8 @@ func (x *ListBookEditionsResponse) GetNextPageToken() string { return "" } -// A Create request for a isbn resource. -type CreateIsbnRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A field for the parent of isbn - Parent string `protobuf:"bytes,10013,opt,name=parent,proto3" json:"parent,omitempty"` - // An id that uniquely identifies the resource within the collection - Id string `protobuf:"bytes,10014,opt,name=id,proto3" json:"id,omitempty"` - // The resource to perform the operation on. - Isbn *Isbn `protobuf:"bytes,10015,opt,name=isbn,proto3" json:"isbn,omitempty"` -} - -func (x *CreateIsbnRequest) Reset() { - *x = CreateIsbnRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateIsbnRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateIsbnRequest) ProtoMessage() {} - -func (x *CreateIsbnRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[20] - 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 CreateIsbnRequest.ProtoReflect.Descriptor instead. -func (*CreateIsbnRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{20} -} - -func (x *CreateIsbnRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *CreateIsbnRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *CreateIsbnRequest) GetIsbn() *Isbn { - if x != nil { - return x.Isbn - } - return nil -} - -// Request message for the Getisbn method -type GetIsbnRequest struct { +// Request message for the Getdeleted_publisher method +type GetDeletedPublisherRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1316,8 +1316,8 @@ type GetIsbnRequest struct { Path string `protobuf:"bytes,10018,opt,name=path,proto3" json:"path,omitempty"` } -func (x *GetIsbnRequest) Reset() { - *x = GetIsbnRequest{} +func (x *GetDeletedPublisherRequest) Reset() { + *x = GetDeletedPublisherRequest{} if protoimpl.UnsafeEnabled { mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1325,13 +1325,13 @@ func (x *GetIsbnRequest) Reset() { } } -func (x *GetIsbnRequest) String() string { +func (x *GetDeletedPublisherRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetIsbnRequest) ProtoMessage() {} +func (*GetDeletedPublisherRequest) ProtoMessage() {} -func (x *GetIsbnRequest) ProtoReflect() protoreflect.Message { +func (x *GetDeletedPublisherRequest) ProtoReflect() protoreflect.Message { mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1343,25 +1343,25 @@ func (x *GetIsbnRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetIsbnRequest.ProtoReflect.Descriptor instead. -func (*GetIsbnRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetDeletedPublisherRequest.ProtoReflect.Descriptor instead. +func (*GetDeletedPublisherRequest) Descriptor() ([]byte, []int) { return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{21} } -func (x *GetIsbnRequest) GetPath() string { +func (x *GetDeletedPublisherRequest) GetPath() string { if x != nil { return x.Path } return "" } -// Request message for the Listisbn method -type ListIsbnsRequest struct { +// Request message for the Listdeleted_publisher method +type ListDeletedPublishersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A field for the parent of isbn + // A field for the parent of deleted_publisher Parent string `protobuf:"bytes,10013,opt,name=parent,proto3" json:"parent,omitempty"` // The page token indicating the starting point of the page PageToken string `protobuf:"bytes,10010,opt,name=page_token,proto3" json:"page_token,omitempty"` @@ -1369,8 +1369,8 @@ type ListIsbnsRequest struct { MaxPageSize int32 `protobuf:"varint,10017,opt,name=max_page_size,proto3" json:"max_page_size,omitempty"` } -func (x *ListIsbnsRequest) Reset() { - *x = ListIsbnsRequest{} +func (x *ListDeletedPublishersRequest) Reset() { + *x = ListDeletedPublishersRequest{} if protoimpl.UnsafeEnabled { mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1378,13 +1378,13 @@ func (x *ListIsbnsRequest) Reset() { } } -func (x *ListIsbnsRequest) String() string { +func (x *ListDeletedPublishersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListIsbnsRequest) ProtoMessage() {} +func (*ListDeletedPublishersRequest) ProtoMessage() {} -func (x *ListIsbnsRequest) ProtoReflect() protoreflect.Message { +func (x *ListDeletedPublishersRequest) ProtoReflect() protoreflect.Message { mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1396,46 +1396,46 @@ func (x *ListIsbnsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListIsbnsRequest.ProtoReflect.Descriptor instead. -func (*ListIsbnsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDeletedPublishersRequest.ProtoReflect.Descriptor instead. +func (*ListDeletedPublishersRequest) Descriptor() ([]byte, []int) { return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{22} } -func (x *ListIsbnsRequest) GetParent() string { +func (x *ListDeletedPublishersRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (x *ListIsbnsRequest) GetPageToken() string { +func (x *ListDeletedPublishersRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } -func (x *ListIsbnsRequest) GetMaxPageSize() int32 { +func (x *ListDeletedPublishersRequest) GetMaxPageSize() int32 { if x != nil { return x.MaxPageSize } return 0 } -// Response message for the Listisbn method -type ListIsbnsResponse struct { +// Response message for the Listdeleted_publisher method +type ListDeletedPublishersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of isbns - Results []*Isbn `protobuf:"bytes,10016,rep,name=results,proto3" json:"results,omitempty"` + // A list of deleted_publishers + Results []*DeletedPublisher `protobuf:"bytes,10016,rep,name=results,proto3" json:"results,omitempty"` // The page token indicating the ending point of this response. NextPageToken string `protobuf:"bytes,10011,opt,name=next_page_token,proto3" json:"next_page_token,omitempty"` } -func (x *ListIsbnsResponse) Reset() { - *x = ListIsbnsResponse{} +func (x *ListDeletedPublishersResponse) Reset() { + *x = ListDeletedPublishersResponse{} if protoimpl.UnsafeEnabled { mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1443,6 +1443,335 @@ func (x *ListIsbnsResponse) Reset() { } } +func (x *ListDeletedPublishersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDeletedPublishersResponse) ProtoMessage() {} + +func (x *ListDeletedPublishersResponse) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[23] + 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 ListDeletedPublishersResponse.ProtoReflect.Descriptor instead. +func (*ListDeletedPublishersResponse) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{23} +} + +func (x *ListDeletedPublishersResponse) GetResults() []*DeletedPublisher { + if x != nil { + return x.Results + } + return nil +} + +func (x *ListDeletedPublishersResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Response message for the undelete method +type UndeleteDeletedPublisherResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UndeleteDeletedPublisherResponse) Reset() { + *x = UndeleteDeletedPublisherResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UndeleteDeletedPublisherResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UndeleteDeletedPublisherResponse) ProtoMessage() {} + +func (x *UndeleteDeletedPublisherResponse) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[24] + 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 UndeleteDeletedPublisherResponse.ProtoReflect.Descriptor instead. +func (*UndeleteDeletedPublisherResponse) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{24} +} + +// Request message for the undelete method +type UndeleteDeletedPublisherRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The globally unique identifier for the resource + Path string `protobuf:"bytes,10018,opt,name=path,proto3" json:"path,omitempty"` +} + +func (x *UndeleteDeletedPublisherRequest) Reset() { + *x = UndeleteDeletedPublisherRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UndeleteDeletedPublisherRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UndeleteDeletedPublisherRequest) ProtoMessage() {} + +func (x *UndeleteDeletedPublisherRequest) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UndeleteDeletedPublisherRequest.ProtoReflect.Descriptor instead. +func (*UndeleteDeletedPublisherRequest) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{25} +} + +func (x *UndeleteDeletedPublisherRequest) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +// A Create request for a isbn resource. +type CreateIsbnRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A field for the parent of isbn + Parent string `protobuf:"bytes,10013,opt,name=parent,proto3" json:"parent,omitempty"` + // An id that uniquely identifies the resource within the collection + Id string `protobuf:"bytes,10014,opt,name=id,proto3" json:"id,omitempty"` + // The resource to perform the operation on. + Isbn *Isbn `protobuf:"bytes,10015,opt,name=isbn,proto3" json:"isbn,omitempty"` +} + +func (x *CreateIsbnRequest) Reset() { + *x = CreateIsbnRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateIsbnRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateIsbnRequest) ProtoMessage() {} + +func (x *CreateIsbnRequest) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[26] + 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 CreateIsbnRequest.ProtoReflect.Descriptor instead. +func (*CreateIsbnRequest) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{26} +} + +func (x *CreateIsbnRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateIsbnRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *CreateIsbnRequest) GetIsbn() *Isbn { + if x != nil { + return x.Isbn + } + return nil +} + +// Request message for the Getisbn method +type GetIsbnRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The globally unique identifier for the resource + Path string `protobuf:"bytes,10018,opt,name=path,proto3" json:"path,omitempty"` +} + +func (x *GetIsbnRequest) Reset() { + *x = GetIsbnRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetIsbnRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetIsbnRequest) ProtoMessage() {} + +func (x *GetIsbnRequest) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_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 GetIsbnRequest.ProtoReflect.Descriptor instead. +func (*GetIsbnRequest) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{27} +} + +func (x *GetIsbnRequest) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +// Request message for the Listisbn method +type ListIsbnsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A field for the parent of isbn + Parent string `protobuf:"bytes,10013,opt,name=parent,proto3" json:"parent,omitempty"` + // The page token indicating the starting point of the page + PageToken string `protobuf:"bytes,10010,opt,name=page_token,proto3" json:"page_token,omitempty"` + // The maximum number of resources to return in a single page. + MaxPageSize int32 `protobuf:"varint,10017,opt,name=max_page_size,proto3" json:"max_page_size,omitempty"` +} + +func (x *ListIsbnsRequest) Reset() { + *x = ListIsbnsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListIsbnsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListIsbnsRequest) ProtoMessage() {} + +func (x *ListIsbnsRequest) ProtoReflect() protoreflect.Message { + mi := &file_example_bookstore_v1_bookstore_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 ListIsbnsRequest.ProtoReflect.Descriptor instead. +func (*ListIsbnsRequest) Descriptor() ([]byte, []int) { + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{28} +} + +func (x *ListIsbnsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListIsbnsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListIsbnsRequest) GetMaxPageSize() int32 { + if x != nil { + return x.MaxPageSize + } + return 0 +} + +// Response message for the Listisbn method +type ListIsbnsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A list of isbns + Results []*Isbn `protobuf:"bytes,10016,rep,name=results,proto3" json:"results,omitempty"` + // The page token indicating the ending point of this response. + NextPageToken string `protobuf:"bytes,10011,opt,name=next_page_token,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListIsbnsResponse) Reset() { + *x = ListIsbnsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + func (x *ListIsbnsResponse) String() string { return protoimpl.X.MessageStringOf(x) } @@ -1450,7 +1779,7 @@ func (x *ListIsbnsResponse) String() string { func (*ListIsbnsResponse) ProtoMessage() {} func (x *ListIsbnsResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[23] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1463,7 +1792,7 @@ func (x *ListIsbnsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListIsbnsResponse.ProtoReflect.Descriptor instead. func (*ListIsbnsResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{23} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{29} } func (x *ListIsbnsResponse) GetResults() []*Isbn { @@ -1497,7 +1826,7 @@ type CreateItemRequest struct { func (x *CreateItemRequest) Reset() { *x = CreateItemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[24] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1510,7 +1839,7 @@ func (x *CreateItemRequest) String() string { func (*CreateItemRequest) ProtoMessage() {} func (x *CreateItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[24] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1523,7 +1852,7 @@ func (x *CreateItemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateItemRequest.ProtoReflect.Descriptor instead. func (*CreateItemRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{24} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{30} } func (x *CreateItemRequest) GetParent() string { @@ -1560,7 +1889,7 @@ type GetItemRequest struct { func (x *GetItemRequest) Reset() { *x = GetItemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[25] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1573,7 +1902,7 @@ func (x *GetItemRequest) String() string { func (*GetItemRequest) ProtoMessage() {} func (x *GetItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[25] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1586,7 +1915,7 @@ func (x *GetItemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetItemRequest.ProtoReflect.Descriptor instead. func (*GetItemRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{25} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{31} } func (x *GetItemRequest) GetPath() string { @@ -1613,7 +1942,7 @@ type UpdateItemRequest struct { func (x *UpdateItemRequest) Reset() { *x = UpdateItemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[26] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1955,7 @@ func (x *UpdateItemRequest) String() string { func (*UpdateItemRequest) ProtoMessage() {} func (x *UpdateItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[26] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1968,7 @@ func (x *UpdateItemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateItemRequest.ProtoReflect.Descriptor instead. func (*UpdateItemRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{26} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{32} } func (x *UpdateItemRequest) GetPath() string { @@ -1676,7 +2005,7 @@ type DeleteItemRequest struct { func (x *DeleteItemRequest) Reset() { *x = DeleteItemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[27] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1689,7 +2018,7 @@ func (x *DeleteItemRequest) String() string { func (*DeleteItemRequest) ProtoMessage() {} func (x *DeleteItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[27] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1702,7 +2031,7 @@ func (x *DeleteItemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteItemRequest.ProtoReflect.Descriptor instead. func (*DeleteItemRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{27} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{33} } func (x *DeleteItemRequest) GetPath() string { @@ -1733,7 +2062,7 @@ type ListItemsRequest struct { func (x *ListItemsRequest) Reset() { *x = ListItemsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[28] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1746,7 +2075,7 @@ func (x *ListItemsRequest) String() string { func (*ListItemsRequest) ProtoMessage() {} func (x *ListItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[28] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1759,7 +2088,7 @@ func (x *ListItemsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListItemsRequest.ProtoReflect.Descriptor instead. func (*ListItemsRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{28} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{34} } func (x *ListItemsRequest) GetParent() string { @@ -1812,7 +2141,7 @@ type ListItemsResponse struct { func (x *ListItemsResponse) Reset() { *x = ListItemsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[29] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1825,7 +2154,7 @@ func (x *ListItemsResponse) String() string { func (*ListItemsResponse) ProtoMessage() {} func (x *ListItemsResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[29] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +2167,7 @@ func (x *ListItemsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListItemsResponse.ProtoReflect.Descriptor instead. func (*ListItemsResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{29} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{35} } func (x *ListItemsResponse) GetResults() []*Item { @@ -1870,7 +2199,7 @@ type MoveItemRequest struct { func (x *MoveItemRequest) Reset() { *x = MoveItemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[30] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1883,7 +2212,7 @@ func (x *MoveItemRequest) String() string { func (*MoveItemRequest) ProtoMessage() {} func (x *MoveItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[30] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1896,7 +2225,7 @@ func (x *MoveItemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveItemRequest.ProtoReflect.Descriptor instead. func (*MoveItemRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{30} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{36} } func (x *MoveItemRequest) GetTargetStore() string { @@ -1930,7 +2259,7 @@ type CreatePublisherRequest struct { func (x *CreatePublisherRequest) Reset() { *x = CreatePublisherRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[31] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1943,7 +2272,7 @@ func (x *CreatePublisherRequest) String() string { func (*CreatePublisherRequest) ProtoMessage() {} func (x *CreatePublisherRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[31] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1956,7 +2285,7 @@ func (x *CreatePublisherRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePublisherRequest.ProtoReflect.Descriptor instead. func (*CreatePublisherRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{31} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{37} } func (x *CreatePublisherRequest) GetParent() string { @@ -1993,7 +2322,7 @@ type GetPublisherRequest struct { func (x *GetPublisherRequest) Reset() { *x = GetPublisherRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[32] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2006,7 +2335,7 @@ func (x *GetPublisherRequest) String() string { func (*GetPublisherRequest) ProtoMessage() {} func (x *GetPublisherRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[32] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2019,7 +2348,7 @@ func (x *GetPublisherRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPublisherRequest.ProtoReflect.Descriptor instead. func (*GetPublisherRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{32} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{38} } func (x *GetPublisherRequest) GetPath() string { @@ -2046,7 +2375,7 @@ type UpdatePublisherRequest struct { func (x *UpdatePublisherRequest) Reset() { *x = UpdatePublisherRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[33] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2059,7 +2388,7 @@ func (x *UpdatePublisherRequest) String() string { func (*UpdatePublisherRequest) ProtoMessage() {} func (x *UpdatePublisherRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[33] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2072,7 +2401,7 @@ func (x *UpdatePublisherRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePublisherRequest.ProtoReflect.Descriptor instead. func (*UpdatePublisherRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{33} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{39} } func (x *UpdatePublisherRequest) GetPath() string { @@ -2111,7 +2440,7 @@ type DeletePublisherRequest struct { func (x *DeletePublisherRequest) Reset() { *x = DeletePublisherRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[34] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2124,7 +2453,7 @@ func (x *DeletePublisherRequest) String() string { func (*DeletePublisherRequest) ProtoMessage() {} func (x *DeletePublisherRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[34] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2137,7 +2466,7 @@ func (x *DeletePublisherRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePublisherRequest.ProtoReflect.Descriptor instead. func (*DeletePublisherRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{34} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{40} } func (x *DeletePublisherRequest) GetPath() string { @@ -2175,7 +2504,7 @@ type ListPublishersRequest struct { func (x *ListPublishersRequest) Reset() { *x = ListPublishersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[35] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2188,7 +2517,7 @@ func (x *ListPublishersRequest) String() string { func (*ListPublishersRequest) ProtoMessage() {} func (x *ListPublishersRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[35] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2201,7 +2530,7 @@ func (x *ListPublishersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPublishersRequest.ProtoReflect.Descriptor instead. func (*ListPublishersRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{35} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{41} } func (x *ListPublishersRequest) GetParent() string { @@ -2254,7 +2583,7 @@ type ListPublishersResponse struct { func (x *ListPublishersResponse) Reset() { *x = ListPublishersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[36] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2267,7 +2596,7 @@ func (x *ListPublishersResponse) String() string { func (*ListPublishersResponse) ProtoMessage() {} func (x *ListPublishersResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[36] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2280,7 +2609,7 @@ func (x *ListPublishersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPublishersResponse.ProtoReflect.Descriptor instead. func (*ListPublishersResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{36} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{42} } func (x *ListPublishersResponse) GetResults() []*Publisher { @@ -2312,7 +2641,7 @@ type ApplyPublisherRequest struct { func (x *ApplyPublisherRequest) Reset() { *x = ApplyPublisherRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[37] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2325,7 +2654,7 @@ func (x *ApplyPublisherRequest) String() string { func (*ApplyPublisherRequest) ProtoMessage() {} func (x *ApplyPublisherRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[37] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2338,7 +2667,7 @@ func (x *ApplyPublisherRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyPublisherRequest.ProtoReflect.Descriptor instead. func (*ApplyPublisherRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{37} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{43} } func (x *ApplyPublisherRequest) GetPath() string { @@ -2372,7 +2701,7 @@ type CreateStoreRequest struct { func (x *CreateStoreRequest) Reset() { *x = CreateStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[38] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2385,7 +2714,7 @@ func (x *CreateStoreRequest) String() string { func (*CreateStoreRequest) ProtoMessage() {} func (x *CreateStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[38] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2398,7 +2727,7 @@ func (x *CreateStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateStoreRequest.ProtoReflect.Descriptor instead. func (*CreateStoreRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{38} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{44} } func (x *CreateStoreRequest) GetParent() string { @@ -2435,7 +2764,7 @@ type GetStoreRequest struct { func (x *GetStoreRequest) Reset() { *x = GetStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[39] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2448,7 +2777,7 @@ func (x *GetStoreRequest) String() string { func (*GetStoreRequest) ProtoMessage() {} func (x *GetStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[39] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2461,7 +2790,7 @@ func (x *GetStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStoreRequest.ProtoReflect.Descriptor instead. func (*GetStoreRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{39} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{45} } func (x *GetStoreRequest) GetPath() string { @@ -2488,7 +2817,7 @@ type UpdateStoreRequest struct { func (x *UpdateStoreRequest) Reset() { *x = UpdateStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[40] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2501,7 +2830,7 @@ func (x *UpdateStoreRequest) String() string { func (*UpdateStoreRequest) ProtoMessage() {} func (x *UpdateStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[40] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2514,7 +2843,7 @@ func (x *UpdateStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateStoreRequest.ProtoReflect.Descriptor instead. func (*UpdateStoreRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{40} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{46} } func (x *UpdateStoreRequest) GetPath() string { @@ -2553,7 +2882,7 @@ type DeleteStoreRequest struct { func (x *DeleteStoreRequest) Reset() { *x = DeleteStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[41] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2566,7 +2895,7 @@ func (x *DeleteStoreRequest) String() string { func (*DeleteStoreRequest) ProtoMessage() {} func (x *DeleteStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[41] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2579,7 +2908,7 @@ func (x *DeleteStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteStoreRequest.ProtoReflect.Descriptor instead. func (*DeleteStoreRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{41} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{47} } func (x *DeleteStoreRequest) GetPath() string { @@ -2617,7 +2946,7 @@ type ListStoresRequest struct { func (x *ListStoresRequest) Reset() { *x = ListStoresRequest{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[42] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2630,7 +2959,7 @@ func (x *ListStoresRequest) String() string { func (*ListStoresRequest) ProtoMessage() {} func (x *ListStoresRequest) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[42] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2643,7 +2972,7 @@ func (x *ListStoresRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListStoresRequest.ProtoReflect.Descriptor instead. func (*ListStoresRequest) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{42} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{48} } func (x *ListStoresRequest) GetParent() string { @@ -2696,7 +3025,7 @@ type ListStoresResponse struct { func (x *ListStoresResponse) Reset() { *x = ListStoresResponse{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[43] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2709,7 +3038,7 @@ func (x *ListStoresResponse) String() string { func (*ListStoresResponse) ProtoMessage() {} func (x *ListStoresResponse) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[43] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2722,7 +3051,7 @@ func (x *ListStoresResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListStoresResponse.ProtoReflect.Descriptor instead. func (*ListStoresResponse) Descriptor() ([]byte, []int) { - return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{43} + return file_example_bookstore_v1_bookstore_proto_rawDescGZIP(), []int{49} } func (x *ListStoresResponse) GetResults() []*Store { @@ -2754,7 +3083,7 @@ type Book_Author struct { func (x *Book_Author) Reset() { *x = Book_Author{} if protoimpl.UnsafeEnabled { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[44] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2767,7 +3096,7 @@ func (x *Book_Author) String() string { func (*Book_Author) ProtoMessage() {} func (x *Book_Author) ProtoReflect() protoreflect.Message { - mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[44] + mi := &file_example_bookstore_v1_bookstore_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2857,637 +3186,718 @@ var file_example_bookstore_v1_bookstore_proto_rawDesc = []byte{ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2a, 0x0d, 0x62, 0x6f, 0x6f, 0x6b, 0x2d, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x2d, 0x65, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x04, 0x49, 0x73, 0x62, 0x6e, 0x12, 0x13, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x3a, 0x3d, 0xea, 0x41, 0x3a, 0x0a, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x73, - 0x62, 0x6e, 0x12, 0x0f, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x62, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2a, 0x05, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x32, 0x04, 0x69, 0x73, 0x62, 0x6e, - 0x22, 0xcc, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x28, 0x0a, - 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, - 0x01, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, 0x4f, - 0xea, 0x41, 0x4c, 0x0a, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x12, - 0x21, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, - 0x64, 0x7d, 0x2a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, - 0x9a, 0x01, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x3a, 0x56, 0xea, 0x41, 0x53, 0x0a, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x19, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, - 0x73, 0x32, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0xa2, 0x01, 0x0a, - 0x05, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, 0x42, 0xea, - 0x41, 0x3f, 0x0a, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, - 0x11, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2a, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x32, 0x05, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, - 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, - 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, - 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x4d, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, - 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, - 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, - 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, - 0x6f, 0x6f, 0x6b, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x04, - 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, - 0x1a, 0x01, 0x02, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x73, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, - 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, - 0x6b, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0a, 0xe0, 0x41, 0x01, 0xc2, - 0x91, 0x05, 0x03, 0x1a, 0x01, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x7f, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xb4, - 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, - 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, - 0x6f, 0x6b, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, - 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, - 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0xa3, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, - 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x42, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x13, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x3a, 0x7e, 0xea, 0x41, 0x7b, 0x0a, 0x27, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x12, 0x29, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2a, 0x12, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x32, + 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x22, 0x5a, 0x0a, 0x04, 0x49, 0x73, 0x62, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, + 0x3d, 0xea, 0x41, 0x3a, 0x0a, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x73, 0x62, 0x6e, + 0x12, 0x0f, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x62, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2a, 0x05, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x32, 0x04, 0x69, 0x73, 0x62, 0x6e, 0x22, 0xcc, + 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x28, 0x0a, 0x09, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, + 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, 0x4f, 0xea, 0x41, + 0x4c, 0x0a, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x21, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, + 0x2a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x9a, 0x01, + 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x3a, 0x56, 0xea, 0x41, 0x53, 0x0a, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x19, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x2a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x32, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x05, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, + 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, 0x42, 0xea, 0x41, 0x3f, + 0x0a, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x11, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2a, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x32, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, + 0x86, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, + 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x04, 0x62, + 0x6f, 0x6f, 0x6b, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, + 0x01, 0x02, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x4d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x1a, 0x01, - 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x18, - 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, - 0x6f, 0x6b, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, - 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, - 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xa4, - 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, - 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x52, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xe0, 0x41, 0x02, - 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, - 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, - 0x41, 0x02, 0xc2, 0x91, 0x05, 0x27, 0x12, 0x22, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, - 0x6f, 0x6b, 0x2d, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x22, 0x5f, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, - 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x43, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, - 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x27, 0x12, 0x22, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, - 0x6f, 0x6f, 0x6b, 0x2d, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x01, 0x02, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0x86, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x83, 0x01, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, - 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, - 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x3b, 0x0a, 0x04, 0x69, 0x73, 0x62, 0x6e, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x62, 0x6e, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, - 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x69, 0x73, 0x62, 0x6e, 0x22, 0x4d, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, - 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x73, - 0x62, 0x6e, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x7f, 0x0a, 0x10, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, + 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, + 0x6b, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x04, 0x62, 0x6f, + 0x6f, 0x6b, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, + 0x02, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x73, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, + 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x1a, + 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0a, 0xe0, 0x41, 0x01, 0xc2, 0x91, 0x05, + 0x03, 0x1a, 0x01, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x7f, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, - 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x75, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x62, 0x6e, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xb4, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, + 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0xa3, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, + 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x1a, 0x01, 0x02, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x9f, 0x4e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, + 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x62, 0x6f, + 0x6f, 0x6b, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, + 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x6f, 0x6f, 0x6b, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xa4, 0x01, 0x0a, + 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x3b, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, - 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x4d, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, - 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x74, - 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xcc, 0x01, 0x0a, 0x11, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3b, - 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, - 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3d, 0x0a, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x50, 0x0a, 0x11, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, - 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, - 0x74, 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xad, 0x01, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x13, - 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0xa5, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0xa6, 0x4e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0f, 0x4d, 0x6f, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, - 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x01, - 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x9a, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x42, 0x0a, 0xe0, - 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xc2, - 0x91, 0x05, 0x24, 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x72, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xe5, 0x01, - 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x24, - 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x42, - 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x7d, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x40, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, - 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x24, 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x0a, 0xe0, 0x41, 0x01, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x01, 0x52, 0x05, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x52, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, + 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, + 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, + 0xc2, 0x91, 0x05, 0x27, 0x12, 0x22, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, + 0x2d, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x22, 0x5f, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, + 0x02, 0xc2, 0x91, 0x05, 0x27, 0x12, 0x22, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x6f, + 0x6b, 0x2d, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x22, 0x86, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, - 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x18, 0xa5, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, - 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0xa6, 0x4e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x16, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, - 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, - 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x66, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x48, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, + 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x2c, 0x12, 0x27, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x8b, 0x01, 0x0a, 0x1c, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, + 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x22, 0x0a, 0x20, 0x55, 0x6e, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x0a, 0x1f, 0x55, + 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, + 0x41, 0x02, 0xc2, 0x91, 0x05, 0x2c, 0x12, 0x27, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x1a, + 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x73, 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x04, 0x69, 0x73, 0x62, 0x6e, 0x18, 0x9f, 0x4e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x62, 0x6e, 0x42, + 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x69, 0x73, 0x62, + 0x6e, 0x22, 0x4d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, + 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x69, 0x73, 0x62, 0x6e, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x22, 0x7f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, + 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, + 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, + 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x22, 0x75, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x73, 0x62, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, + 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x9f, 0x4e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, + 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x69, 0x74, 0x65, + 0x6d, 0x22, 0x4d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, + 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, + 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, + 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x9f, 0x4e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, + 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x0a, + 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x9c, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, + 0x50, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, + 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, + 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0xa5, 0x4e, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0xa6, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x22, 0x75, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, + 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0f, 0x4d, 0x6f, 0x76, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, + 0x3b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, + 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x1f, 0x12, 0x1a, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, + 0x74, 0x65, 0x6d, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x9a, 0x01, 0x0a, + 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, + 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4a, 0x0a, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x40, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2b, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x24, 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x22, 0xe5, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, + 0x02, 0xc2, 0x91, 0x05, 0x24, 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, + 0x4a, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x9f, 0x4e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x65, 0x72, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x7d, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x24, 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x1a, 0x01, 0x02, - 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x61, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, + 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0a, 0xe0, 0x41, 0x01, 0xc2, 0x91, 0x05, 0x03, 0x1a, + 0x01, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x13, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0xa5, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0xa6, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x7f, + 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x42, 0x0a, 0xe0, 0x41, 0x02, - 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, - 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x0f, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x3e, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x0a, 0xe0, 0x41, - 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, - 0x4f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x20, 0x12, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xa5, 0x01, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, + 0x24, 0x12, 0x1f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x9e, 0x4e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x9f, 0x4e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x05, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x22, 0x4f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x20, 0x12, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x01, 0x02, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x9f, - 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x05, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x75, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xc2, 0x91, - 0x05, 0x20, 0x12, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, - 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0a, 0xe0, 0x41, 0x01, 0xc2, 0x91, 0x05, - 0x03, 0x1a, 0x01, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x9d, 0x4e, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x02, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x13, - 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0xa5, 0x4e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0xa6, 0x4e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x77, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0xa0, 0x4e, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, - 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x0f, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9b, 0x4e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x8f, 0x21, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, - 0x6f, 0x6b, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, - 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x22, 0x38, 0xda, 0x41, 0x0b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x2c, 0x62, 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x04, 0x62, - 0x6f, 0x6f, 0x6b, 0x22, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x12, 0x78, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x24, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, + 0xc2, 0x91, 0x05, 0x20, 0x12, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x18, 0x9f, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, + 0x1a, 0x01, 0x02, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x9c, 0x4e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0x75, 0x0a, 0x12, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3c, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa2, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, + 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x20, 0x12, 0x1b, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x01, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0a, 0xe0, + 0x41, 0x01, 0xc2, 0x91, 0x05, 0x03, 0x1a, 0x01, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x22, 0xae, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x9d, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe0, 0x41, 0x02, 0xc2, 0x91, 0x05, 0x03, + 0x1a, 0x01, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x25, 0x0a, 0x0d, + 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xa1, 0x4e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0xa5, 0x4e, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0xa6, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x22, 0x77, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x18, 0xa0, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x29, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x9b, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x95, 0x25, 0x0a, 0x09, 0x42, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x22, 0x38, 0xda, 0x41, + 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x24, 0x3a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x78, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, + 0x6b, 0x12, 0x24, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6f, 0x6f, 0x6b, 0x22, 0x2b, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, + 0x12, 0x90, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x12, + 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6f, 0x6f, 0x6b, 0x22, 0x3d, 0xda, 0x41, 0x10, 0x62, 0x6f, 0x6f, 0x6b, 0x2c, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, + 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x32, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0x7a, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, + 0x6b, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x2b, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x2a, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, + 0x8b, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x26, 0x2e, + 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, + 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, + 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x7b, 0x0a, + 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, - 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x22, 0x2b, - 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, - 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, - 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x0a, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, + 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x22, 0x2a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x1a, 0x1c, 0x2f, 0x7b, + 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x22, - 0x3d, 0xda, 0x41, 0x10, 0x62, 0x6f, 0x6f, 0x6b, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, - 0x32, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x7a, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x27, 0x2e, 0x65, + 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x65, 0x70, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x82, 0x4f, 0x2a, 0x0a, 0x28, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, + 0x22, 0x24, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0xbb, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x53, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, + 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x0c, 0x62, + 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, + 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, + 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, + 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, + 0x93, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0xda, - 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x7b, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x36, 0xda, + 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, - 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x8b, 0x01, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x7b, 0x70, 0x61, + 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, + 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x7b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x79, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x24, 0x3a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x1a, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, - 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x12, 0x2e, 0x61, 0x65, 0x70, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x82, 0x4f, 0x2a, 0x0a, 0x28, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x7b, 0x70, - 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, - 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x12, 0xbb, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, - 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x2b, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0xa6, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x32, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x33, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x18, + 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x35, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x36, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, + 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x6e, 0x0a, 0x0a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x73, 0x62, 0x6e, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, - 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x53, 0xda, 0x41, 0x13, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x98, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, - 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x36, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x29, 0x12, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x2a, 0x2f, 0x65, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x11, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, - 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x36, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, - 0x6b, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x12, 0xab, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, - 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x6f, 0x6f, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x6f, 0x6f, - 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6e, - 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x62, 0x6e, 0x12, 0x27, 0x2e, 0x65, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x62, 0x6e, 0x22, 0x1b, 0xda, 0x41, + 0x04, 0x69, 0x73, 0x62, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x3a, 0x04, 0x69, 0x73, 0x62, + 0x6e, 0x22, 0x06, 0x2f, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x49, 0x73, 0x62, 0x6e, 0x12, 0x24, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x73, 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x73, 0x62, 0x6e, 0x22, 0x1e, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x69, 0x73, + 0x62, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x75, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, + 0x62, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x12, 0x87, 0x01, + 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x62, 0x6e, 0x52, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x62, - 0x6e, 0x22, 0x1b, 0xda, 0x41, 0x04, 0x69, 0x73, 0x62, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, - 0x3a, 0x04, 0x69, 0x73, 0x62, 0x6e, 0x22, 0x06, 0x2f, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x12, 0x6b, - 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x12, 0x24, 0x2e, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x62, 0x6e, 0x22, 0x1e, 0xda, 0x41, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x7b, 0x70, 0x61, - 0x74, 0x68, 0x3d, 0x69, 0x73, 0x62, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x75, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x22, 0x34, 0xda, 0x41, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x74, 0x65, + 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x18, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x74, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x24, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, + 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x62, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x69, 0x73, 0x62, - 0x6e, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, + 0x49, 0x74, 0x65, 0x6d, 0x22, 0x27, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x8c, 0x01, + 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x22, 0x39, 0xda, 0x41, 0x10, 0x69, 0x74, 0x65, 0x6d, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x04, 0x69, 0x74, + 0x65, 0x6d, 0x32, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x76, 0x0a, 0x0a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x34, 0xda, 0x41, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x2c, 0x69, 0x74, 0x65, 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x04, 0x69, 0x74, - 0x65, 0x6d, 0x22, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x74, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x27, 0xda, 0x41, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, - 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, - 0x2a, 0x7d, 0x12, 0x8c, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0xda, 0x41, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x7b, 0x70, 0x61, + 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, + 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x39, 0xda, 0x41, 0x10, 0x69, 0x74, 0x65, 0x6d, 0x2c, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x3a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x32, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0x76, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x27, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, - 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, - 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x26, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x25, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x65, 0x70, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x82, 0x4f, 0x17, - 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, - 0x22, 0x1d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, - 0x2a, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x6f, 0x76, 0x65, 0x12, - 0x8c, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x22, 0x2a, 0xda, 0x41, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x22, 0x0b, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x7f, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x29, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x29, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x89, + 0x01, 0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x25, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x65, 0x70, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x82, 0x4f, 0x17, 0x0a, 0x15, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x7b, 0x70, + 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x0f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x23, 0xda, 0x41, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x7b, 0x70, 0x61, 0x74, - 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0xa1, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x72, 0x22, 0x3f, 0xda, 0x41, 0x15, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, - 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x21, 0x3a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x32, 0x14, 0x2f, - 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, - 0x2f, 0x2a, 0x7d, 0x12, 0x7c, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x23, 0xda, 0x41, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, 0x14, 0x2f, 0x7b, 0x70, - 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, - 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1c, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, - 0x12, 0x0b, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x87, 0x01, - 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, - 0x12, 0x2b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x27, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x1a, 0x14, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x74, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1e, 0xda, - 0x41, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x05, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x22, 0x07, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x6f, 0x0a, - 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x25, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x2a, 0xda, + 0x41, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x3a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x0b, 0x2f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x7f, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1f, 0xda, - 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x7b, - 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x89, - 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x28, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x23, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x0f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x3f, 0xda, + 0x41, 0x15, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x2c, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x32, 0x14, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, + 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x7c, + 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x12, 0x2c, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x23, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, 0x14, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x89, 0x01, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, + 0x2b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0xda, 0x41, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x33, 0xda, 0x41, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x19, 0x3a, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x32, 0x10, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, - 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x70, 0x0a, 0x0b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x21, 0x3a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x1a, 0x14, 0x2f, 0x7b, + 0x70, 0x61, 0x74, 0x68, 0x3d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0x74, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1e, 0xda, 0x41, 0x05, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, + 0x07, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x12, 0x25, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1f, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0b, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0xda, 0x41, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x7b, 0x70, 0x61, - 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x79, 0x0a, 0x0a, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0xda, - 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, - 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x42, 0xa8, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0xa2, 0x02, 0x03, 0x45, 0x42, 0x58, 0xaa, 0x02, 0x14, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x14, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5c, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x5c, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x3a, 0x3a, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x22, 0x33, 0xda, 0x41, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x05, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x32, 0x10, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x70, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0xda, 0x41, 0x04, 0x70, 0x61, 0x74, 0x68, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x79, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, + 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x73, 0x42, 0xa8, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, + 0x0e, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x0a, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, + 0x45, 0x42, 0x58, 0xaa, 0x02, 0x14, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x42, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x14, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x5c, 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5c, 0x42, 0x6f, 0x6f, 0x6b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3a, 0x3a, + 0x42, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3502,149 +3912,162 @@ func file_example_bookstore_v1_bookstore_proto_rawDescGZIP() []byte { return file_example_bookstore_v1_bookstore_proto_rawDescData } -var file_example_bookstore_v1_bookstore_proto_msgTypes = make([]protoimpl.MessageInfo, 45) +var file_example_bookstore_v1_bookstore_proto_msgTypes = make([]protoimpl.MessageInfo, 51) var file_example_bookstore_v1_bookstore_proto_goTypes = []interface{}{ - (*Book)(nil), // 0: example.bookstore.v1.Book - (*BookEdition)(nil), // 1: example.bookstore.v1.BookEdition - (*Isbn)(nil), // 2: example.bookstore.v1.Isbn - (*Item)(nil), // 3: example.bookstore.v1.Item - (*Publisher)(nil), // 4: example.bookstore.v1.Publisher - (*Store)(nil), // 5: example.bookstore.v1.Store - (*CreateBookRequest)(nil), // 6: example.bookstore.v1.CreateBookRequest - (*GetBookRequest)(nil), // 7: example.bookstore.v1.GetBookRequest - (*UpdateBookRequest)(nil), // 8: example.bookstore.v1.UpdateBookRequest - (*DeleteBookRequest)(nil), // 9: example.bookstore.v1.DeleteBookRequest - (*ListBooksRequest)(nil), // 10: example.bookstore.v1.ListBooksRequest - (*ListBooksResponse)(nil), // 11: example.bookstore.v1.ListBooksResponse - (*ApplyBookRequest)(nil), // 12: example.bookstore.v1.ApplyBookRequest - (*ArchiveBookResponse)(nil), // 13: example.bookstore.v1.ArchiveBookResponse - (*ArchiveBookRequest)(nil), // 14: example.bookstore.v1.ArchiveBookRequest - (*CreateBookEditionRequest)(nil), // 15: example.bookstore.v1.CreateBookEditionRequest - (*GetBookEditionRequest)(nil), // 16: example.bookstore.v1.GetBookEditionRequest - (*DeleteBookEditionRequest)(nil), // 17: example.bookstore.v1.DeleteBookEditionRequest - (*ListBookEditionsRequest)(nil), // 18: example.bookstore.v1.ListBookEditionsRequest - (*ListBookEditionsResponse)(nil), // 19: example.bookstore.v1.ListBookEditionsResponse - (*CreateIsbnRequest)(nil), // 20: example.bookstore.v1.CreateIsbnRequest - (*GetIsbnRequest)(nil), // 21: example.bookstore.v1.GetIsbnRequest - (*ListIsbnsRequest)(nil), // 22: example.bookstore.v1.ListIsbnsRequest - (*ListIsbnsResponse)(nil), // 23: example.bookstore.v1.ListIsbnsResponse - (*CreateItemRequest)(nil), // 24: example.bookstore.v1.CreateItemRequest - (*GetItemRequest)(nil), // 25: example.bookstore.v1.GetItemRequest - (*UpdateItemRequest)(nil), // 26: example.bookstore.v1.UpdateItemRequest - (*DeleteItemRequest)(nil), // 27: example.bookstore.v1.DeleteItemRequest - (*ListItemsRequest)(nil), // 28: example.bookstore.v1.ListItemsRequest - (*ListItemsResponse)(nil), // 29: example.bookstore.v1.ListItemsResponse - (*MoveItemRequest)(nil), // 30: example.bookstore.v1.MoveItemRequest - (*CreatePublisherRequest)(nil), // 31: example.bookstore.v1.CreatePublisherRequest - (*GetPublisherRequest)(nil), // 32: example.bookstore.v1.GetPublisherRequest - (*UpdatePublisherRequest)(nil), // 33: example.bookstore.v1.UpdatePublisherRequest - (*DeletePublisherRequest)(nil), // 34: example.bookstore.v1.DeletePublisherRequest - (*ListPublishersRequest)(nil), // 35: example.bookstore.v1.ListPublishersRequest - (*ListPublishersResponse)(nil), // 36: example.bookstore.v1.ListPublishersResponse - (*ApplyPublisherRequest)(nil), // 37: example.bookstore.v1.ApplyPublisherRequest - (*CreateStoreRequest)(nil), // 38: example.bookstore.v1.CreateStoreRequest - (*GetStoreRequest)(nil), // 39: example.bookstore.v1.GetStoreRequest - (*UpdateStoreRequest)(nil), // 40: example.bookstore.v1.UpdateStoreRequest - (*DeleteStoreRequest)(nil), // 41: example.bookstore.v1.DeleteStoreRequest - (*ListStoresRequest)(nil), // 42: example.bookstore.v1.ListStoresRequest - (*ListStoresResponse)(nil), // 43: example.bookstore.v1.ListStoresResponse - (*Book_Author)(nil), // 44: example.bookstore.v1.Book.Author - (*fieldmaskpb.FieldMask)(nil), // 45: google.protobuf.FieldMask - (*emptypb.Empty)(nil), // 46: google.protobuf.Empty - (*api.Operation)(nil), // 47: aep.api.Operation + (*Book)(nil), // 0: example.bookstore.v1.Book + (*BookEdition)(nil), // 1: example.bookstore.v1.BookEdition + (*DeletedPublisher)(nil), // 2: example.bookstore.v1.DeletedPublisher + (*Isbn)(nil), // 3: example.bookstore.v1.Isbn + (*Item)(nil), // 4: example.bookstore.v1.Item + (*Publisher)(nil), // 5: example.bookstore.v1.Publisher + (*Store)(nil), // 6: example.bookstore.v1.Store + (*CreateBookRequest)(nil), // 7: example.bookstore.v1.CreateBookRequest + (*GetBookRequest)(nil), // 8: example.bookstore.v1.GetBookRequest + (*UpdateBookRequest)(nil), // 9: example.bookstore.v1.UpdateBookRequest + (*DeleteBookRequest)(nil), // 10: example.bookstore.v1.DeleteBookRequest + (*ListBooksRequest)(nil), // 11: example.bookstore.v1.ListBooksRequest + (*ListBooksResponse)(nil), // 12: example.bookstore.v1.ListBooksResponse + (*ApplyBookRequest)(nil), // 13: example.bookstore.v1.ApplyBookRequest + (*ArchiveBookResponse)(nil), // 14: example.bookstore.v1.ArchiveBookResponse + (*ArchiveBookRequest)(nil), // 15: example.bookstore.v1.ArchiveBookRequest + (*CreateBookEditionRequest)(nil), // 16: example.bookstore.v1.CreateBookEditionRequest + (*GetBookEditionRequest)(nil), // 17: example.bookstore.v1.GetBookEditionRequest + (*DeleteBookEditionRequest)(nil), // 18: example.bookstore.v1.DeleteBookEditionRequest + (*ListBookEditionsRequest)(nil), // 19: example.bookstore.v1.ListBookEditionsRequest + (*ListBookEditionsResponse)(nil), // 20: example.bookstore.v1.ListBookEditionsResponse + (*GetDeletedPublisherRequest)(nil), // 21: example.bookstore.v1.GetDeletedPublisherRequest + (*ListDeletedPublishersRequest)(nil), // 22: example.bookstore.v1.ListDeletedPublishersRequest + (*ListDeletedPublishersResponse)(nil), // 23: example.bookstore.v1.ListDeletedPublishersResponse + (*UndeleteDeletedPublisherResponse)(nil), // 24: example.bookstore.v1.UndeleteDeletedPublisherResponse + (*UndeleteDeletedPublisherRequest)(nil), // 25: example.bookstore.v1.UndeleteDeletedPublisherRequest + (*CreateIsbnRequest)(nil), // 26: example.bookstore.v1.CreateIsbnRequest + (*GetIsbnRequest)(nil), // 27: example.bookstore.v1.GetIsbnRequest + (*ListIsbnsRequest)(nil), // 28: example.bookstore.v1.ListIsbnsRequest + (*ListIsbnsResponse)(nil), // 29: example.bookstore.v1.ListIsbnsResponse + (*CreateItemRequest)(nil), // 30: example.bookstore.v1.CreateItemRequest + (*GetItemRequest)(nil), // 31: example.bookstore.v1.GetItemRequest + (*UpdateItemRequest)(nil), // 32: example.bookstore.v1.UpdateItemRequest + (*DeleteItemRequest)(nil), // 33: example.bookstore.v1.DeleteItemRequest + (*ListItemsRequest)(nil), // 34: example.bookstore.v1.ListItemsRequest + (*ListItemsResponse)(nil), // 35: example.bookstore.v1.ListItemsResponse + (*MoveItemRequest)(nil), // 36: example.bookstore.v1.MoveItemRequest + (*CreatePublisherRequest)(nil), // 37: example.bookstore.v1.CreatePublisherRequest + (*GetPublisherRequest)(nil), // 38: example.bookstore.v1.GetPublisherRequest + (*UpdatePublisherRequest)(nil), // 39: example.bookstore.v1.UpdatePublisherRequest + (*DeletePublisherRequest)(nil), // 40: example.bookstore.v1.DeletePublisherRequest + (*ListPublishersRequest)(nil), // 41: example.bookstore.v1.ListPublishersRequest + (*ListPublishersResponse)(nil), // 42: example.bookstore.v1.ListPublishersResponse + (*ApplyPublisherRequest)(nil), // 43: example.bookstore.v1.ApplyPublisherRequest + (*CreateStoreRequest)(nil), // 44: example.bookstore.v1.CreateStoreRequest + (*GetStoreRequest)(nil), // 45: example.bookstore.v1.GetStoreRequest + (*UpdateStoreRequest)(nil), // 46: example.bookstore.v1.UpdateStoreRequest + (*DeleteStoreRequest)(nil), // 47: example.bookstore.v1.DeleteStoreRequest + (*ListStoresRequest)(nil), // 48: example.bookstore.v1.ListStoresRequest + (*ListStoresResponse)(nil), // 49: example.bookstore.v1.ListStoresResponse + (*Book_Author)(nil), // 50: example.bookstore.v1.Book.Author + (*fieldmaskpb.FieldMask)(nil), // 51: google.protobuf.FieldMask + (*emptypb.Empty)(nil), // 52: google.protobuf.Empty + (*api.Operation)(nil), // 53: aep.api.Operation } var file_example_bookstore_v1_bookstore_proto_depIdxs = []int32{ - 44, // 0: example.bookstore.v1.Book.author:type_name -> example.bookstore.v1.Book.Author + 50, // 0: example.bookstore.v1.Book.author:type_name -> example.bookstore.v1.Book.Author 0, // 1: example.bookstore.v1.CreateBookRequest.book:type_name -> example.bookstore.v1.Book 0, // 2: example.bookstore.v1.UpdateBookRequest.book:type_name -> example.bookstore.v1.Book - 45, // 3: example.bookstore.v1.UpdateBookRequest.update_mask:type_name -> google.protobuf.FieldMask + 51, // 3: example.bookstore.v1.UpdateBookRequest.update_mask:type_name -> google.protobuf.FieldMask 0, // 4: example.bookstore.v1.ListBooksResponse.results:type_name -> example.bookstore.v1.Book 0, // 5: example.bookstore.v1.ListBooksResponse.unreachable:type_name -> example.bookstore.v1.Book 0, // 6: example.bookstore.v1.ApplyBookRequest.book:type_name -> example.bookstore.v1.Book 1, // 7: example.bookstore.v1.CreateBookEditionRequest.book_edition:type_name -> example.bookstore.v1.BookEdition 1, // 8: example.bookstore.v1.ListBookEditionsResponse.results:type_name -> example.bookstore.v1.BookEdition - 2, // 9: example.bookstore.v1.CreateIsbnRequest.isbn:type_name -> example.bookstore.v1.Isbn - 2, // 10: example.bookstore.v1.ListIsbnsResponse.results:type_name -> example.bookstore.v1.Isbn - 3, // 11: example.bookstore.v1.CreateItemRequest.item:type_name -> example.bookstore.v1.Item - 3, // 12: example.bookstore.v1.UpdateItemRequest.item:type_name -> example.bookstore.v1.Item - 45, // 13: example.bookstore.v1.UpdateItemRequest.update_mask:type_name -> google.protobuf.FieldMask - 3, // 14: example.bookstore.v1.ListItemsResponse.results:type_name -> example.bookstore.v1.Item - 4, // 15: example.bookstore.v1.CreatePublisherRequest.publisher:type_name -> example.bookstore.v1.Publisher - 4, // 16: example.bookstore.v1.UpdatePublisherRequest.publisher:type_name -> example.bookstore.v1.Publisher - 45, // 17: example.bookstore.v1.UpdatePublisherRequest.update_mask:type_name -> google.protobuf.FieldMask - 4, // 18: example.bookstore.v1.ListPublishersResponse.results:type_name -> example.bookstore.v1.Publisher - 4, // 19: example.bookstore.v1.ApplyPublisherRequest.publisher:type_name -> example.bookstore.v1.Publisher - 5, // 20: example.bookstore.v1.CreateStoreRequest.store:type_name -> example.bookstore.v1.Store - 5, // 21: example.bookstore.v1.UpdateStoreRequest.store:type_name -> example.bookstore.v1.Store - 45, // 22: example.bookstore.v1.UpdateStoreRequest.update_mask:type_name -> google.protobuf.FieldMask - 5, // 23: example.bookstore.v1.ListStoresResponse.results:type_name -> example.bookstore.v1.Store - 6, // 24: example.bookstore.v1.Bookstore.CreateBook:input_type -> example.bookstore.v1.CreateBookRequest - 7, // 25: example.bookstore.v1.Bookstore.GetBook:input_type -> example.bookstore.v1.GetBookRequest - 8, // 26: example.bookstore.v1.Bookstore.UpdateBook:input_type -> example.bookstore.v1.UpdateBookRequest - 9, // 27: example.bookstore.v1.Bookstore.DeleteBook:input_type -> example.bookstore.v1.DeleteBookRequest - 10, // 28: example.bookstore.v1.Bookstore.ListBooks:input_type -> example.bookstore.v1.ListBooksRequest - 12, // 29: example.bookstore.v1.Bookstore.ApplyBook:input_type -> example.bookstore.v1.ApplyBookRequest - 14, // 30: example.bookstore.v1.Bookstore.ArchiveBook:input_type -> example.bookstore.v1.ArchiveBookRequest - 15, // 31: example.bookstore.v1.Bookstore.CreateBookEdition:input_type -> example.bookstore.v1.CreateBookEditionRequest - 16, // 32: example.bookstore.v1.Bookstore.GetBookEdition:input_type -> example.bookstore.v1.GetBookEditionRequest - 17, // 33: example.bookstore.v1.Bookstore.DeleteBookEdition:input_type -> example.bookstore.v1.DeleteBookEditionRequest - 18, // 34: example.bookstore.v1.Bookstore.ListBookEditions:input_type -> example.bookstore.v1.ListBookEditionsRequest - 20, // 35: example.bookstore.v1.Bookstore.CreateIsbn:input_type -> example.bookstore.v1.CreateIsbnRequest - 21, // 36: example.bookstore.v1.Bookstore.GetIsbn:input_type -> example.bookstore.v1.GetIsbnRequest - 22, // 37: example.bookstore.v1.Bookstore.ListIsbns:input_type -> example.bookstore.v1.ListIsbnsRequest - 24, // 38: example.bookstore.v1.Bookstore.CreateItem:input_type -> example.bookstore.v1.CreateItemRequest - 25, // 39: example.bookstore.v1.Bookstore.GetItem:input_type -> example.bookstore.v1.GetItemRequest - 26, // 40: example.bookstore.v1.Bookstore.UpdateItem:input_type -> example.bookstore.v1.UpdateItemRequest - 27, // 41: example.bookstore.v1.Bookstore.DeleteItem:input_type -> example.bookstore.v1.DeleteItemRequest - 28, // 42: example.bookstore.v1.Bookstore.ListItems:input_type -> example.bookstore.v1.ListItemsRequest - 30, // 43: example.bookstore.v1.Bookstore.MoveItem:input_type -> example.bookstore.v1.MoveItemRequest - 31, // 44: example.bookstore.v1.Bookstore.CreatePublisher:input_type -> example.bookstore.v1.CreatePublisherRequest - 32, // 45: example.bookstore.v1.Bookstore.GetPublisher:input_type -> example.bookstore.v1.GetPublisherRequest - 33, // 46: example.bookstore.v1.Bookstore.UpdatePublisher:input_type -> example.bookstore.v1.UpdatePublisherRequest - 34, // 47: example.bookstore.v1.Bookstore.DeletePublisher:input_type -> example.bookstore.v1.DeletePublisherRequest - 35, // 48: example.bookstore.v1.Bookstore.ListPublishers:input_type -> example.bookstore.v1.ListPublishersRequest - 37, // 49: example.bookstore.v1.Bookstore.ApplyPublisher:input_type -> example.bookstore.v1.ApplyPublisherRequest - 38, // 50: example.bookstore.v1.Bookstore.CreateStore:input_type -> example.bookstore.v1.CreateStoreRequest - 39, // 51: example.bookstore.v1.Bookstore.GetStore:input_type -> example.bookstore.v1.GetStoreRequest - 40, // 52: example.bookstore.v1.Bookstore.UpdateStore:input_type -> example.bookstore.v1.UpdateStoreRequest - 41, // 53: example.bookstore.v1.Bookstore.DeleteStore:input_type -> example.bookstore.v1.DeleteStoreRequest - 42, // 54: example.bookstore.v1.Bookstore.ListStores:input_type -> example.bookstore.v1.ListStoresRequest - 0, // 55: example.bookstore.v1.Bookstore.CreateBook:output_type -> example.bookstore.v1.Book - 0, // 56: example.bookstore.v1.Bookstore.GetBook:output_type -> example.bookstore.v1.Book - 0, // 57: example.bookstore.v1.Bookstore.UpdateBook:output_type -> example.bookstore.v1.Book - 46, // 58: example.bookstore.v1.Bookstore.DeleteBook:output_type -> google.protobuf.Empty - 11, // 59: example.bookstore.v1.Bookstore.ListBooks:output_type -> example.bookstore.v1.ListBooksResponse - 0, // 60: example.bookstore.v1.Bookstore.ApplyBook:output_type -> example.bookstore.v1.Book - 47, // 61: example.bookstore.v1.Bookstore.ArchiveBook:output_type -> aep.api.Operation - 1, // 62: example.bookstore.v1.Bookstore.CreateBookEdition:output_type -> example.bookstore.v1.BookEdition - 1, // 63: example.bookstore.v1.Bookstore.GetBookEdition:output_type -> example.bookstore.v1.BookEdition - 46, // 64: example.bookstore.v1.Bookstore.DeleteBookEdition:output_type -> google.protobuf.Empty - 19, // 65: example.bookstore.v1.Bookstore.ListBookEditions:output_type -> example.bookstore.v1.ListBookEditionsResponse - 2, // 66: example.bookstore.v1.Bookstore.CreateIsbn:output_type -> example.bookstore.v1.Isbn - 2, // 67: example.bookstore.v1.Bookstore.GetIsbn:output_type -> example.bookstore.v1.Isbn - 23, // 68: example.bookstore.v1.Bookstore.ListIsbns:output_type -> example.bookstore.v1.ListIsbnsResponse - 3, // 69: example.bookstore.v1.Bookstore.CreateItem:output_type -> example.bookstore.v1.Item - 3, // 70: example.bookstore.v1.Bookstore.GetItem:output_type -> example.bookstore.v1.Item - 3, // 71: example.bookstore.v1.Bookstore.UpdateItem:output_type -> example.bookstore.v1.Item - 46, // 72: example.bookstore.v1.Bookstore.DeleteItem:output_type -> google.protobuf.Empty - 29, // 73: example.bookstore.v1.Bookstore.ListItems:output_type -> example.bookstore.v1.ListItemsResponse - 47, // 74: example.bookstore.v1.Bookstore.MoveItem:output_type -> aep.api.Operation - 4, // 75: example.bookstore.v1.Bookstore.CreatePublisher:output_type -> example.bookstore.v1.Publisher - 4, // 76: example.bookstore.v1.Bookstore.GetPublisher:output_type -> example.bookstore.v1.Publisher - 4, // 77: example.bookstore.v1.Bookstore.UpdatePublisher:output_type -> example.bookstore.v1.Publisher - 46, // 78: example.bookstore.v1.Bookstore.DeletePublisher:output_type -> google.protobuf.Empty - 36, // 79: example.bookstore.v1.Bookstore.ListPublishers:output_type -> example.bookstore.v1.ListPublishersResponse - 4, // 80: example.bookstore.v1.Bookstore.ApplyPublisher:output_type -> example.bookstore.v1.Publisher - 5, // 81: example.bookstore.v1.Bookstore.CreateStore:output_type -> example.bookstore.v1.Store - 5, // 82: example.bookstore.v1.Bookstore.GetStore:output_type -> example.bookstore.v1.Store - 5, // 83: example.bookstore.v1.Bookstore.UpdateStore:output_type -> example.bookstore.v1.Store - 46, // 84: example.bookstore.v1.Bookstore.DeleteStore:output_type -> google.protobuf.Empty - 43, // 85: example.bookstore.v1.Bookstore.ListStores:output_type -> example.bookstore.v1.ListStoresResponse - 55, // [55:86] is the sub-list for method output_type - 24, // [24:55] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 2, // 9: example.bookstore.v1.ListDeletedPublishersResponse.results:type_name -> example.bookstore.v1.DeletedPublisher + 3, // 10: example.bookstore.v1.CreateIsbnRequest.isbn:type_name -> example.bookstore.v1.Isbn + 3, // 11: example.bookstore.v1.ListIsbnsResponse.results:type_name -> example.bookstore.v1.Isbn + 4, // 12: example.bookstore.v1.CreateItemRequest.item:type_name -> example.bookstore.v1.Item + 4, // 13: example.bookstore.v1.UpdateItemRequest.item:type_name -> example.bookstore.v1.Item + 51, // 14: example.bookstore.v1.UpdateItemRequest.update_mask:type_name -> google.protobuf.FieldMask + 4, // 15: example.bookstore.v1.ListItemsResponse.results:type_name -> example.bookstore.v1.Item + 5, // 16: example.bookstore.v1.CreatePublisherRequest.publisher:type_name -> example.bookstore.v1.Publisher + 5, // 17: example.bookstore.v1.UpdatePublisherRequest.publisher:type_name -> example.bookstore.v1.Publisher + 51, // 18: example.bookstore.v1.UpdatePublisherRequest.update_mask:type_name -> google.protobuf.FieldMask + 5, // 19: example.bookstore.v1.ListPublishersResponse.results:type_name -> example.bookstore.v1.Publisher + 5, // 20: example.bookstore.v1.ApplyPublisherRequest.publisher:type_name -> example.bookstore.v1.Publisher + 6, // 21: example.bookstore.v1.CreateStoreRequest.store:type_name -> example.bookstore.v1.Store + 6, // 22: example.bookstore.v1.UpdateStoreRequest.store:type_name -> example.bookstore.v1.Store + 51, // 23: example.bookstore.v1.UpdateStoreRequest.update_mask:type_name -> google.protobuf.FieldMask + 6, // 24: example.bookstore.v1.ListStoresResponse.results:type_name -> example.bookstore.v1.Store + 7, // 25: example.bookstore.v1.Bookstore.CreateBook:input_type -> example.bookstore.v1.CreateBookRequest + 8, // 26: example.bookstore.v1.Bookstore.GetBook:input_type -> example.bookstore.v1.GetBookRequest + 9, // 27: example.bookstore.v1.Bookstore.UpdateBook:input_type -> example.bookstore.v1.UpdateBookRequest + 10, // 28: example.bookstore.v1.Bookstore.DeleteBook:input_type -> example.bookstore.v1.DeleteBookRequest + 11, // 29: example.bookstore.v1.Bookstore.ListBooks:input_type -> example.bookstore.v1.ListBooksRequest + 13, // 30: example.bookstore.v1.Bookstore.ApplyBook:input_type -> example.bookstore.v1.ApplyBookRequest + 15, // 31: example.bookstore.v1.Bookstore.ArchiveBook:input_type -> example.bookstore.v1.ArchiveBookRequest + 16, // 32: example.bookstore.v1.Bookstore.CreateBookEdition:input_type -> example.bookstore.v1.CreateBookEditionRequest + 17, // 33: example.bookstore.v1.Bookstore.GetBookEdition:input_type -> example.bookstore.v1.GetBookEditionRequest + 18, // 34: example.bookstore.v1.Bookstore.DeleteBookEdition:input_type -> example.bookstore.v1.DeleteBookEditionRequest + 19, // 35: example.bookstore.v1.Bookstore.ListBookEditions:input_type -> example.bookstore.v1.ListBookEditionsRequest + 21, // 36: example.bookstore.v1.Bookstore.GetDeletedPublisher:input_type -> example.bookstore.v1.GetDeletedPublisherRequest + 22, // 37: example.bookstore.v1.Bookstore.ListDeletedPublishers:input_type -> example.bookstore.v1.ListDeletedPublishersRequest + 25, // 38: example.bookstore.v1.Bookstore.UndeleteDeletedPublisher:input_type -> example.bookstore.v1.UndeleteDeletedPublisherRequest + 26, // 39: example.bookstore.v1.Bookstore.CreateIsbn:input_type -> example.bookstore.v1.CreateIsbnRequest + 27, // 40: example.bookstore.v1.Bookstore.GetIsbn:input_type -> example.bookstore.v1.GetIsbnRequest + 28, // 41: example.bookstore.v1.Bookstore.ListIsbns:input_type -> example.bookstore.v1.ListIsbnsRequest + 30, // 42: example.bookstore.v1.Bookstore.CreateItem:input_type -> example.bookstore.v1.CreateItemRequest + 31, // 43: example.bookstore.v1.Bookstore.GetItem:input_type -> example.bookstore.v1.GetItemRequest + 32, // 44: example.bookstore.v1.Bookstore.UpdateItem:input_type -> example.bookstore.v1.UpdateItemRequest + 33, // 45: example.bookstore.v1.Bookstore.DeleteItem:input_type -> example.bookstore.v1.DeleteItemRequest + 34, // 46: example.bookstore.v1.Bookstore.ListItems:input_type -> example.bookstore.v1.ListItemsRequest + 36, // 47: example.bookstore.v1.Bookstore.MoveItem:input_type -> example.bookstore.v1.MoveItemRequest + 37, // 48: example.bookstore.v1.Bookstore.CreatePublisher:input_type -> example.bookstore.v1.CreatePublisherRequest + 38, // 49: example.bookstore.v1.Bookstore.GetPublisher:input_type -> example.bookstore.v1.GetPublisherRequest + 39, // 50: example.bookstore.v1.Bookstore.UpdatePublisher:input_type -> example.bookstore.v1.UpdatePublisherRequest + 40, // 51: example.bookstore.v1.Bookstore.DeletePublisher:input_type -> example.bookstore.v1.DeletePublisherRequest + 41, // 52: example.bookstore.v1.Bookstore.ListPublishers:input_type -> example.bookstore.v1.ListPublishersRequest + 43, // 53: example.bookstore.v1.Bookstore.ApplyPublisher:input_type -> example.bookstore.v1.ApplyPublisherRequest + 44, // 54: example.bookstore.v1.Bookstore.CreateStore:input_type -> example.bookstore.v1.CreateStoreRequest + 45, // 55: example.bookstore.v1.Bookstore.GetStore:input_type -> example.bookstore.v1.GetStoreRequest + 46, // 56: example.bookstore.v1.Bookstore.UpdateStore:input_type -> example.bookstore.v1.UpdateStoreRequest + 47, // 57: example.bookstore.v1.Bookstore.DeleteStore:input_type -> example.bookstore.v1.DeleteStoreRequest + 48, // 58: example.bookstore.v1.Bookstore.ListStores:input_type -> example.bookstore.v1.ListStoresRequest + 0, // 59: example.bookstore.v1.Bookstore.CreateBook:output_type -> example.bookstore.v1.Book + 0, // 60: example.bookstore.v1.Bookstore.GetBook:output_type -> example.bookstore.v1.Book + 0, // 61: example.bookstore.v1.Bookstore.UpdateBook:output_type -> example.bookstore.v1.Book + 52, // 62: example.bookstore.v1.Bookstore.DeleteBook:output_type -> google.protobuf.Empty + 12, // 63: example.bookstore.v1.Bookstore.ListBooks:output_type -> example.bookstore.v1.ListBooksResponse + 0, // 64: example.bookstore.v1.Bookstore.ApplyBook:output_type -> example.bookstore.v1.Book + 53, // 65: example.bookstore.v1.Bookstore.ArchiveBook:output_type -> aep.api.Operation + 1, // 66: example.bookstore.v1.Bookstore.CreateBookEdition:output_type -> example.bookstore.v1.BookEdition + 1, // 67: example.bookstore.v1.Bookstore.GetBookEdition:output_type -> example.bookstore.v1.BookEdition + 52, // 68: example.bookstore.v1.Bookstore.DeleteBookEdition:output_type -> google.protobuf.Empty + 20, // 69: example.bookstore.v1.Bookstore.ListBookEditions:output_type -> example.bookstore.v1.ListBookEditionsResponse + 2, // 70: example.bookstore.v1.Bookstore.GetDeletedPublisher:output_type -> example.bookstore.v1.DeletedPublisher + 23, // 71: example.bookstore.v1.Bookstore.ListDeletedPublishers:output_type -> example.bookstore.v1.ListDeletedPublishersResponse + 24, // 72: example.bookstore.v1.Bookstore.UndeleteDeletedPublisher:output_type -> example.bookstore.v1.UndeleteDeletedPublisherResponse + 3, // 73: example.bookstore.v1.Bookstore.CreateIsbn:output_type -> example.bookstore.v1.Isbn + 3, // 74: example.bookstore.v1.Bookstore.GetIsbn:output_type -> example.bookstore.v1.Isbn + 29, // 75: example.bookstore.v1.Bookstore.ListIsbns:output_type -> example.bookstore.v1.ListIsbnsResponse + 4, // 76: example.bookstore.v1.Bookstore.CreateItem:output_type -> example.bookstore.v1.Item + 4, // 77: example.bookstore.v1.Bookstore.GetItem:output_type -> example.bookstore.v1.Item + 4, // 78: example.bookstore.v1.Bookstore.UpdateItem:output_type -> example.bookstore.v1.Item + 52, // 79: example.bookstore.v1.Bookstore.DeleteItem:output_type -> google.protobuf.Empty + 35, // 80: example.bookstore.v1.Bookstore.ListItems:output_type -> example.bookstore.v1.ListItemsResponse + 53, // 81: example.bookstore.v1.Bookstore.MoveItem:output_type -> aep.api.Operation + 5, // 82: example.bookstore.v1.Bookstore.CreatePublisher:output_type -> example.bookstore.v1.Publisher + 5, // 83: example.bookstore.v1.Bookstore.GetPublisher:output_type -> example.bookstore.v1.Publisher + 5, // 84: example.bookstore.v1.Bookstore.UpdatePublisher:output_type -> example.bookstore.v1.Publisher + 52, // 85: example.bookstore.v1.Bookstore.DeletePublisher:output_type -> google.protobuf.Empty + 42, // 86: example.bookstore.v1.Bookstore.ListPublishers:output_type -> example.bookstore.v1.ListPublishersResponse + 5, // 87: example.bookstore.v1.Bookstore.ApplyPublisher:output_type -> example.bookstore.v1.Publisher + 6, // 88: example.bookstore.v1.Bookstore.CreateStore:output_type -> example.bookstore.v1.Store + 6, // 89: example.bookstore.v1.Bookstore.GetStore:output_type -> example.bookstore.v1.Store + 6, // 90: example.bookstore.v1.Bookstore.UpdateStore:output_type -> example.bookstore.v1.Store + 52, // 91: example.bookstore.v1.Bookstore.DeleteStore:output_type -> google.protobuf.Empty + 49, // 92: example.bookstore.v1.Bookstore.ListStores:output_type -> example.bookstore.v1.ListStoresResponse + 59, // [59:93] is the sub-list for method output_type + 25, // [25:59] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name } func init() { file_example_bookstore_v1_bookstore_proto_init() } @@ -3678,7 +4101,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Isbn); i { + switch v := v.(*DeletedPublisher); i { case 0: return &v.state case 1: @@ -3690,7 +4113,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Item); i { + switch v := v.(*Isbn); i { case 0: return &v.state case 1: @@ -3702,7 +4125,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Publisher); i { + switch v := v.(*Item); i { case 0: return &v.state case 1: @@ -3714,7 +4137,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Store); i { + switch v := v.(*Publisher); i { case 0: return &v.state case 1: @@ -3726,7 +4149,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBookRequest); i { + switch v := v.(*Store); i { case 0: return &v.state case 1: @@ -3738,7 +4161,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBookRequest); i { + switch v := v.(*CreateBookRequest); i { case 0: return &v.state case 1: @@ -3750,7 +4173,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateBookRequest); i { + switch v := v.(*GetBookRequest); i { case 0: return &v.state case 1: @@ -3762,7 +4185,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteBookRequest); i { + switch v := v.(*UpdateBookRequest); i { case 0: return &v.state case 1: @@ -3774,7 +4197,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBooksRequest); i { + switch v := v.(*DeleteBookRequest); i { case 0: return &v.state case 1: @@ -3786,7 +4209,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBooksResponse); i { + switch v := v.(*ListBooksRequest); i { case 0: return &v.state case 1: @@ -3798,7 +4221,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyBookRequest); i { + switch v := v.(*ListBooksResponse); i { case 0: return &v.state case 1: @@ -3810,7 +4233,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArchiveBookResponse); i { + switch v := v.(*ApplyBookRequest); i { case 0: return &v.state case 1: @@ -3822,7 +4245,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArchiveBookRequest); i { + switch v := v.(*ArchiveBookResponse); i { case 0: return &v.state case 1: @@ -3834,7 +4257,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBookEditionRequest); i { + switch v := v.(*ArchiveBookRequest); i { case 0: return &v.state case 1: @@ -3846,7 +4269,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBookEditionRequest); i { + switch v := v.(*CreateBookEditionRequest); i { case 0: return &v.state case 1: @@ -3858,7 +4281,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteBookEditionRequest); i { + switch v := v.(*GetBookEditionRequest); i { case 0: return &v.state case 1: @@ -3870,7 +4293,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBookEditionsRequest); i { + switch v := v.(*DeleteBookEditionRequest); i { case 0: return &v.state case 1: @@ -3882,7 +4305,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBookEditionsResponse); i { + switch v := v.(*ListBookEditionsRequest); i { case 0: return &v.state case 1: @@ -3894,7 +4317,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateIsbnRequest); i { + switch v := v.(*ListBookEditionsResponse); i { case 0: return &v.state case 1: @@ -3906,7 +4329,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIsbnRequest); i { + switch v := v.(*GetDeletedPublisherRequest); i { case 0: return &v.state case 1: @@ -3918,7 +4341,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListIsbnsRequest); i { + switch v := v.(*ListDeletedPublishersRequest); i { case 0: return &v.state case 1: @@ -3930,7 +4353,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListIsbnsResponse); i { + switch v := v.(*ListDeletedPublishersResponse); i { case 0: return &v.state case 1: @@ -3942,7 +4365,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateItemRequest); i { + switch v := v.(*UndeleteDeletedPublisherResponse); i { case 0: return &v.state case 1: @@ -3954,7 +4377,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetItemRequest); i { + switch v := v.(*UndeleteDeletedPublisherRequest); i { case 0: return &v.state case 1: @@ -3966,7 +4389,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateItemRequest); i { + switch v := v.(*CreateIsbnRequest); i { case 0: return &v.state case 1: @@ -3978,7 +4401,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteItemRequest); i { + switch v := v.(*GetIsbnRequest); i { case 0: return &v.state case 1: @@ -3990,7 +4413,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListItemsRequest); i { + switch v := v.(*ListIsbnsRequest); i { case 0: return &v.state case 1: @@ -4002,7 +4425,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListItemsResponse); i { + switch v := v.(*ListIsbnsResponse); i { case 0: return &v.state case 1: @@ -4014,7 +4437,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MoveItemRequest); i { + switch v := v.(*CreateItemRequest); i { case 0: return &v.state case 1: @@ -4026,7 +4449,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreatePublisherRequest); i { + switch v := v.(*GetItemRequest); i { case 0: return &v.state case 1: @@ -4038,7 +4461,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPublisherRequest); i { + switch v := v.(*UpdateItemRequest); i { case 0: return &v.state case 1: @@ -4050,7 +4473,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePublisherRequest); i { + switch v := v.(*DeleteItemRequest); i { case 0: return &v.state case 1: @@ -4062,7 +4485,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePublisherRequest); i { + switch v := v.(*ListItemsRequest); i { case 0: return &v.state case 1: @@ -4074,7 +4497,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPublishersRequest); i { + switch v := v.(*ListItemsResponse); i { case 0: return &v.state case 1: @@ -4086,7 +4509,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPublishersResponse); i { + switch v := v.(*MoveItemRequest); i { case 0: return &v.state case 1: @@ -4098,7 +4521,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyPublisherRequest); i { + switch v := v.(*CreatePublisherRequest); i { case 0: return &v.state case 1: @@ -4110,7 +4533,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateStoreRequest); i { + switch v := v.(*GetPublisherRequest); i { case 0: return &v.state case 1: @@ -4122,7 +4545,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStoreRequest); i { + switch v := v.(*UpdatePublisherRequest); i { case 0: return &v.state case 1: @@ -4134,7 +4557,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateStoreRequest); i { + switch v := v.(*DeletePublisherRequest); i { case 0: return &v.state case 1: @@ -4146,7 +4569,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteStoreRequest); i { + switch v := v.(*ListPublishersRequest); i { case 0: return &v.state case 1: @@ -4158,7 +4581,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStoresRequest); i { + switch v := v.(*ListPublishersResponse); i { case 0: return &v.state case 1: @@ -4170,7 +4593,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStoresResponse); i { + switch v := v.(*ApplyPublisherRequest); i { case 0: return &v.state case 1: @@ -4182,6 +4605,78 @@ func file_example_bookstore_v1_bookstore_proto_init() { } } file_example_bookstore_v1_bookstore_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateStoreRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_example_bookstore_v1_bookstore_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStoreRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_example_bookstore_v1_bookstore_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateStoreRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_example_bookstore_v1_bookstore_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteStoreRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_example_bookstore_v1_bookstore_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListStoresRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_example_bookstore_v1_bookstore_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListStoresResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_example_bookstore_v1_bookstore_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Book_Author); i { case 0: return &v.state @@ -4200,7 +4695,7 @@ func file_example_bookstore_v1_bookstore_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_example_bookstore_v1_bookstore_proto_rawDesc, NumEnums: 0, - NumMessages: 45, + NumMessages: 51, NumExtensions: 0, NumServices: 1, }, diff --git a/example/bookstore/v1/bookstore.pb.gw.go b/example/bookstore/v1/bookstore.pb.gw.go index 6563d31..6a6665f 100644 --- a/example/bookstore/v1/bookstore.pb.gw.go +++ b/example/bookstore/v1/bookstore.pb.gw.go @@ -805,6 +805,162 @@ func local_request_Bookstore_ListBookEditions_0(ctx context.Context, marshaler r } +func request_Bookstore_GetDeletedPublisher_0(ctx context.Context, marshaler runtime.Marshaler, client BookstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetDeletedPublisherRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["path"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path") + } + + protoReq.Path, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err) + } + + msg, err := client.GetDeletedPublisher(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Bookstore_GetDeletedPublisher_0(ctx context.Context, marshaler runtime.Marshaler, server BookstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetDeletedPublisherRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["path"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path") + } + + protoReq.Path, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err) + } + + msg, err := server.GetDeletedPublisher(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Bookstore_ListDeletedPublishers_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Bookstore_ListDeletedPublishers_0(ctx context.Context, marshaler runtime.Marshaler, client BookstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListDeletedPublishersRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Bookstore_ListDeletedPublishers_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListDeletedPublishers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Bookstore_ListDeletedPublishers_0(ctx context.Context, marshaler runtime.Marshaler, server BookstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListDeletedPublishersRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Bookstore_ListDeletedPublishers_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListDeletedPublishers(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Bookstore_UndeleteDeletedPublisher_0(ctx context.Context, marshaler runtime.Marshaler, client BookstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UndeleteDeletedPublisherRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["path"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path") + } + + protoReq.Path, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err) + } + + msg, err := client.UndeleteDeletedPublisher(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Bookstore_UndeleteDeletedPublisher_0(ctx context.Context, marshaler runtime.Marshaler, server BookstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UndeleteDeletedPublisherRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["path"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path") + } + + protoReq.Path, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err) + } + + msg, err := server.UndeleteDeletedPublisher(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_Bookstore_CreateIsbn_0 = &utilities.DoubleArray{Encoding: map[string]int{"isbn": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} ) @@ -2342,6 +2498,81 @@ func RegisterBookstoreHandlerServer(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_Bookstore_GetDeletedPublisher_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/example.bookstore.v1.Bookstore/GetDeletedPublisher", runtime.WithHTTPPathPattern("/{path=deleted-publishers/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Bookstore_GetDeletedPublisher_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Bookstore_GetDeletedPublisher_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Bookstore_ListDeletedPublishers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/example.bookstore.v1.Bookstore/ListDeletedPublishers", runtime.WithHTTPPathPattern("/deleted_publishers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Bookstore_ListDeletedPublishers_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Bookstore_ListDeletedPublishers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Bookstore_UndeleteDeletedPublisher_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/example.bookstore.v1.Bookstore/UndeleteDeletedPublisher", runtime.WithHTTPPathPattern("/{path=deleted-publishers/*}:undelete")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Bookstore_UndeleteDeletedPublisher_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Bookstore_UndeleteDeletedPublisher_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Bookstore_CreateIsbn_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3125,6 +3356,72 @@ func RegisterBookstoreHandlerClient(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_Bookstore_GetDeletedPublisher_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/example.bookstore.v1.Bookstore/GetDeletedPublisher", runtime.WithHTTPPathPattern("/{path=deleted-publishers/*}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Bookstore_GetDeletedPublisher_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Bookstore_GetDeletedPublisher_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Bookstore_ListDeletedPublishers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/example.bookstore.v1.Bookstore/ListDeletedPublishers", runtime.WithHTTPPathPattern("/deleted_publishers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Bookstore_ListDeletedPublishers_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Bookstore_ListDeletedPublishers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Bookstore_UndeleteDeletedPublisher_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/example.bookstore.v1.Bookstore/UndeleteDeletedPublisher", runtime.WithHTTPPathPattern("/{path=deleted-publishers/*}:undelete")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Bookstore_UndeleteDeletedPublisher_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Bookstore_UndeleteDeletedPublisher_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Bookstore_CreateIsbn_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3591,6 +3888,12 @@ var ( pattern_Bookstore_ListBookEditions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 2, 1, 1, 0, 4, 4, 5, 2, 2, 3}, []string{"publishers", "books", "parent", "editions"}, "")) + pattern_Bookstore_GetDeletedPublisher_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 2, 5, 1}, []string{"deleted-publishers", "path"}, "")) + + pattern_Bookstore_ListDeletedPublishers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"deleted_publishers"}, "")) + + pattern_Bookstore_UndeleteDeletedPublisher_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 2, 5, 1}, []string{"deleted-publishers", "path"}, "undelete")) + pattern_Bookstore_CreateIsbn_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"isbns"}, "")) pattern_Bookstore_GetIsbn_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 2, 5, 1}, []string{"isbns", "path"}, "")) @@ -3655,6 +3958,12 @@ var ( forward_Bookstore_ListBookEditions_0 = runtime.ForwardResponseMessage + forward_Bookstore_GetDeletedPublisher_0 = runtime.ForwardResponseMessage + + forward_Bookstore_ListDeletedPublishers_0 = runtime.ForwardResponseMessage + + forward_Bookstore_UndeleteDeletedPublisher_0 = runtime.ForwardResponseMessage + forward_Bookstore_CreateIsbn_0 = runtime.ForwardResponseMessage forward_Bookstore_GetIsbn_0 = runtime.ForwardResponseMessage diff --git a/example/bookstore/v1/bookstore.proto b/example/bookstore/v1/bookstore.proto index e51b52f..c364c2e 100644 --- a/example/bookstore/v1/bookstore.proto +++ b/example/bookstore/v1/bookstore.proto @@ -106,6 +106,28 @@ service Bookstore { option (google.api.method_signature) = "parent"; } + // An aep-compliant Get method for deleted_publisher. + rpc GetDeletedPublisher(GetDeletedPublisherRequest) returns (DeletedPublisher) { + option (google.api.http) = {get: "/{path=deleted-publishers/*}"}; + + option (google.api.method_signature) = "path"; + } + + // An aep-compliant List method for deleted_publishers. + rpc ListDeletedPublishers(ListDeletedPublishersRequest) returns (ListDeletedPublishersResponse) { + option (google.api.http) = {get: "/deleted_publishers"}; + + option (google.api.method_signature) = "parent"; + } + + // undelete a deleted_publisher. + rpc UndeleteDeletedPublisher(UndeleteDeletedPublisherRequest) returns (UndeleteDeletedPublisherResponse) { + option (google.api.http) = { + post: "/{path=deleted-publishers/*}:undelete" + body: "*" + }; + } + // An aep-compliant Create method for isbn. rpc CreateIsbn(CreateIsbnRequest) returns (Isbn) { option (google.api.http) = { @@ -351,6 +373,25 @@ message BookEdition { string path = 10018; } +// A DeletedPublisher. +message DeletedPublisher { + option (google.api.resource) = { + type: "bookstore.example.com/deleted_publisher" + pattern: ["deleted-publishers/{deleted_publisher_id}"] + plural: "deleted_publishers" + singular: "deleted_publisher" + }; + + // Field for description. + string description = 1; + + // Field for expire_time. + string expire_time = 2 [json_name = "expire_time"]; + + // Field for path. + string path = 10018; +} + // A Isbn. message Isbn { option (google.api.resource) = { @@ -650,6 +691,59 @@ message ListBookEditionsResponse { string next_page_token = 10011 [json_name = "next_page_token"]; } +// Request message for the Getdeleted_publisher method +message GetDeletedPublisherRequest { + // The globally unique identifier for the resource + string path = 10018 [ + (aep.api.field_info) = { + resource_reference: ["bookstore.example.com/deleted_publisher"] + field_behavior: [FIELD_BEHAVIOR_REQUIRED] + }, + (google.api.field_behavior) = REQUIRED + ]; +} + +// Request message for the Listdeleted_publisher method +message ListDeletedPublishersRequest { + // A field for the parent of deleted_publisher + string parent = 10013 [ + (aep.api.field_info) = { + field_behavior: [FIELD_BEHAVIOR_REQUIRED] + }, + (google.api.field_behavior) = REQUIRED + ]; + + // The page token indicating the starting point of the page + string page_token = 10010 [json_name = "page_token"]; + + // The maximum number of resources to return in a single page. + int32 max_page_size = 10017 [json_name = "max_page_size"]; +} + +// Response message for the Listdeleted_publisher method +message ListDeletedPublishersResponse { + // A list of deleted_publishers + repeated DeletedPublisher results = 10016; + + // The page token indicating the ending point of this response. + string next_page_token = 10011 [json_name = "next_page_token"]; +} + +// Response message for the undelete method +message UndeleteDeletedPublisherResponse {} + +// Request message for the undelete method +message UndeleteDeletedPublisherRequest { + // The globally unique identifier for the resource + string path = 10018 [ + (aep.api.field_info) = { + resource_reference: ["bookstore.example.com/deleted_publisher"] + field_behavior: [FIELD_BEHAVIOR_REQUIRED] + }, + (google.api.field_behavior) = REQUIRED + ]; +} + // A Create request for a isbn resource. message CreateIsbnRequest { // A field for the parent of isbn diff --git a/example/bookstore/v1/bookstore.swagger.json b/example/bookstore/v1/bookstore.swagger.json index 75698f1..0fbdb61 100644 --- a/example/bookstore/v1/bookstore.swagger.json +++ b/example/bookstore/v1/bookstore.swagger.json @@ -17,6 +17,53 @@ "application/json" ], "paths": { + "/deleted_publishers": { + "get": { + "summary": "An aep-compliant List method for deleted_publishers.", + "operationId": "Bookstore_ListDeletedPublishers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ListDeletedPublishersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "parent", + "description": "A field for the parent of deleted_publisher", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "page_token", + "description": "The page token indicating the starting point of the page", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "max_page_size", + "description": "The maximum number of resources to return in a single page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Bookstore" + ] + } + }, "/isbns": { "get": { "summary": "An aep-compliant List method for isbns.", @@ -797,13 +844,13 @@ }, "/{path_2}": { "get": { - "summary": "An aep-compliant Get method for isbn.", - "operationId": "Bookstore_GetIsbn", + "summary": "An aep-compliant Get method for deleted_publisher.", + "operationId": "Bookstore_GetDeletedPublisher", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/v1Isbn" + "$ref": "#/definitions/v1DeletedPublisher" } }, "default": { @@ -820,7 +867,7 @@ "in": "path", "required": true, "type": "string", - "pattern": "isbns/[^/]+" + "pattern": "deleted-publishers/[^/]+" } ], "tags": [ @@ -905,13 +952,13 @@ }, "/{path_3}": { "get": { - "summary": "An aep-compliant Get method for item.", - "operationId": "Bookstore_GetItem", + "summary": "An aep-compliant Get method for isbn.", + "operationId": "Bookstore_GetIsbn", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/v1Item" + "$ref": "#/definitions/v1Isbn" } }, "default": { @@ -928,7 +975,7 @@ "in": "path", "required": true, "type": "string", - "pattern": "stores/[^/]+/items/[^/]+" + "pattern": "isbns/[^/]+" } ], "tags": [ @@ -1020,13 +1067,13 @@ }, "/{path_4}": { "get": { - "summary": "An aep-compliant Get method for publisher.", - "operationId": "Bookstore_GetPublisher", + "summary": "An aep-compliant Get method for item.", + "operationId": "Bookstore_GetItem", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/v1Publisher" + "$ref": "#/definitions/v1Item" } }, "default": { @@ -1043,7 +1090,7 @@ "in": "path", "required": true, "type": "string", - "pattern": "publishers/[^/]+" + "pattern": "stores/[^/]+/items/[^/]+" } ], "tags": [ @@ -1091,6 +1138,39 @@ } }, "/{path_5}": { + "get": { + "summary": "An aep-compliant Get method for publisher.", + "operationId": "Bookstore_GetPublisher", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1Publisher" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "path_5", + "description": "The globally unique identifier for the resource", + "in": "path", + "required": true, + "type": "string", + "pattern": "publishers/[^/]+" + } + ], + "tags": [ + "Bookstore" + ] + } + }, + "/{path_6}": { "get": { "summary": "An aep-compliant Get method for store.", "operationId": "Bookstore_GetStore", @@ -1110,7 +1190,7 @@ }, "parameters": [ { - "name": "path_5", + "name": "path_6", "description": "The globally unique identifier for the resource", "in": "path", "required": true, @@ -1370,6 +1450,48 @@ "Bookstore" ] } + }, + "/{path}:undelete": { + "post": { + "summary": "undelete a deleted_publisher.", + "operationId": "Bookstore_UndeleteDeletedPublisher", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UndeleteDeletedPublisherResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "path", + "description": "The globally unique identifier for the resource", + "in": "path", + "required": true, + "type": "string", + "pattern": "deleted-publishers/[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "title": "Request message for the undelete method" + } + } + ], + "tags": [ + "Bookstore" + ] + } } }, "definitions": { @@ -1536,6 +1658,24 @@ "display_name" ] }, + "v1DeletedPublisher": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Field for description." + }, + "expire_time": { + "type": "string", + "description": "Field for expire_time." + }, + "path": { + "type": "string", + "description": "Field for path." + } + }, + "description": "A DeletedPublisher." + }, "v1Isbn": { "type": "object", "properties": { @@ -1617,6 +1757,24 @@ }, "title": "Response message for the Listbook method" }, + "v1ListDeletedPublishersResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1DeletedPublisher" + }, + "title": "A list of deleted_publishers" + }, + "next_page_token": { + "type": "string", + "description": "The page token indicating the ending point of this response." + } + }, + "title": "Response message for the Listdeleted_publisher method" + }, "v1ListIsbnsResponse": { "type": "object", "properties": { @@ -1723,6 +1881,10 @@ "required": [ "name" ] + }, + "v1UndeleteDeletedPublisherResponse": { + "type": "object", + "title": "Response message for the undelete method" } } } diff --git a/example/bookstore/v1/bookstore.yaml b/example/bookstore/v1/bookstore.yaml index fed2c70..50e9f27 100644 --- a/example/bookstore/v1/bookstore.yaml +++ b/example/bookstore/v1/bookstore.yaml @@ -24,6 +24,33 @@ resources: supports_filter: true supports_skip: true apply: {} + deleted_publisher: + singular: "deleted_publisher" + plural: "deleted_publishers" + schema: + type: object + properties: + description: + type: string + x-aep-field-number: 1 + expire_time: + type: string + format: date-time + description: "The time when this deleted publisher will expire and be permanently removed" + x-aep-field-number: 2 + methods: + get: {} + list: {} + custom_methods: + - name: "undelete" + method: "POST" + description: "Undelete a previously deleted publisher and restore it to the publishers collection" + request: + type: object + properties: {} + response: + type: object + properties: {} book: singular: "book" plural: "books" diff --git a/example/bookstore/v1/bookstore_grpc.pb.go b/example/bookstore/v1/bookstore_grpc.pb.go index 0a5da97..fc64f4e 100644 --- a/example/bookstore/v1/bookstore_grpc.pb.go +++ b/example/bookstore/v1/bookstore_grpc.pb.go @@ -23,37 +23,40 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Bookstore_CreateBook_FullMethodName = "/example.bookstore.v1.Bookstore/CreateBook" - Bookstore_GetBook_FullMethodName = "/example.bookstore.v1.Bookstore/GetBook" - Bookstore_UpdateBook_FullMethodName = "/example.bookstore.v1.Bookstore/UpdateBook" - Bookstore_DeleteBook_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteBook" - Bookstore_ListBooks_FullMethodName = "/example.bookstore.v1.Bookstore/ListBooks" - Bookstore_ApplyBook_FullMethodName = "/example.bookstore.v1.Bookstore/ApplyBook" - Bookstore_ArchiveBook_FullMethodName = "/example.bookstore.v1.Bookstore/ArchiveBook" - Bookstore_CreateBookEdition_FullMethodName = "/example.bookstore.v1.Bookstore/CreateBookEdition" - Bookstore_GetBookEdition_FullMethodName = "/example.bookstore.v1.Bookstore/GetBookEdition" - Bookstore_DeleteBookEdition_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteBookEdition" - Bookstore_ListBookEditions_FullMethodName = "/example.bookstore.v1.Bookstore/ListBookEditions" - Bookstore_CreateIsbn_FullMethodName = "/example.bookstore.v1.Bookstore/CreateIsbn" - Bookstore_GetIsbn_FullMethodName = "/example.bookstore.v1.Bookstore/GetIsbn" - Bookstore_ListIsbns_FullMethodName = "/example.bookstore.v1.Bookstore/ListIsbns" - Bookstore_CreateItem_FullMethodName = "/example.bookstore.v1.Bookstore/CreateItem" - Bookstore_GetItem_FullMethodName = "/example.bookstore.v1.Bookstore/GetItem" - Bookstore_UpdateItem_FullMethodName = "/example.bookstore.v1.Bookstore/UpdateItem" - Bookstore_DeleteItem_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteItem" - Bookstore_ListItems_FullMethodName = "/example.bookstore.v1.Bookstore/ListItems" - Bookstore_MoveItem_FullMethodName = "/example.bookstore.v1.Bookstore/MoveItem" - Bookstore_CreatePublisher_FullMethodName = "/example.bookstore.v1.Bookstore/CreatePublisher" - Bookstore_GetPublisher_FullMethodName = "/example.bookstore.v1.Bookstore/GetPublisher" - Bookstore_UpdatePublisher_FullMethodName = "/example.bookstore.v1.Bookstore/UpdatePublisher" - Bookstore_DeletePublisher_FullMethodName = "/example.bookstore.v1.Bookstore/DeletePublisher" - Bookstore_ListPublishers_FullMethodName = "/example.bookstore.v1.Bookstore/ListPublishers" - Bookstore_ApplyPublisher_FullMethodName = "/example.bookstore.v1.Bookstore/ApplyPublisher" - Bookstore_CreateStore_FullMethodName = "/example.bookstore.v1.Bookstore/CreateStore" - Bookstore_GetStore_FullMethodName = "/example.bookstore.v1.Bookstore/GetStore" - Bookstore_UpdateStore_FullMethodName = "/example.bookstore.v1.Bookstore/UpdateStore" - Bookstore_DeleteStore_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteStore" - Bookstore_ListStores_FullMethodName = "/example.bookstore.v1.Bookstore/ListStores" + Bookstore_CreateBook_FullMethodName = "/example.bookstore.v1.Bookstore/CreateBook" + Bookstore_GetBook_FullMethodName = "/example.bookstore.v1.Bookstore/GetBook" + Bookstore_UpdateBook_FullMethodName = "/example.bookstore.v1.Bookstore/UpdateBook" + Bookstore_DeleteBook_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteBook" + Bookstore_ListBooks_FullMethodName = "/example.bookstore.v1.Bookstore/ListBooks" + Bookstore_ApplyBook_FullMethodName = "/example.bookstore.v1.Bookstore/ApplyBook" + Bookstore_ArchiveBook_FullMethodName = "/example.bookstore.v1.Bookstore/ArchiveBook" + Bookstore_CreateBookEdition_FullMethodName = "/example.bookstore.v1.Bookstore/CreateBookEdition" + Bookstore_GetBookEdition_FullMethodName = "/example.bookstore.v1.Bookstore/GetBookEdition" + Bookstore_DeleteBookEdition_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteBookEdition" + Bookstore_ListBookEditions_FullMethodName = "/example.bookstore.v1.Bookstore/ListBookEditions" + Bookstore_GetDeletedPublisher_FullMethodName = "/example.bookstore.v1.Bookstore/GetDeletedPublisher" + Bookstore_ListDeletedPublishers_FullMethodName = "/example.bookstore.v1.Bookstore/ListDeletedPublishers" + Bookstore_UndeleteDeletedPublisher_FullMethodName = "/example.bookstore.v1.Bookstore/UndeleteDeletedPublisher" + Bookstore_CreateIsbn_FullMethodName = "/example.bookstore.v1.Bookstore/CreateIsbn" + Bookstore_GetIsbn_FullMethodName = "/example.bookstore.v1.Bookstore/GetIsbn" + Bookstore_ListIsbns_FullMethodName = "/example.bookstore.v1.Bookstore/ListIsbns" + Bookstore_CreateItem_FullMethodName = "/example.bookstore.v1.Bookstore/CreateItem" + Bookstore_GetItem_FullMethodName = "/example.bookstore.v1.Bookstore/GetItem" + Bookstore_UpdateItem_FullMethodName = "/example.bookstore.v1.Bookstore/UpdateItem" + Bookstore_DeleteItem_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteItem" + Bookstore_ListItems_FullMethodName = "/example.bookstore.v1.Bookstore/ListItems" + Bookstore_MoveItem_FullMethodName = "/example.bookstore.v1.Bookstore/MoveItem" + Bookstore_CreatePublisher_FullMethodName = "/example.bookstore.v1.Bookstore/CreatePublisher" + Bookstore_GetPublisher_FullMethodName = "/example.bookstore.v1.Bookstore/GetPublisher" + Bookstore_UpdatePublisher_FullMethodName = "/example.bookstore.v1.Bookstore/UpdatePublisher" + Bookstore_DeletePublisher_FullMethodName = "/example.bookstore.v1.Bookstore/DeletePublisher" + Bookstore_ListPublishers_FullMethodName = "/example.bookstore.v1.Bookstore/ListPublishers" + Bookstore_ApplyPublisher_FullMethodName = "/example.bookstore.v1.Bookstore/ApplyPublisher" + Bookstore_CreateStore_FullMethodName = "/example.bookstore.v1.Bookstore/CreateStore" + Bookstore_GetStore_FullMethodName = "/example.bookstore.v1.Bookstore/GetStore" + Bookstore_UpdateStore_FullMethodName = "/example.bookstore.v1.Bookstore/UpdateStore" + Bookstore_DeleteStore_FullMethodName = "/example.bookstore.v1.Bookstore/DeleteStore" + Bookstore_ListStores_FullMethodName = "/example.bookstore.v1.Bookstore/ListStores" ) // BookstoreClient is the client API for Bookstore service. @@ -82,6 +85,12 @@ type BookstoreClient interface { DeleteBookEdition(ctx context.Context, in *DeleteBookEditionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // An aep-compliant List method for book-editions. ListBookEditions(ctx context.Context, in *ListBookEditionsRequest, opts ...grpc.CallOption) (*ListBookEditionsResponse, error) + // An aep-compliant Get method for deleted_publisher. + GetDeletedPublisher(ctx context.Context, in *GetDeletedPublisherRequest, opts ...grpc.CallOption) (*DeletedPublisher, error) + // An aep-compliant List method for deleted_publishers. + ListDeletedPublishers(ctx context.Context, in *ListDeletedPublishersRequest, opts ...grpc.CallOption) (*ListDeletedPublishersResponse, error) + // undelete a deleted_publisher. + UndeleteDeletedPublisher(ctx context.Context, in *UndeleteDeletedPublisherRequest, opts ...grpc.CallOption) (*UndeleteDeletedPublisherResponse, error) // An aep-compliant Create method for isbn. CreateIsbn(ctx context.Context, in *CreateIsbnRequest, opts ...grpc.CallOption) (*Isbn, error) // An aep-compliant Get method for isbn. @@ -231,6 +240,33 @@ func (c *bookstoreClient) ListBookEditions(ctx context.Context, in *ListBookEdit return out, nil } +func (c *bookstoreClient) GetDeletedPublisher(ctx context.Context, in *GetDeletedPublisherRequest, opts ...grpc.CallOption) (*DeletedPublisher, error) { + out := new(DeletedPublisher) + err := c.cc.Invoke(ctx, Bookstore_GetDeletedPublisher_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *bookstoreClient) ListDeletedPublishers(ctx context.Context, in *ListDeletedPublishersRequest, opts ...grpc.CallOption) (*ListDeletedPublishersResponse, error) { + out := new(ListDeletedPublishersResponse) + err := c.cc.Invoke(ctx, Bookstore_ListDeletedPublishers_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *bookstoreClient) UndeleteDeletedPublisher(ctx context.Context, in *UndeleteDeletedPublisherRequest, opts ...grpc.CallOption) (*UndeleteDeletedPublisherResponse, error) { + out := new(UndeleteDeletedPublisherResponse) + err := c.cc.Invoke(ctx, Bookstore_UndeleteDeletedPublisher_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *bookstoreClient) CreateIsbn(ctx context.Context, in *CreateIsbnRequest, opts ...grpc.CallOption) (*Isbn, error) { out := new(Isbn) err := c.cc.Invoke(ctx, Bookstore_CreateIsbn_FullMethodName, in, out, opts...) @@ -437,6 +473,12 @@ type BookstoreServer interface { DeleteBookEdition(context.Context, *DeleteBookEditionRequest) (*emptypb.Empty, error) // An aep-compliant List method for book-editions. ListBookEditions(context.Context, *ListBookEditionsRequest) (*ListBookEditionsResponse, error) + // An aep-compliant Get method for deleted_publisher. + GetDeletedPublisher(context.Context, *GetDeletedPublisherRequest) (*DeletedPublisher, error) + // An aep-compliant List method for deleted_publishers. + ListDeletedPublishers(context.Context, *ListDeletedPublishersRequest) (*ListDeletedPublishersResponse, error) + // undelete a deleted_publisher. + UndeleteDeletedPublisher(context.Context, *UndeleteDeletedPublisherRequest) (*UndeleteDeletedPublisherResponse, error) // An aep-compliant Create method for isbn. CreateIsbn(context.Context, *CreateIsbnRequest) (*Isbn, error) // An aep-compliant Get method for isbn. @@ -517,6 +559,15 @@ func (UnimplementedBookstoreServer) DeleteBookEdition(context.Context, *DeleteBo func (UnimplementedBookstoreServer) ListBookEditions(context.Context, *ListBookEditionsRequest) (*ListBookEditionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListBookEditions not implemented") } +func (UnimplementedBookstoreServer) GetDeletedPublisher(context.Context, *GetDeletedPublisherRequest) (*DeletedPublisher, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDeletedPublisher not implemented") +} +func (UnimplementedBookstoreServer) ListDeletedPublishers(context.Context, *ListDeletedPublishersRequest) (*ListDeletedPublishersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListDeletedPublishers not implemented") +} +func (UnimplementedBookstoreServer) UndeleteDeletedPublisher(context.Context, *UndeleteDeletedPublisherRequest) (*UndeleteDeletedPublisherResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UndeleteDeletedPublisher not implemented") +} func (UnimplementedBookstoreServer) CreateIsbn(context.Context, *CreateIsbnRequest) (*Isbn, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateIsbn not implemented") } @@ -788,6 +839,60 @@ func _Bookstore_ListBookEditions_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } +func _Bookstore_GetDeletedPublisher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDeletedPublisherRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BookstoreServer).GetDeletedPublisher(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Bookstore_GetDeletedPublisher_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BookstoreServer).GetDeletedPublisher(ctx, req.(*GetDeletedPublisherRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Bookstore_ListDeletedPublishers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListDeletedPublishersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BookstoreServer).ListDeletedPublishers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Bookstore_ListDeletedPublishers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BookstoreServer).ListDeletedPublishers(ctx, req.(*ListDeletedPublishersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Bookstore_UndeleteDeletedPublisher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UndeleteDeletedPublisherRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BookstoreServer).UndeleteDeletedPublisher(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Bookstore_UndeleteDeletedPublisher_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BookstoreServer).UndeleteDeletedPublisher(ctx, req.(*UndeleteDeletedPublisherRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Bookstore_CreateIsbn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateIsbnRequest) if err := dec(in); err != nil { @@ -1199,6 +1304,18 @@ var Bookstore_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListBookEditions", Handler: _Bookstore_ListBookEditions_Handler, }, + { + MethodName: "GetDeletedPublisher", + Handler: _Bookstore_GetDeletedPublisher_Handler, + }, + { + MethodName: "ListDeletedPublishers", + Handler: _Bookstore_ListDeletedPublishers_Handler, + }, + { + MethodName: "UndeleteDeletedPublisher", + Handler: _Bookstore_UndeleteDeletedPublisher_Handler, + }, { MethodName: "CreateIsbn", Handler: _Bookstore_CreateIsbn_Handler, diff --git a/example/bookstore/v1/bookstore_openapi.json b/example/bookstore/v1/bookstore_openapi.json index f3655f4..7f76dd2 100644 --- a/example/bookstore/v1/bookstore_openapi.json +++ b/example/bookstore/v1/bookstore_openapi.json @@ -15,6 +15,117 @@ } ], "paths": { + "/deleted-publishers": { + "get": { + "description": "List method for deleted_publisher", + "operationId": "ListDeletedPublisher", + "parameters": [ + { + "name": "max_page_size", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "page_token", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "next_page_token": { + "type": "string" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/deleted_publisher" + } + } + } + } + } + } + } + } + } + }, + "/deleted-publishers/{deleted_publisher_id}": { + "get": { + "description": "Get method for deleted_publisher", + "operationId": "GetDeletedPublisher", + "parameters": [ + { + "name": "deleted_publisher_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/deleted_publisher" + } + } + } + } + } + } + }, + "/deleted-publishers/{deleted_publisher_id}:undelete": { + "post": { + "description": "Custom method undelete for deleted_publisher", + "operationId": ":UndeleteDeletedPublisher", + "parameters": [ + { + "name": "deleted_publisher_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + }, + "required": true + } + } + }, "/isbns": { "get": { "description": "List method for isbn", @@ -1422,6 +1533,30 @@ "display_name" ] }, + "deleted_publisher": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "expire_time": { + "type": "string", + "format": "date-time", + "description": "The time when this deleted publisher will expire and be permanently removed" + }, + "path": { + "type": "string", + "description": "The server-assigned path of the resource, which is unique within the service." + } + }, + "x-aep-resource": { + "singular": "deleted_publisher", + "plural": "deleted_publishers", + "patterns": [ + "deleted-publishers/{deleted_publisher_id}" + ] + } + }, "isbn": { "type": "object", "properties": { diff --git a/example/bookstore/v1/bookstore_openapi.yaml b/example/bookstore/v1/bookstore_openapi.yaml index 024a9e7..4f7131a 100644 --- a/example/bookstore/v1/bookstore_openapi.yaml +++ b/example/bookstore/v1/bookstore_openapi.yaml @@ -60,6 +60,25 @@ components: - publishers/{publisher_id}/books/{book_id}/editions/{book_edition_id} plural: book-editions singular: book-edition + deleted_publisher: + properties: + description: + type: string + expire_time: + description: The time when this deleted publisher will expire and be permanently + removed + format: date-time + type: string + path: + description: The server-assigned path of the resource, which is unique within + the service. + type: string + type: object + x-aep-resource: + patterns: + - deleted-publishers/{deleted_publisher_id} + plural: deleted_publishers + singular: deleted_publisher isbn: properties: path: @@ -138,6 +157,73 @@ info: version: version not set openapi: 3.1.0 paths: + /deleted-publishers: + get: + description: List method for deleted_publisher + operationId: ListDeletedPublisher + parameters: + - in: query + name: max_page_size + schema: + type: integer + - in: query + name: page_token + schema: + type: string + responses: + "200": + content: + application/json: + schema: + properties: + next_page_token: + type: string + results: + items: + $ref: '#/components/schemas/deleted_publisher' + type: array + type: object + description: Successful response + /deleted-publishers/{deleted_publisher_id}: + get: + description: Get method for deleted_publisher + operationId: GetDeletedPublisher + parameters: + - in: path + name: deleted_publisher_id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/deleted_publisher' + description: Successful response + /deleted-publishers/{deleted_publisher_id}:undelete: + post: + description: Custom method undelete for deleted_publisher + operationId: :UndeleteDeletedPublisher + parameters: + - in: path + name: deleted_publisher_id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + required: true + responses: + "200": + content: + application/json: + schema: + type: object + description: Successful response /isbns: get: description: List method for isbn diff --git a/example/service/service.go b/example/service/service.go index 9fde908..268e2f6 100644 --- a/example/service/service.go +++ b/example/service/service.go @@ -474,20 +474,46 @@ func (s BookstoreServer) UpdatePublisher(ctx context.Context, r *bpb.UpdatePubli } func (s BookstoreServer) DeletePublisher(_ context.Context, r *bpb.DeletePublisherRequest) (*emptypb.Empty, error) { - result, err := s.db.Exec("DELETE FROM publishers WHERE path = ?", r.Path) + // First, get the publisher to be deleted + var description string + err := s.db.QueryRow("SELECT description FROM publishers WHERE path = ?", r.Path).Scan(&description) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to delete publisher: %v", err) + if err == sql.ErrNoRows { + return nil, status.Errorf(codes.NotFound, "publisher %q not found", r.Path) + } + return nil, status.Errorf(codes.Internal, "failed to get publisher: %v", err) } - rows, err := result.RowsAffected() + // Calculate expiration time (30 days from now) + expireTime := time.Now().Add(30 * 24 * time.Hour).Format(time.RFC3339) + + // Start a transaction to move publisher to deleted_publishers table + tx, err := s.db.Begin() if err != nil { - return nil, status.Errorf(codes.Internal, "failed to get rows affected: %v", err) + return nil, status.Errorf(codes.Internal, "failed to start transaction: %v", err) } - if rows == 0 { - return nil, status.Errorf(codes.NotFound, "publisher %q not found", r.Path) + defer tx.Rollback() + + // Insert into deleted_publishers table + deletedPath := strings.Replace(r.Path, "publishers/", "deleted_publishers/", 1) + _, err = tx.Exec("INSERT INTO deleted_publishers (path, description, expire_time) VALUES (?, ?, ?)", + deletedPath, description, expireTime) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to insert into deleted_publishers: %v", err) + } + + // Remove from publishers table + _, err = tx.Exec("DELETE FROM publishers WHERE path = ?", r.Path) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to delete publisher: %v", err) } - log.Printf("deleted publisher %q", r.Path) + // Commit the transaction + if err = tx.Commit(); err != nil { + return nil, status.Errorf(codes.Internal, "failed to commit transaction: %v", err) + } + + log.Printf("moved publisher %q to deleted_publishers with expiration %q", r.Path, expireTime) return &emptypb.Empty{}, nil } @@ -555,6 +581,113 @@ func (s BookstoreServer) ListPublishers(_ context.Context, r *bpb.ListPublishers return &bpb.ListPublishersResponse{Results: publishers}, nil } +// Deleted Publishers methods +func (s BookstoreServer) GetDeletedPublisher(ctx context.Context, r *bpb.GetDeletedPublisherRequest) (*bpb.DeletedPublisher, error) { + // Normalize path: convert hyphens to underscores for database lookup + normalizedPath := strings.Replace(r.Path, "deleted-publishers/", "deleted_publishers/", 1) + log.Printf("GetDeletedPublisher: original path=%q, normalized=%q", r.Path, normalizedPath) + + deletedPublisher := &bpb.DeletedPublisher{} + err := s.db.QueryRow("SELECT path, description, expire_time FROM deleted_publishers WHERE path = ?", normalizedPath).Scan(&deletedPublisher.Path, &deletedPublisher.Description, &deletedPublisher.ExpireTime) + if err != nil { + if err == sql.ErrNoRows { + return nil, status.Errorf(codes.NotFound, "deleted publisher %q not found", r.Path) + } + return nil, status.Errorf(codes.Internal, "failed to get deleted publisher: %v", err) + } + + // Convert the path back to the hyphenated format for consistency with the API + deletedPublisher.Path = strings.Replace(deletedPublisher.Path, "deleted_publishers/", "deleted-publishers/", 1) + + log.Printf("got deleted publisher %q", r.Path) + return deletedPublisher, nil +} + +func (s BookstoreServer) ListDeletedPublishers(_ context.Context, r *bpb.ListDeletedPublishersRequest) (*bpb.ListDeletedPublishersResponse, error) { + maxPageSize := r.GetMaxPageSize() + if maxPageSize <= 0 { + maxPageSize = 10 // default page size + } + rows, err := s.db.Query(` + SELECT path, description, expire_time + FROM deleted_publishers + LIMIT ?`, maxPageSize) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to list deleted publishers: %v", err) + } + defer rows.Close() + + var deletedPublishers []*bpb.DeletedPublisher + for rows.Next() { + deletedPublisher := &bpb.DeletedPublisher{} + if err := rows.Scan(&deletedPublisher.Path, &deletedPublisher.Description, &deletedPublisher.ExpireTime); err != nil { + return nil, status.Errorf(codes.Internal, "failed to scan deleted publisher: %v", err) + } + deletedPublishers = append(deletedPublishers, deletedPublisher) + } + if err = rows.Err(); err != nil { + return nil, status.Errorf(codes.Internal, "failed to iterate deleted publishers: %v", err) + } + + return &bpb.ListDeletedPublishersResponse{Results: deletedPublishers}, nil +} + +func (s BookstoreServer) UndeleteDeletedPublisher(ctx context.Context, r *bpb.UndeleteDeletedPublisherRequest) (*bpb.UndeleteDeletedPublisherResponse, error) { + // Normalize path: convert hyphens to underscores for database lookup + normalizedPath := strings.Replace(r.Path, "deleted-publishers/", "deleted_publishers/", 1) + + // Check if the deleted publisher exists + var description, expireTime string + err := s.db.QueryRow("SELECT description, expire_time FROM deleted_publishers WHERE path = ?", normalizedPath).Scan(&description, &expireTime) + if err != nil { + if err == sql.ErrNoRows { + return nil, status.Errorf(codes.NotFound, "deleted publisher %q not found", r.Path) + } + return nil, status.Errorf(codes.Internal, "failed to get deleted publisher: %v", err) + } + + // Convert deleted_publishers path back to publishers path + publisherPath := strings.Replace(normalizedPath, "deleted_publishers/", "publishers/", 1) + + // Check if a publisher with the same path already exists (conflict case) + var existingPath string + checkErr := s.db.QueryRow("SELECT path FROM publishers WHERE path = ?", publisherPath).Scan(&existingPath) + if checkErr == nil { + return nil, status.Errorf(codes.AlreadyExists, "publisher %q already exists and is not deleted", publisherPath) + } else if checkErr != sql.ErrNoRows { + return nil, status.Errorf(codes.Internal, "failed to check for existing publisher: %v", checkErr) + } + + // Start a transaction to restore publisher + tx, err := s.db.Begin() + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to start transaction: %v", err) + } + defer tx.Rollback() + + // Insert back into publishers table + _, err = tx.Exec("INSERT INTO publishers (path, description) VALUES (?, ?)", publisherPath, description) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to restore publisher: %v", err) + } + + // Remove from deleted_publishers table + _, err = tx.Exec("DELETE FROM deleted_publishers WHERE path = ?", normalizedPath) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to remove from deleted_publishers: %v", err) + } + + // Commit the transaction + if err = tx.Commit(); err != nil { + return nil, status.Errorf(codes.Internal, "failed to commit transaction: %v", err) + } + + log.Printf("restored publisher %q from deleted_publishers", publisherPath) + + // Return empty response + return &bpb.UndeleteDeletedPublisherResponse{}, nil +} + func (s BookstoreServer) CreateStore(_ context.Context, r *bpb.CreateStoreRequest) (*bpb.Store, error) { store := proto.Clone(r.Store).(*bpb.Store) log.Printf("creating store %q", r) @@ -825,6 +958,11 @@ func StartServer(targetPort int) { path TEXT PRIMARY KEY, description TEXT ); + CREATE TABLE IF NOT EXISTS deleted_publishers ( + path TEXT PRIMARY KEY, + description TEXT, + expire_time TEXT + ); CREATE TABLE IF NOT EXISTS stores ( path TEXT PRIMARY KEY, name TEXT, diff --git a/example/service/service_test.go b/example/service/service_test.go index 5d47f6f..ab11262 100644 --- a/example/service/service_test.go +++ b/example/service/service_test.go @@ -34,6 +34,11 @@ func setupTestDB(t *testing.T) *sql.DB { path TEXT PRIMARY KEY, description TEXT ); + CREATE TABLE deleted_publishers ( + path TEXT PRIMARY KEY, + description TEXT, + expire_time TEXT + ); CREATE TABLE stores ( path TEXT PRIMARY KEY, name TEXT, @@ -531,3 +536,138 @@ func TestExtractIfMatchHeader(t *testing.T) { t.Errorf("Expected empty ETag, got %s", extractedETag4) } } + +func TestPublisherUndelete(t *testing.T) { + db := setupTestDB(t) + defer db.Close() + server := NewBookstoreServer(db) + + ctx := context.Background() + + // Create a publisher + createResp, err := server.CreatePublisher(ctx, &bpb.CreatePublisherRequest{ + Id: "test-publisher", + Publisher: &bpb.Publisher{ + Description: "Test Publisher for Undelete", + }, + }) + if err != nil { + t.Fatalf("Failed to create publisher: %v", err) + } + + publisherPath := createResp.Path + + // Delete the publisher (should move to deleted_publishers) + _, err = server.DeletePublisher(ctx, &bpb.DeletePublisherRequest{ + Path: publisherPath, + }) + if err != nil { + t.Fatalf("Failed to delete publisher: %v", err) + } + + // Verify publisher is no longer in publishers table + _, err = server.GetPublisher(ctx, &bpb.GetPublisherRequest{ + Path: publisherPath, + }) + if err == nil { + t.Fatal("Expected publisher to be deleted, but it still exists") + } + if status.Code(err) != codes.NotFound { + t.Fatalf("Expected NotFound error, got %v", err) + } + + // Verify publisher is in deleted_publishers table + deletedPath := strings.Replace(publisherPath, "publishers/", "deleted_publishers/", 1) + deletedPublisher, err := server.GetDeletedPublisher(ctx, &bpb.GetDeletedPublisherRequest{ + Path: deletedPath, + }) + if err != nil { + t.Fatalf("Failed to get deleted publisher: %v", err) + } + if deletedPublisher.Description != "Test Publisher for Undelete" { + t.Errorf("Expected description 'Test Publisher for Undelete', got %q", deletedPublisher.Description) + } + if deletedPublisher.ExpireTime == "" { + t.Error("Expected expire_time to be set") + } + + // List deleted publishers + listResp, err := server.ListDeletedPublishers(ctx, &bpb.ListDeletedPublishersRequest{}) + if err != nil { + t.Fatalf("Failed to list deleted publishers: %v", err) + } + if len(listResp.Results) != 1 { + t.Errorf("Expected 1 deleted publisher, got %d", len(listResp.Results)) + } + + // Undelete the publisher + _, err = server.UndeleteDeletedPublisher(ctx, &bpb.UndeleteDeletedPublisherRequest{ + Path: deletedPath, + }) + if err != nil { + t.Fatalf("Failed to undelete publisher: %v", err) + } + + // Verify publisher is restored in publishers table + restoredPublisher, err := server.GetPublisher(ctx, &bpb.GetPublisherRequest{ + Path: publisherPath, + }) + if err != nil { + t.Fatalf("Failed to get restored publisher: %v", err) + } + if restoredPublisher.Description != "Test Publisher for Undelete" { + t.Errorf("Expected description 'Test Publisher for Undelete', got %q", restoredPublisher.Description) + } + + // Verify publisher is no longer in deleted_publishers table + _, err = server.GetDeletedPublisher(ctx, &bpb.GetDeletedPublisherRequest{ + Path: deletedPath, + }) + if err == nil { + t.Fatal("Expected deleted publisher to be removed, but it still exists") + } + if status.Code(err) != codes.NotFound { + t.Fatalf("Expected NotFound error, got %v", err) + } + + // Test undeleting non-existent deleted publisher + _, err = server.UndeleteDeletedPublisher(ctx, &bpb.UndeleteDeletedPublisherRequest{ + Path: "deleted_publishers/non-existent", + }) + if err == nil { + t.Fatal("Expected error when undeleting non-existent publisher") + } + if status.Code(err) != codes.NotFound { + t.Fatalf("Expected NotFound error, got %v", err) + } + + // Test undeleting when publisher already exists (conflict) + // Create another publisher first + _, err = server.CreatePublisher(ctx, &bpb.CreatePublisherRequest{ + Id: "conflict-publisher", + Publisher: &bpb.Publisher{ + Description: "Conflict Test Publisher", + }, + }) + if err != nil { + t.Fatalf("Failed to create conflict publisher: %v", err) + } + + // Manually insert into deleted_publishers with same ID + _, err = db.Exec("INSERT INTO deleted_publishers (path, description, expire_time) VALUES (?, ?, ?)", + "deleted_publishers/conflict-publisher", "Old Conflict Publisher", time.Now().Add(30*24*time.Hour).Format(time.RFC3339)) + if err != nil { + t.Fatalf("Failed to insert conflict deleted publisher: %v", err) + } + + // Try to undelete - should fail with AlreadyExists + _, err = server.UndeleteDeletedPublisher(ctx, &bpb.UndeleteDeletedPublisherRequest{ + Path: "deleted_publishers/conflict-publisher", + }) + if err == nil { + t.Fatal("Expected error when undeleting publisher that already exists") + } + if status.Code(err) != codes.AlreadyExists { + t.Fatalf("Expected AlreadyExists error, got %v", err) + } +} diff --git a/test_undelete.sh b/test_undelete.sh new file mode 100755 index 0000000..46c3d76 --- /dev/null +++ b/test_undelete.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +set -e + +echo "Testing Publisher Undelete Functionality" +echo "========================================" + +# Wait a moment for server to be ready +sleep 2 + +PUBLISHER_ID="test-undelete-publisher" +BASE_URL="http://localhost:8081" + +echo "1. Creating a publisher..." +curl -X POST "${BASE_URL}/publishers?id=${PUBLISHER_ID}" \ + -H "Content-Type: application/json" \ + -d '{"description": "Test Publisher for Undelete Demo"}' \ + -s -o /dev/null -w "HTTP Status: %{http_code}\n" + +echo "2. Verifying publisher was created..." +PUBLISHER=$(curl -s "${BASE_URL}/publishers/${PUBLISHER_ID}") +echo "Publisher: $PUBLISHER" + +echo "3. Deleting the publisher (moves to deleted_publishers)..." +curl -X DELETE "${BASE_URL}/publishers/${PUBLISHER_ID}" \ + -s -o /dev/null -w "HTTP Status: %{http_code}\n" + +echo "4. Verifying publisher is no longer accessible..." +curl -s "${BASE_URL}/publishers/${PUBLISHER_ID}" -w "HTTP Status: %{http_code}\n" || echo "Expected 404 - publisher not found" + +echo "5. Checking deleted publishers..." +DELETED_PUBLISHERS=$(curl -s "${BASE_URL}/deleted_publishers") +echo "Deleted Publishers: $DELETED_PUBLISHERS" + +echo "6. Getting the specific deleted publisher..." +DELETED_PUBLISHER=$(curl -s "${BASE_URL}/deleted_publishers/${PUBLISHER_ID}") +echo "Deleted Publisher: $DELETED_PUBLISHER" + +echo "7. Undeleting the publisher..." +UNDELETE_RESPONSE=$(curl -X POST "${BASE_URL}/deleted_publishers/${PUBLISHER_ID}:undelete" \ + -H "Content-Type: application/json" \ + -d '{}' \ + -s -w "HTTP Status: %{http_code}") +echo "Undelete response: $UNDELETE_RESPONSE" + +echo "8. Verifying publisher is restored..." +RESTORED_PUBLISHER=$(curl -s "${BASE_URL}/publishers/${PUBLISHER_ID}") +echo "Restored Publisher: $RESTORED_PUBLISHER" + +echo "9. Verifying publisher is no longer in deleted_publishers..." +curl -s "${BASE_URL}/deleted_publishers/${PUBLISHER_ID}" -w "HTTP Status: %{http_code}\n" || echo "Expected 404 - deleted publisher not found" + +echo "" +echo "Undelete functionality test completed successfully!" \ No newline at end of file