From fdb9183e4cb7cc3ece7e1ffe0705e0d7c3fda29c Mon Sep 17 00:00:00 2001 From: zale144 Date: Thu, 30 Jul 2026 19:28:59 +0200 Subject: [PATCH 1/2] persist per-topic NonceV2 sequence for epoch allocation Wire AllocateNextEpochNonce into StartEpoch and round-trip the last-nonce map through genesis so epochs stay unique across restarts. Co-authored-by: Cursor --- .../api/emissions/v10/genesis.pulsar.go | 2188 +++++++++++------ x/emissions/keeper/epoch.go | 41 +- x/emissions/keeper/epoch_nonce_test.go | 92 + x/emissions/keeper/genesis.go | 27 + x/emissions/keeper/keeper.go | 9 + x/emissions/proto/emissions/v10/genesis.proto | 9 + x/emissions/types/codec.go | 1 + x/emissions/types/genesis.go | 1 + x/emissions/types/genesis.pb.go | 778 ++++-- x/emissions/types/keys.go | 2 + 10 files changed, 2121 insertions(+), 1027 deletions(-) create mode 100644 x/emissions/keeper/epoch_nonce_test.go diff --git a/x/emissions/api/emissions/v10/genesis.pulsar.go b/x/emissions/api/emissions/v10/genesis.pulsar.go index bc37feb90..d03981617 100644 --- a/x/emissions/api/emissions/v10/genesis.pulsar.go +++ b/x/emissions/api/emissions/v10/genesis.pulsar.go @@ -4552,6 +4552,57 @@ func (x *_GenesisState_101_list) IsValid() bool { return x.list != nil } +var _ protoreflect.List = (*_GenesisState_102_list)(nil) + +type _GenesisState_102_list struct { + list *[]*TopicIdAndEpochNonce +} + +func (x *_GenesisState_102_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_102_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_102_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TopicIdAndEpochNonce) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_102_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TopicIdAndEpochNonce) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_102_list) AppendMutable() protoreflect.Value { + v := new(TopicIdAndEpochNonce) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_102_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_102_list) NewElement() protoreflect.Value { + v := new(TopicIdAndEpochNonce) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_102_list) IsValid() bool { + return x.list != nil +} + var ( md_GenesisState protoreflect.MessageDescriptor fd_GenesisState_params protoreflect.FieldDescriptor @@ -4650,6 +4701,7 @@ var ( fd_GenesisState_network_inference_bundle protoreflect.FieldDescriptor fd_GenesisState_outlier_resistant_network_inference_bundle protoreflect.FieldDescriptor fd_GenesisState_topic_label_registries protoreflect.FieldDescriptor + fd_GenesisState_topic_last_epoch_nonces protoreflect.FieldDescriptor fd_GenesisState_monthly_reputer_rewards protoreflect.FieldDescriptor fd_GenesisState_monthly_topic_rewards protoreflect.FieldDescriptor ) @@ -4753,6 +4805,7 @@ func init() { fd_GenesisState_network_inference_bundle = md_GenesisState.Fields().ByName("network_inference_bundle") fd_GenesisState_outlier_resistant_network_inference_bundle = md_GenesisState.Fields().ByName("outlier_resistant_network_inference_bundle") fd_GenesisState_topic_label_registries = md_GenesisState.Fields().ByName("topic_label_registries") + fd_GenesisState_topic_last_epoch_nonces = md_GenesisState.Fields().ByName("topic_last_epoch_nonces") fd_GenesisState_monthly_reputer_rewards = md_GenesisState.Fields().ByName("monthly_reputer_rewards") fd_GenesisState_monthly_topic_rewards = md_GenesisState.Fields().ByName("monthly_topic_rewards") } @@ -5398,6 +5451,12 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, return } } + if len(x.TopicLastEpochNonces) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_102_list{list: &x.TopicLastEpochNonces}) + if !f(fd_GenesisState_topic_last_epoch_nonces, value) { + return + } + } if x.MonthlyReputerRewards != "" { value := protoreflect.ValueOfString(x.MonthlyReputerRewards) if !f(fd_GenesisState_monthly_reputer_rewards, value) { @@ -5617,6 +5676,8 @@ func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool return len(x.OutlierResistantNetworkInferenceBundle) != 0 case "emissions.v10.GenesisState.topic_label_registries": return len(x.TopicLabelRegistries) != 0 + case "emissions.v10.GenesisState.topic_last_epoch_nonces": + return len(x.TopicLastEpochNonces) != 0 case "emissions.v10.GenesisState.monthly_reputer_rewards": return x.MonthlyReputerRewards != "" case "emissions.v10.GenesisState.monthly_topic_rewards": @@ -5829,6 +5890,8 @@ func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { x.OutlierResistantNetworkInferenceBundle = nil case "emissions.v10.GenesisState.topic_label_registries": x.TopicLabelRegistries = nil + case "emissions.v10.GenesisState.topic_last_epoch_nonces": + x.TopicLastEpochNonces = nil case "emissions.v10.GenesisState.monthly_reputer_rewards": x.MonthlyReputerRewards = "" case "emissions.v10.GenesisState.monthly_topic_rewards": @@ -6407,6 +6470,12 @@ func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescripto } listValue := &_GenesisState_101_list{list: &x.TopicLabelRegistries} return protoreflect.ValueOfList(listValue) + case "emissions.v10.GenesisState.topic_last_epoch_nonces": + if len(x.TopicLastEpochNonces) == 0 { + return protoreflect.ValueOfList(&_GenesisState_102_list{}) + } + listValue := &_GenesisState_102_list{list: &x.TopicLastEpochNonces} + return protoreflect.ValueOfList(listValue) case "emissions.v10.GenesisState.monthly_reputer_rewards": value := x.MonthlyReputerRewards return protoreflect.ValueOfString(value) @@ -6805,6 +6874,10 @@ func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value lv := value.List() clv := lv.(*_GenesisState_101_list) x.TopicLabelRegistries = *clv.list + case "emissions.v10.GenesisState.topic_last_epoch_nonces": + lv := value.List() + clv := lv.(*_GenesisState_102_list) + x.TopicLastEpochNonces = *clv.list case "emissions.v10.GenesisState.monthly_reputer_rewards": x.MonthlyReputerRewards = value.Interface().(string) case "emissions.v10.GenesisState.monthly_topic_rewards": @@ -7374,6 +7447,12 @@ func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) p } value := &_GenesisState_101_list{list: &x.TopicLabelRegistries} return protoreflect.ValueOfList(value) + case "emissions.v10.GenesisState.topic_last_epoch_nonces": + if x.TopicLastEpochNonces == nil { + x.TopicLastEpochNonces = []*TopicIdAndEpochNonce{} + } + value := &_GenesisState_102_list{list: &x.TopicLastEpochNonces} + return protoreflect.ValueOfList(value) case "emissions.v10.GenesisState.next_topic_id": panic(fmt.Errorf("field next_topic_id of message emissions.v10.GenesisState is not mutable")) case "emissions.v10.GenesisState.total_stake": @@ -7684,6 +7763,9 @@ func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) case "emissions.v10.GenesisState.topic_label_registries": list := []*TopicIdBlockHeightEpochLabelRegistry{} return protoreflect.ValueOfList(&_GenesisState_101_list{list: &list}) + case "emissions.v10.GenesisState.topic_last_epoch_nonces": + list := []*TopicIdAndEpochNonce{} + return protoreflect.ValueOfList(&_GenesisState_102_list{list: &list}) case "emissions.v10.GenesisState.monthly_reputer_rewards": return protoreflect.ValueOfString("") case "emissions.v10.GenesisState.monthly_topic_rewards": @@ -8324,6 +8406,12 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { n += 2 + l + runtime.Sov(uint64(l)) } } + if len(x.TopicLastEpochNonces) > 0 { + for _, e := range x.TopicLastEpochNonces { + l = options.Size(e) + n += 2 + l + runtime.Sov(uint64(l)) + } + } l = len(x.MonthlyReputerRewards) if l > 0 { n += 2 + l + runtime.Sov(uint64(l)) @@ -8361,6 +8449,24 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.TopicLastEpochNonces) > 0 { + for iNdEx := len(x.TopicLastEpochNonces) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.TopicLastEpochNonces[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x6 + i-- + dAtA[i] = 0xb2 + } + } if len(x.TopicLabelRegistries) > 0 { for iNdEx := len(x.TopicLabelRegistries) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.TopicLabelRegistries[iNdEx]) @@ -13447,6 +13553,40 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 102: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TopicLastEpochNonces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TopicLastEpochNonces = append(x.TopicLastEpochNonces, &TopicIdAndEpochNonce{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.TopicLastEpochNonces[len(x.TopicLastEpochNonces)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex case 97: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MonthlyReputerRewards", wireType) @@ -14949,74 +15089,28 @@ func (x *fastReflection_TopicIdAndBlockHeight) ProtoMethods() *protoiface.Method } } -var _ protoreflect.List = (*_BlockHeightAndTopicIds_2_list)(nil) - -type _BlockHeightAndTopicIds_2_list struct { - list *[]uint64 -} - -func (x *_BlockHeightAndTopicIds_2_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_BlockHeightAndTopicIds_2_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfUint64((*x.list)[i]) -} - -func (x *_BlockHeightAndTopicIds_2_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Uint() - concreteValue := valueUnwrapped - (*x.list)[i] = concreteValue -} - -func (x *_BlockHeightAndTopicIds_2_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Uint() - concreteValue := valueUnwrapped - *x.list = append(*x.list, concreteValue) -} - -func (x *_BlockHeightAndTopicIds_2_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message BlockHeightAndTopicIds at list field TopicIds as it is not of Message kind")) -} - -func (x *_BlockHeightAndTopicIds_2_list) Truncate(n int) { - *x.list = (*x.list)[:n] -} - -func (x *_BlockHeightAndTopicIds_2_list) NewElement() protoreflect.Value { - v := uint64(0) - return protoreflect.ValueOfUint64(v) -} - -func (x *_BlockHeightAndTopicIds_2_list) IsValid() bool { - return x.list != nil -} - var ( - md_BlockHeightAndTopicIds protoreflect.MessageDescriptor - fd_BlockHeightAndTopicIds_block_height protoreflect.FieldDescriptor - fd_BlockHeightAndTopicIds_topic_ids protoreflect.FieldDescriptor + md_TopicIdAndEpochNonce protoreflect.MessageDescriptor + fd_TopicIdAndEpochNonce_topic_id protoreflect.FieldDescriptor + fd_TopicIdAndEpochNonce_nonce protoreflect.FieldDescriptor ) func init() { file_emissions_v10_genesis_proto_init() - md_BlockHeightAndTopicIds = File_emissions_v10_genesis_proto.Messages().ByName("BlockHeightAndTopicIds") - fd_BlockHeightAndTopicIds_block_height = md_BlockHeightAndTopicIds.Fields().ByName("block_height") - fd_BlockHeightAndTopicIds_topic_ids = md_BlockHeightAndTopicIds.Fields().ByName("topic_ids") + md_TopicIdAndEpochNonce = File_emissions_v10_genesis_proto.Messages().ByName("TopicIdAndEpochNonce") + fd_TopicIdAndEpochNonce_topic_id = md_TopicIdAndEpochNonce.Fields().ByName("topic_id") + fd_TopicIdAndEpochNonce_nonce = md_TopicIdAndEpochNonce.Fields().ByName("nonce") } -var _ protoreflect.Message = (*fastReflection_BlockHeightAndTopicIds)(nil) +var _ protoreflect.Message = (*fastReflection_TopicIdAndEpochNonce)(nil) -type fastReflection_BlockHeightAndTopicIds BlockHeightAndTopicIds +type fastReflection_TopicIdAndEpochNonce TopicIdAndEpochNonce -func (x *BlockHeightAndTopicIds) ProtoReflect() protoreflect.Message { - return (*fastReflection_BlockHeightAndTopicIds)(x) +func (x *TopicIdAndEpochNonce) ProtoReflect() protoreflect.Message { + return (*fastReflection_TopicIdAndEpochNonce)(x) } -func (x *BlockHeightAndTopicIds) slowProtoReflect() protoreflect.Message { +func (x *TopicIdAndEpochNonce) slowProtoReflect() protoreflect.Message { mi := &file_emissions_v10_genesis_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15028,43 +15122,43 @@ func (x *BlockHeightAndTopicIds) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_BlockHeightAndTopicIds_messageType fastReflection_BlockHeightAndTopicIds_messageType -var _ protoreflect.MessageType = fastReflection_BlockHeightAndTopicIds_messageType{} +var _fastReflection_TopicIdAndEpochNonce_messageType fastReflection_TopicIdAndEpochNonce_messageType +var _ protoreflect.MessageType = fastReflection_TopicIdAndEpochNonce_messageType{} -type fastReflection_BlockHeightAndTopicIds_messageType struct{} +type fastReflection_TopicIdAndEpochNonce_messageType struct{} -func (x fastReflection_BlockHeightAndTopicIds_messageType) Zero() protoreflect.Message { - return (*fastReflection_BlockHeightAndTopicIds)(nil) +func (x fastReflection_TopicIdAndEpochNonce_messageType) Zero() protoreflect.Message { + return (*fastReflection_TopicIdAndEpochNonce)(nil) } -func (x fastReflection_BlockHeightAndTopicIds_messageType) New() protoreflect.Message { - return new(fastReflection_BlockHeightAndTopicIds) +func (x fastReflection_TopicIdAndEpochNonce_messageType) New() protoreflect.Message { + return new(fastReflection_TopicIdAndEpochNonce) } -func (x fastReflection_BlockHeightAndTopicIds_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_BlockHeightAndTopicIds +func (x fastReflection_TopicIdAndEpochNonce_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TopicIdAndEpochNonce } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_BlockHeightAndTopicIds) Descriptor() protoreflect.MessageDescriptor { - return md_BlockHeightAndTopicIds +func (x *fastReflection_TopicIdAndEpochNonce) Descriptor() protoreflect.MessageDescriptor { + return md_TopicIdAndEpochNonce } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_BlockHeightAndTopicIds) Type() protoreflect.MessageType { - return _fastReflection_BlockHeightAndTopicIds_messageType +func (x *fastReflection_TopicIdAndEpochNonce) Type() protoreflect.MessageType { + return _fastReflection_TopicIdAndEpochNonce_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_BlockHeightAndTopicIds) New() protoreflect.Message { - return new(fastReflection_BlockHeightAndTopicIds) +func (x *fastReflection_TopicIdAndEpochNonce) New() protoreflect.Message { + return new(fastReflection_TopicIdAndEpochNonce) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_BlockHeightAndTopicIds) Interface() protoreflect.ProtoMessage { - return (*BlockHeightAndTopicIds)(x) +func (x *fastReflection_TopicIdAndEpochNonce) Interface() protoreflect.ProtoMessage { + return (*TopicIdAndEpochNonce)(x) } // Range iterates over every populated field in an undefined order, @@ -15072,16 +15166,16 @@ func (x *fastReflection_BlockHeightAndTopicIds) Interface() protoreflect.ProtoMe // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_BlockHeightAndTopicIds) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.BlockHeight != int64(0) { - value := protoreflect.ValueOfInt64(x.BlockHeight) - if !f(fd_BlockHeightAndTopicIds_block_height, value) { +func (x *fastReflection_TopicIdAndEpochNonce) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.TopicId != uint64(0) { + value := protoreflect.ValueOfUint64(x.TopicId) + if !f(fd_TopicIdAndEpochNonce_topic_id, value) { return } } - if len(x.TopicIds) != 0 { - value := protoreflect.ValueOfList(&_BlockHeightAndTopicIds_2_list{list: &x.TopicIds}) - if !f(fd_BlockHeightAndTopicIds_topic_ids, value) { + if x.Nonce != uint64(0) { + value := protoreflect.ValueOfUint64(x.Nonce) + if !f(fd_TopicIdAndEpochNonce_nonce, value) { return } } @@ -15098,17 +15192,17 @@ func (x *fastReflection_BlockHeightAndTopicIds) Range(f func(protoreflect.FieldD // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_BlockHeightAndTopicIds) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_TopicIdAndEpochNonce) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "emissions.v10.BlockHeightAndTopicIds.block_height": - return x.BlockHeight != int64(0) - case "emissions.v10.BlockHeightAndTopicIds.topic_ids": - return len(x.TopicIds) != 0 + case "emissions.v10.TopicIdAndEpochNonce.topic_id": + return x.TopicId != uint64(0) + case "emissions.v10.TopicIdAndEpochNonce.nonce": + return x.Nonce != uint64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.TopicIdAndEpochNonce")) } - panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message emissions.v10.TopicIdAndEpochNonce does not contain field %s", fd.FullName())) } } @@ -15118,17 +15212,17 @@ func (x *fastReflection_BlockHeightAndTopicIds) Has(fd protoreflect.FieldDescrip // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_BlockHeightAndTopicIds) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_TopicIdAndEpochNonce) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "emissions.v10.BlockHeightAndTopicIds.block_height": - x.BlockHeight = int64(0) - case "emissions.v10.BlockHeightAndTopicIds.topic_ids": - x.TopicIds = nil + case "emissions.v10.TopicIdAndEpochNonce.topic_id": + x.TopicId = uint64(0) + case "emissions.v10.TopicIdAndEpochNonce.nonce": + x.Nonce = uint64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.TopicIdAndEpochNonce")) } - panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message emissions.v10.TopicIdAndEpochNonce does not contain field %s", fd.FullName())) } } @@ -15138,22 +15232,19 @@ func (x *fastReflection_BlockHeightAndTopicIds) Clear(fd protoreflect.FieldDescr // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_BlockHeightAndTopicIds) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_TopicIdAndEpochNonce) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "emissions.v10.BlockHeightAndTopicIds.block_height": - value := x.BlockHeight - return protoreflect.ValueOfInt64(value) - case "emissions.v10.BlockHeightAndTopicIds.topic_ids": - if len(x.TopicIds) == 0 { - return protoreflect.ValueOfList(&_BlockHeightAndTopicIds_2_list{}) - } - listValue := &_BlockHeightAndTopicIds_2_list{list: &x.TopicIds} - return protoreflect.ValueOfList(listValue) + case "emissions.v10.TopicIdAndEpochNonce.topic_id": + value := x.TopicId + return protoreflect.ValueOfUint64(value) + case "emissions.v10.TopicIdAndEpochNonce.nonce": + value := x.Nonce + return protoreflect.ValueOfUint64(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.TopicIdAndEpochNonce")) } - panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message emissions.v10.TopicIdAndEpochNonce does not contain field %s", descriptor.FullName())) } } @@ -15167,19 +15258,17 @@ func (x *fastReflection_BlockHeightAndTopicIds) Get(descriptor protoreflect.Fiel // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_BlockHeightAndTopicIds) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_TopicIdAndEpochNonce) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "emissions.v10.BlockHeightAndTopicIds.block_height": - x.BlockHeight = value.Int() - case "emissions.v10.BlockHeightAndTopicIds.topic_ids": - lv := value.List() - clv := lv.(*_BlockHeightAndTopicIds_2_list) - x.TopicIds = *clv.list + case "emissions.v10.TopicIdAndEpochNonce.topic_id": + x.TopicId = value.Uint() + case "emissions.v10.TopicIdAndEpochNonce.nonce": + x.Nonce = value.Uint() default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.TopicIdAndEpochNonce")) } - panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message emissions.v10.TopicIdAndEpochNonce does not contain field %s", fd.FullName())) } } @@ -15193,49 +15282,44 @@ func (x *fastReflection_BlockHeightAndTopicIds) Set(fd protoreflect.FieldDescrip // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_BlockHeightAndTopicIds) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_TopicIdAndEpochNonce) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "emissions.v10.BlockHeightAndTopicIds.topic_ids": - if x.TopicIds == nil { - x.TopicIds = []uint64{} - } - value := &_BlockHeightAndTopicIds_2_list{list: &x.TopicIds} - return protoreflect.ValueOfList(value) - case "emissions.v10.BlockHeightAndTopicIds.block_height": - panic(fmt.Errorf("field block_height of message emissions.v10.BlockHeightAndTopicIds is not mutable")) + case "emissions.v10.TopicIdAndEpochNonce.topic_id": + panic(fmt.Errorf("field topic_id of message emissions.v10.TopicIdAndEpochNonce is not mutable")) + case "emissions.v10.TopicIdAndEpochNonce.nonce": + panic(fmt.Errorf("field nonce of message emissions.v10.TopicIdAndEpochNonce is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.TopicIdAndEpochNonce")) } - panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message emissions.v10.TopicIdAndEpochNonce does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_BlockHeightAndTopicIds) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_TopicIdAndEpochNonce) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "emissions.v10.BlockHeightAndTopicIds.block_height": - return protoreflect.ValueOfInt64(int64(0)) - case "emissions.v10.BlockHeightAndTopicIds.topic_ids": - list := []uint64{} - return protoreflect.ValueOfList(&_BlockHeightAndTopicIds_2_list{list: &list}) + case "emissions.v10.TopicIdAndEpochNonce.topic_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "emissions.v10.TopicIdAndEpochNonce.nonce": + return protoreflect.ValueOfUint64(uint64(0)) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.TopicIdAndEpochNonce")) } - panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message emissions.v10.TopicIdAndEpochNonce does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_BlockHeightAndTopicIds) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_TopicIdAndEpochNonce) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in emissions.v10.BlockHeightAndTopicIds", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in emissions.v10.TopicIdAndEpochNonce", d.FullName())) } panic("unreachable") } @@ -15243,7 +15327,7 @@ func (x *fastReflection_BlockHeightAndTopicIds) WhichOneof(d protoreflect.OneofD // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_BlockHeightAndTopicIds) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_TopicIdAndEpochNonce) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -15254,7 +15338,7 @@ func (x *fastReflection_BlockHeightAndTopicIds) GetUnknown() protoreflect.RawFie // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_BlockHeightAndTopicIds) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_TopicIdAndEpochNonce) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -15266,7 +15350,7 @@ func (x *fastReflection_BlockHeightAndTopicIds) SetUnknown(fields protoreflect.R // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_BlockHeightAndTopicIds) IsValid() bool { +func (x *fastReflection_TopicIdAndEpochNonce) IsValid() bool { return x != nil } @@ -15276,9 +15360,9 @@ func (x *fastReflection_BlockHeightAndTopicIds) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_BlockHeightAndTopicIds) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_TopicIdAndEpochNonce) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*BlockHeightAndTopicIds) + x := input.Message.Interface().(*TopicIdAndEpochNonce) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -15290,15 +15374,11 @@ func (x *fastReflection_BlockHeightAndTopicIds) ProtoMethods() *protoiface.Metho var n int var l int _ = l - if x.BlockHeight != 0 { - n += 1 + runtime.Sov(uint64(x.BlockHeight)) + if x.TopicId != 0 { + n += 1 + runtime.Sov(uint64(x.TopicId)) } - if len(x.TopicIds) > 0 { - l = 0 - for _, e := range x.TopicIds { - l += runtime.Sov(uint64(e)) - } - n += 1 + runtime.Sov(uint64(l)) + l + if x.Nonce != 0 { + n += 1 + runtime.Sov(uint64(x.Nonce)) } if x.unknownFields != nil { n += len(x.unknownFields) @@ -15310,7 +15390,519 @@ func (x *fastReflection_BlockHeightAndTopicIds) ProtoMethods() *protoiface.Metho } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*BlockHeightAndTopicIds) + x := input.Message.Interface().(*TopicIdAndEpochNonce) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Nonce != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Nonce)) + i-- + dAtA[i] = 0x10 + } + if x.TopicId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.TopicId)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TopicIdAndEpochNonce) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TopicIdAndEpochNonce: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TopicIdAndEpochNonce: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TopicId", wireType) + } + x.TopicId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.TopicId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Nonce", wireType) + } + x.Nonce = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Nonce |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_BlockHeightAndTopicIds_2_list)(nil) + +type _BlockHeightAndTopicIds_2_list struct { + list *[]uint64 +} + +func (x *_BlockHeightAndTopicIds_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_BlockHeightAndTopicIds_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfUint64((*x.list)[i]) +} + +func (x *_BlockHeightAndTopicIds_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Uint() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_BlockHeightAndTopicIds_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Uint() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_BlockHeightAndTopicIds_2_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message BlockHeightAndTopicIds at list field TopicIds as it is not of Message kind")) +} + +func (x *_BlockHeightAndTopicIds_2_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_BlockHeightAndTopicIds_2_list) NewElement() protoreflect.Value { + v := uint64(0) + return protoreflect.ValueOfUint64(v) +} + +func (x *_BlockHeightAndTopicIds_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_BlockHeightAndTopicIds protoreflect.MessageDescriptor + fd_BlockHeightAndTopicIds_block_height protoreflect.FieldDescriptor + fd_BlockHeightAndTopicIds_topic_ids protoreflect.FieldDescriptor +) + +func init() { + file_emissions_v10_genesis_proto_init() + md_BlockHeightAndTopicIds = File_emissions_v10_genesis_proto.Messages().ByName("BlockHeightAndTopicIds") + fd_BlockHeightAndTopicIds_block_height = md_BlockHeightAndTopicIds.Fields().ByName("block_height") + fd_BlockHeightAndTopicIds_topic_ids = md_BlockHeightAndTopicIds.Fields().ByName("topic_ids") +} + +var _ protoreflect.Message = (*fastReflection_BlockHeightAndTopicIds)(nil) + +type fastReflection_BlockHeightAndTopicIds BlockHeightAndTopicIds + +func (x *BlockHeightAndTopicIds) ProtoReflect() protoreflect.Message { + return (*fastReflection_BlockHeightAndTopicIds)(x) +} + +func (x *BlockHeightAndTopicIds) slowProtoReflect() protoreflect.Message { + mi := &file_emissions_v10_genesis_proto_msgTypes[5] + 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) +} + +var _fastReflection_BlockHeightAndTopicIds_messageType fastReflection_BlockHeightAndTopicIds_messageType +var _ protoreflect.MessageType = fastReflection_BlockHeightAndTopicIds_messageType{} + +type fastReflection_BlockHeightAndTopicIds_messageType struct{} + +func (x fastReflection_BlockHeightAndTopicIds_messageType) Zero() protoreflect.Message { + return (*fastReflection_BlockHeightAndTopicIds)(nil) +} +func (x fastReflection_BlockHeightAndTopicIds_messageType) New() protoreflect.Message { + return new(fastReflection_BlockHeightAndTopicIds) +} +func (x fastReflection_BlockHeightAndTopicIds_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_BlockHeightAndTopicIds +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_BlockHeightAndTopicIds) Descriptor() protoreflect.MessageDescriptor { + return md_BlockHeightAndTopicIds +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_BlockHeightAndTopicIds) Type() protoreflect.MessageType { + return _fastReflection_BlockHeightAndTopicIds_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_BlockHeightAndTopicIds) New() protoreflect.Message { + return new(fastReflection_BlockHeightAndTopicIds) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_BlockHeightAndTopicIds) Interface() protoreflect.ProtoMessage { + return (*BlockHeightAndTopicIds)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_BlockHeightAndTopicIds) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.BlockHeight != int64(0) { + value := protoreflect.ValueOfInt64(x.BlockHeight) + if !f(fd_BlockHeightAndTopicIds_block_height, value) { + return + } + } + if len(x.TopicIds) != 0 { + value := protoreflect.ValueOfList(&_BlockHeightAndTopicIds_2_list{list: &x.TopicIds}) + if !f(fd_BlockHeightAndTopicIds_topic_ids, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_BlockHeightAndTopicIds) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "emissions.v10.BlockHeightAndTopicIds.block_height": + return x.BlockHeight != int64(0) + case "emissions.v10.BlockHeightAndTopicIds.topic_ids": + return len(x.TopicIds) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + } + panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BlockHeightAndTopicIds) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "emissions.v10.BlockHeightAndTopicIds.block_height": + x.BlockHeight = int64(0) + case "emissions.v10.BlockHeightAndTopicIds.topic_ids": + x.TopicIds = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + } + panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_BlockHeightAndTopicIds) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "emissions.v10.BlockHeightAndTopicIds.block_height": + value := x.BlockHeight + return protoreflect.ValueOfInt64(value) + case "emissions.v10.BlockHeightAndTopicIds.topic_ids": + if len(x.TopicIds) == 0 { + return protoreflect.ValueOfList(&_BlockHeightAndTopicIds_2_list{}) + } + listValue := &_BlockHeightAndTopicIds_2_list{list: &x.TopicIds} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + } + panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BlockHeightAndTopicIds) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "emissions.v10.BlockHeightAndTopicIds.block_height": + x.BlockHeight = value.Int() + case "emissions.v10.BlockHeightAndTopicIds.topic_ids": + lv := value.List() + clv := lv.(*_BlockHeightAndTopicIds_2_list) + x.TopicIds = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + } + panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BlockHeightAndTopicIds) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "emissions.v10.BlockHeightAndTopicIds.topic_ids": + if x.TopicIds == nil { + x.TopicIds = []uint64{} + } + value := &_BlockHeightAndTopicIds_2_list{list: &x.TopicIds} + return protoreflect.ValueOfList(value) + case "emissions.v10.BlockHeightAndTopicIds.block_height": + panic(fmt.Errorf("field block_height of message emissions.v10.BlockHeightAndTopicIds is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + } + panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_BlockHeightAndTopicIds) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "emissions.v10.BlockHeightAndTopicIds.block_height": + return protoreflect.ValueOfInt64(int64(0)) + case "emissions.v10.BlockHeightAndTopicIds.topic_ids": + list := []uint64{} + return protoreflect.ValueOfList(&_BlockHeightAndTopicIds_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: emissions.v10.BlockHeightAndTopicIds")) + } + panic(fmt.Errorf("message emissions.v10.BlockHeightAndTopicIds does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_BlockHeightAndTopicIds) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in emissions.v10.BlockHeightAndTopicIds", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_BlockHeightAndTopicIds) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BlockHeightAndTopicIds) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_BlockHeightAndTopicIds) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_BlockHeightAndTopicIds) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*BlockHeightAndTopicIds) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.BlockHeight != 0 { + n += 1 + runtime.Sov(uint64(x.BlockHeight)) + } + if len(x.TopicIds) > 0 { + l = 0 + for _, e := range x.TopicIds { + l += runtime.Sov(uint64(e)) + } + n += 1 + runtime.Sov(uint64(l)) + l + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*BlockHeightAndTopicIds) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -15557,7 +16149,7 @@ func (x *TopicIdBlockHeightScores) ProtoReflect() protoreflect.Message { } func (x *TopicIdBlockHeightScores) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[5] + mi := &file_emissions_v10_genesis_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16088,7 +16680,7 @@ func (x *TopicIdActorIdScore) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdScore) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[6] + mi := &file_emissions_v10_genesis_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16635,7 +17227,7 @@ func (x *TopicIdActorIdUint64) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdUint64) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[7] + mi := &file_emissions_v10_genesis_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17151,7 +17743,7 @@ func (x *TopicIdActorIdListeningCoefficient) ProtoReflect() protoreflect.Message } func (x *TopicIdActorIdListeningCoefficient) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[8] + mi := &file_emissions_v10_genesis_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17698,7 +18290,7 @@ func (x *TopicIdActorIdDec) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdDec) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[9] + mi := &file_emissions_v10_genesis_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18228,7 +18820,7 @@ func (x *TopicIdAndInt) ProtoReflect() protoreflect.Message { } func (x *TopicIdAndInt) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[10] + mi := &file_emissions_v10_genesis_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18698,7 +19290,7 @@ func (x *TopicIdActorIdInt) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdInt) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[11] + mi := &file_emissions_v10_genesis_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19232,7 +19824,7 @@ func (x *TopicIdDelegatorReputerDelegatorInfo) ProtoReflect() protoreflect.Messa } func (x *TopicIdDelegatorReputerDelegatorInfo) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[12] + mi := &file_emissions_v10_genesis_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19843,7 +20435,7 @@ func (x *BlockHeightTopicIdReputerStakeRemovalInfo) ProtoReflect() protoreflect. } func (x *BlockHeightTopicIdReputerStakeRemovalInfo) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[13] + mi := &file_emissions_v10_genesis_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20436,7 +21028,7 @@ func (x *ActorIdTopicIdBlockHeight) ProtoReflect() protoreflect.Message { } func (x *ActorIdTopicIdBlockHeight) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[14] + mi := &file_emissions_v10_genesis_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20956,7 +21548,7 @@ func (x *BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) ProtoReflec } func (x *BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[15] + mi := &file_emissions_v10_genesis_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21613,7 +22205,7 @@ func (x *DelegatorReputerTopicIdBlockHeight) ProtoReflect() protoreflect.Message } func (x *DelegatorReputerTopicIdBlockHeight) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[16] + mi := &file_emissions_v10_genesis_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22191,7 +22783,7 @@ func (x *TopicIdActorIdInference) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdInference) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[17] + mi := &file_emissions_v10_genesis_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22738,7 +23330,7 @@ func (x *TopicIdActorIdForecast) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdForecast) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[18] + mi := &file_emissions_v10_genesis_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23283,7 +23875,7 @@ func (x *LibP2PKeyAndOffchainNode) ProtoReflect() protoreflect.Message { } func (x *LibP2PKeyAndOffchainNode) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[19] + mi := &file_emissions_v10_genesis_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23782,7 +24374,7 @@ func (x *TopicIdAndDec) ProtoReflect() protoreflect.Message { } func (x *TopicIdAndDec) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[20] + mi := &file_emissions_v10_genesis_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24252,7 +24844,7 @@ func (x *TopicIdBlockHeightInferences) ProtoReflect() protoreflect.Message { } func (x *TopicIdBlockHeightInferences) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[21] + mi := &file_emissions_v10_genesis_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24783,7 +25375,7 @@ func (x *TopicIdBlockHeightEpochLabelRegistry) ProtoReflect() protoreflect.Messa } func (x *TopicIdBlockHeightEpochLabelRegistry) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[22] + mi := &file_emissions_v10_genesis_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25314,7 +25906,7 @@ func (x *TopicIdBlockHeightForecasts) ProtoReflect() protoreflect.Message { } func (x *TopicIdBlockHeightForecasts) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[23] + mi := &file_emissions_v10_genesis_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25845,7 +26437,7 @@ func (x *TopicIdBlockHeightReputerValueBundles) ProtoReflect() protoreflect.Mess } func (x *TopicIdBlockHeightReputerValueBundles) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[24] + mi := &file_emissions_v10_genesis_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26376,7 +26968,7 @@ func (x *TopicIdBlockHeightValueBundles) ProtoReflect() protoreflect.Message { } func (x *TopicIdBlockHeightValueBundles) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[25] + mi := &file_emissions_v10_genesis_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26907,7 +27499,7 @@ func (x *TopicIdBlockHeightNetworkInferenceBundles) ProtoReflect() protoreflect. } func (x *TopicIdBlockHeightNetworkInferenceBundles) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[26] + mi := &file_emissions_v10_genesis_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27436,7 +28028,7 @@ func (x *TopicIdAndNonces) ProtoReflect() protoreflect.Message { } func (x *TopicIdAndNonces) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[27] + mi := &file_emissions_v10_genesis_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27919,7 +28511,7 @@ func (x *TopicIdAndReputerRequestNonces) ProtoReflect() protoreflect.Message { } func (x *TopicIdAndReputerRequestNonces) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[28] + mi := &file_emissions_v10_genesis_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28404,7 +28996,7 @@ func (x *TopicIdActorIdTimeStampedValue) ProtoReflect() protoreflect.Message { } func (x *TopicIdActorIdTimeStampedValue) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[29] + mi := &file_emissions_v10_genesis_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28953,7 +29545,7 @@ func (x *TopicIdActorIdActorIdTimeStampedValue) ProtoReflect() protoreflect.Mess } func (x *TopicIdActorIdActorIdTimeStampedValue) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[30] + mi := &file_emissions_v10_genesis_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29560,7 +30152,7 @@ func (x *TopicIdTimestampedActorNonce) ProtoReflect() protoreflect.Message { } func (x *TopicIdTimestampedActorNonce) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[31] + mi := &file_emissions_v10_genesis_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30043,7 +30635,7 @@ func (x *BlockHeightTopicIds) ProtoReflect() protoreflect.Message { } func (x *BlockHeightTopicIds) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[32] + mi := &file_emissions_v10_genesis_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30526,7 +31118,7 @@ func (x *BlockHeightTopicIdWeightPair) ProtoReflect() protoreflect.Message { } func (x *BlockHeightTopicIdWeightPair) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[33] + mi := &file_emissions_v10_genesis_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31011,7 +31603,7 @@ func (x *TopicIdReputerReputerValueBundle) ProtoReflect() protoreflect.Message { } func (x *TopicIdReputerReputerValueBundle) slowProtoReflect() protoreflect.Message { - mi := &file_emissions_v10_genesis_proto_msgTypes[34] + mi := &file_emissions_v10_genesis_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31756,6 +32348,8 @@ type GenesisState struct { // EPOCH LABEL REGISTRIES // map of (topic, block_height) -> temporary or final EpochLabelRegistry TopicLabelRegistries []*TopicIdBlockHeightEpochLabelRegistry `protobuf:"bytes,101,rep,name=topic_label_registries,json=topicLabelRegistries,proto3" json:"topic_label_registries,omitempty"` + // Last allocated epoch NonceV2 per topic (map of topic_id -> nonce). + TopicLastEpochNonces []*TopicIdAndEpochNonce `protobuf:"bytes,102,rep,name=topic_last_epoch_nonces,json=topicLastEpochNonces,proto3" json:"topic_last_epoch_nonces,omitempty"` // MONTHLY REWARDS MonthlyReputerRewards string `protobuf:"bytes,97,opt,name=monthly_reputer_rewards,json=monthlyReputerRewards,proto3" json:"monthly_reputer_rewards,omitempty"` MonthlyTopicRewards string `protobuf:"bytes,98,opt,name=monthly_topic_rewards,json=monthlyTopicRewards,proto3" json:"monthly_topic_rewards,omitempty"` @@ -32453,6 +33047,13 @@ func (x *GenesisState) GetTopicLabelRegistries() []*TopicIdBlockHeightEpochLabel return nil } +func (x *GenesisState) GetTopicLastEpochNonces() []*TopicIdAndEpochNonce { + if x != nil { + return x.TopicLastEpochNonces + } + return nil +} + func (x *GenesisState) GetMonthlyReputerRewards() string { if x != nil { return x.MonthlyReputerRewards @@ -32596,6 +33197,50 @@ func (x *TopicIdAndBlockHeight) GetBlockHeight() int64 { return 0 } +type TopicIdAndEpochNonce struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TopicId uint64 `protobuf:"varint,1,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` + // Last allocated epoch nonce for the topic (NonceV2 encoded as uint64). + Nonce uint64 `protobuf:"varint,2,opt,name=nonce,proto3" json:"nonce,omitempty"` +} + +func (x *TopicIdAndEpochNonce) Reset() { + *x = TopicIdAndEpochNonce{} + if protoimpl.UnsafeEnabled { + mi := &file_emissions_v10_genesis_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TopicIdAndEpochNonce) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopicIdAndEpochNonce) ProtoMessage() {} + +// Deprecated: Use TopicIdAndEpochNonce.ProtoReflect.Descriptor instead. +func (*TopicIdAndEpochNonce) Descriptor() ([]byte, []int) { + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{4} +} + +func (x *TopicIdAndEpochNonce) GetTopicId() uint64 { + if x != nil { + return x.TopicId + } + return 0 +} + +func (x *TopicIdAndEpochNonce) GetNonce() uint64 { + if x != nil { + return x.Nonce + } + return 0 +} + type BlockHeightAndTopicIds struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -32608,7 +33253,7 @@ type BlockHeightAndTopicIds struct { func (x *BlockHeightAndTopicIds) Reset() { *x = BlockHeightAndTopicIds{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[4] + mi := &file_emissions_v10_genesis_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32622,7 +33267,7 @@ func (*BlockHeightAndTopicIds) ProtoMessage() {} // Deprecated: Use BlockHeightAndTopicIds.ProtoReflect.Descriptor instead. func (*BlockHeightAndTopicIds) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{4} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{5} } func (x *BlockHeightAndTopicIds) GetBlockHeight() int64 { @@ -32652,7 +33297,7 @@ type TopicIdBlockHeightScores struct { func (x *TopicIdBlockHeightScores) Reset() { *x = TopicIdBlockHeightScores{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[5] + mi := &file_emissions_v10_genesis_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32666,7 +33311,7 @@ func (*TopicIdBlockHeightScores) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightScores.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightScores) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{5} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{6} } func (x *TopicIdBlockHeightScores) GetTopicId() uint64 { @@ -32703,7 +33348,7 @@ type TopicIdActorIdScore struct { func (x *TopicIdActorIdScore) Reset() { *x = TopicIdActorIdScore{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[6] + mi := &file_emissions_v10_genesis_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32717,7 +33362,7 @@ func (*TopicIdActorIdScore) ProtoMessage() {} // Deprecated: Use TopicIdActorIdScore.ProtoReflect.Descriptor instead. func (*TopicIdActorIdScore) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{6} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{7} } func (x *TopicIdActorIdScore) GetTopicId() uint64 { @@ -32754,7 +33399,7 @@ type TopicIdActorIdUint64 struct { func (x *TopicIdActorIdUint64) Reset() { *x = TopicIdActorIdUint64{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[7] + mi := &file_emissions_v10_genesis_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32768,7 +33413,7 @@ func (*TopicIdActorIdUint64) ProtoMessage() {} // Deprecated: Use TopicIdActorIdUint64.ProtoReflect.Descriptor instead. func (*TopicIdActorIdUint64) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{7} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{8} } func (x *TopicIdActorIdUint64) GetTopicId() uint64 { @@ -32805,7 +33450,7 @@ type TopicIdActorIdListeningCoefficient struct { func (x *TopicIdActorIdListeningCoefficient) Reset() { *x = TopicIdActorIdListeningCoefficient{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[8] + mi := &file_emissions_v10_genesis_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32819,7 +33464,7 @@ func (*TopicIdActorIdListeningCoefficient) ProtoMessage() {} // Deprecated: Use TopicIdActorIdListeningCoefficient.ProtoReflect.Descriptor instead. func (*TopicIdActorIdListeningCoefficient) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{8} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{9} } func (x *TopicIdActorIdListeningCoefficient) GetTopicId() uint64 { @@ -32856,7 +33501,7 @@ type TopicIdActorIdDec struct { func (x *TopicIdActorIdDec) Reset() { *x = TopicIdActorIdDec{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[9] + mi := &file_emissions_v10_genesis_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32870,7 +33515,7 @@ func (*TopicIdActorIdDec) ProtoMessage() {} // Deprecated: Use TopicIdActorIdDec.ProtoReflect.Descriptor instead. func (*TopicIdActorIdDec) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{9} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{10} } func (x *TopicIdActorIdDec) GetTopicId() uint64 { @@ -32906,7 +33551,7 @@ type TopicIdAndInt struct { func (x *TopicIdAndInt) Reset() { *x = TopicIdAndInt{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[10] + mi := &file_emissions_v10_genesis_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32920,7 +33565,7 @@ func (*TopicIdAndInt) ProtoMessage() {} // Deprecated: Use TopicIdAndInt.ProtoReflect.Descriptor instead. func (*TopicIdAndInt) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{10} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{11} } func (x *TopicIdAndInt) GetTopicId() uint64 { @@ -32950,7 +33595,7 @@ type TopicIdActorIdInt struct { func (x *TopicIdActorIdInt) Reset() { *x = TopicIdActorIdInt{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[11] + mi := &file_emissions_v10_genesis_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32964,7 +33609,7 @@ func (*TopicIdActorIdInt) ProtoMessage() {} // Deprecated: Use TopicIdActorIdInt.ProtoReflect.Descriptor instead. func (*TopicIdActorIdInt) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{11} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{12} } func (x *TopicIdActorIdInt) GetTopicId() uint64 { @@ -33002,7 +33647,7 @@ type TopicIdDelegatorReputerDelegatorInfo struct { func (x *TopicIdDelegatorReputerDelegatorInfo) Reset() { *x = TopicIdDelegatorReputerDelegatorInfo{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[12] + mi := &file_emissions_v10_genesis_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33016,7 +33661,7 @@ func (*TopicIdDelegatorReputerDelegatorInfo) ProtoMessage() {} // Deprecated: Use TopicIdDelegatorReputerDelegatorInfo.ProtoReflect.Descriptor instead. func (*TopicIdDelegatorReputerDelegatorInfo) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{12} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{13} } func (x *TopicIdDelegatorReputerDelegatorInfo) GetTopicId() uint64 { @@ -33061,7 +33706,7 @@ type BlockHeightTopicIdReputerStakeRemovalInfo struct { func (x *BlockHeightTopicIdReputerStakeRemovalInfo) Reset() { *x = BlockHeightTopicIdReputerStakeRemovalInfo{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[13] + mi := &file_emissions_v10_genesis_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33075,7 +33720,7 @@ func (*BlockHeightTopicIdReputerStakeRemovalInfo) ProtoMessage() {} // Deprecated: Use BlockHeightTopicIdReputerStakeRemovalInfo.ProtoReflect.Descriptor instead. func (*BlockHeightTopicIdReputerStakeRemovalInfo) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{13} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{14} } func (x *BlockHeightTopicIdReputerStakeRemovalInfo) GetBlockHeight() int64 { @@ -33119,7 +33764,7 @@ type ActorIdTopicIdBlockHeight struct { func (x *ActorIdTopicIdBlockHeight) Reset() { *x = ActorIdTopicIdBlockHeight{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[14] + mi := &file_emissions_v10_genesis_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33133,7 +33778,7 @@ func (*ActorIdTopicIdBlockHeight) ProtoMessage() {} // Deprecated: Use ActorIdTopicIdBlockHeight.ProtoReflect.Descriptor instead. func (*ActorIdTopicIdBlockHeight) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{14} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{15} } func (x *ActorIdTopicIdBlockHeight) GetActorId() string { @@ -33172,7 +33817,7 @@ type BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo struct { func (x *BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) Reset() { *x = BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[15] + mi := &file_emissions_v10_genesis_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33186,7 +33831,7 @@ func (*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) ProtoMessage( // Deprecated: Use BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo.ProtoReflect.Descriptor instead. func (*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{15} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{16} } func (x *BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) GetBlockHeight() int64 { @@ -33238,7 +33883,7 @@ type DelegatorReputerTopicIdBlockHeight struct { func (x *DelegatorReputerTopicIdBlockHeight) Reset() { *x = DelegatorReputerTopicIdBlockHeight{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[16] + mi := &file_emissions_v10_genesis_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33252,7 +33897,7 @@ func (*DelegatorReputerTopicIdBlockHeight) ProtoMessage() {} // Deprecated: Use DelegatorReputerTopicIdBlockHeight.ProtoReflect.Descriptor instead. func (*DelegatorReputerTopicIdBlockHeight) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{16} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{17} } func (x *DelegatorReputerTopicIdBlockHeight) GetDelegator() string { @@ -33296,7 +33941,7 @@ type TopicIdActorIdInference struct { func (x *TopicIdActorIdInference) Reset() { *x = TopicIdActorIdInference{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[17] + mi := &file_emissions_v10_genesis_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33310,7 +33955,7 @@ func (*TopicIdActorIdInference) ProtoMessage() {} // Deprecated: Use TopicIdActorIdInference.ProtoReflect.Descriptor instead. func (*TopicIdActorIdInference) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{17} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{18} } func (x *TopicIdActorIdInference) GetTopicId() uint64 { @@ -33347,7 +33992,7 @@ type TopicIdActorIdForecast struct { func (x *TopicIdActorIdForecast) Reset() { *x = TopicIdActorIdForecast{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[18] + mi := &file_emissions_v10_genesis_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33361,7 +34006,7 @@ func (*TopicIdActorIdForecast) ProtoMessage() {} // Deprecated: Use TopicIdActorIdForecast.ProtoReflect.Descriptor instead. func (*TopicIdActorIdForecast) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{18} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{19} } func (x *TopicIdActorIdForecast) GetTopicId() uint64 { @@ -33397,7 +34042,7 @@ type LibP2PKeyAndOffchainNode struct { func (x *LibP2PKeyAndOffchainNode) Reset() { *x = LibP2PKeyAndOffchainNode{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[19] + mi := &file_emissions_v10_genesis_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33411,7 +34056,7 @@ func (*LibP2PKeyAndOffchainNode) ProtoMessage() {} // Deprecated: Use LibP2PKeyAndOffchainNode.ProtoReflect.Descriptor instead. func (*LibP2PKeyAndOffchainNode) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{19} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{20} } func (x *LibP2PKeyAndOffchainNode) GetLibP2PKey() string { @@ -33440,7 +34085,7 @@ type TopicIdAndDec struct { func (x *TopicIdAndDec) Reset() { *x = TopicIdAndDec{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[20] + mi := &file_emissions_v10_genesis_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33454,7 +34099,7 @@ func (*TopicIdAndDec) ProtoMessage() {} // Deprecated: Use TopicIdAndDec.ProtoReflect.Descriptor instead. func (*TopicIdAndDec) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{20} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{21} } func (x *TopicIdAndDec) GetTopicId() uint64 { @@ -33484,7 +34129,7 @@ type TopicIdBlockHeightInferences struct { func (x *TopicIdBlockHeightInferences) Reset() { *x = TopicIdBlockHeightInferences{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[21] + mi := &file_emissions_v10_genesis_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33498,7 +34143,7 @@ func (*TopicIdBlockHeightInferences) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightInferences.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightInferences) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{21} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{22} } func (x *TopicIdBlockHeightInferences) GetTopicId() uint64 { @@ -33535,7 +34180,7 @@ type TopicIdBlockHeightEpochLabelRegistry struct { func (x *TopicIdBlockHeightEpochLabelRegistry) Reset() { *x = TopicIdBlockHeightEpochLabelRegistry{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[22] + mi := &file_emissions_v10_genesis_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33549,7 +34194,7 @@ func (*TopicIdBlockHeightEpochLabelRegistry) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightEpochLabelRegistry.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightEpochLabelRegistry) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{22} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{23} } func (x *TopicIdBlockHeightEpochLabelRegistry) GetTopicId() uint64 { @@ -33586,7 +34231,7 @@ type TopicIdBlockHeightForecasts struct { func (x *TopicIdBlockHeightForecasts) Reset() { *x = TopicIdBlockHeightForecasts{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[23] + mi := &file_emissions_v10_genesis_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33600,7 +34245,7 @@ func (*TopicIdBlockHeightForecasts) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightForecasts.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightForecasts) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{23} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{24} } func (x *TopicIdBlockHeightForecasts) GetTopicId() uint64 { @@ -33637,7 +34282,7 @@ type TopicIdBlockHeightReputerValueBundles struct { func (x *TopicIdBlockHeightReputerValueBundles) Reset() { *x = TopicIdBlockHeightReputerValueBundles{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[24] + mi := &file_emissions_v10_genesis_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33651,7 +34296,7 @@ func (*TopicIdBlockHeightReputerValueBundles) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightReputerValueBundles.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightReputerValueBundles) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{24} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{25} } func (x *TopicIdBlockHeightReputerValueBundles) GetTopicId() uint64 { @@ -33688,7 +34333,7 @@ type TopicIdBlockHeightValueBundles struct { func (x *TopicIdBlockHeightValueBundles) Reset() { *x = TopicIdBlockHeightValueBundles{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[25] + mi := &file_emissions_v10_genesis_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33702,7 +34347,7 @@ func (*TopicIdBlockHeightValueBundles) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightValueBundles.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightValueBundles) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{25} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{26} } func (x *TopicIdBlockHeightValueBundles) GetTopicId() uint64 { @@ -33739,7 +34384,7 @@ type TopicIdBlockHeightNetworkInferenceBundles struct { func (x *TopicIdBlockHeightNetworkInferenceBundles) Reset() { *x = TopicIdBlockHeightNetworkInferenceBundles{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[26] + mi := &file_emissions_v10_genesis_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33753,7 +34398,7 @@ func (*TopicIdBlockHeightNetworkInferenceBundles) ProtoMessage() {} // Deprecated: Use TopicIdBlockHeightNetworkInferenceBundles.ProtoReflect.Descriptor instead. func (*TopicIdBlockHeightNetworkInferenceBundles) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{26} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{27} } func (x *TopicIdBlockHeightNetworkInferenceBundles) GetTopicId() uint64 { @@ -33789,7 +34434,7 @@ type TopicIdAndNonces struct { func (x *TopicIdAndNonces) Reset() { *x = TopicIdAndNonces{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[27] + mi := &file_emissions_v10_genesis_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33803,7 +34448,7 @@ func (*TopicIdAndNonces) ProtoMessage() {} // Deprecated: Use TopicIdAndNonces.ProtoReflect.Descriptor instead. func (*TopicIdAndNonces) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{27} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{28} } func (x *TopicIdAndNonces) GetTopicId() uint64 { @@ -33832,7 +34477,7 @@ type TopicIdAndReputerRequestNonces struct { func (x *TopicIdAndReputerRequestNonces) Reset() { *x = TopicIdAndReputerRequestNonces{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[28] + mi := &file_emissions_v10_genesis_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33846,7 +34491,7 @@ func (*TopicIdAndReputerRequestNonces) ProtoMessage() {} // Deprecated: Use TopicIdAndReputerRequestNonces.ProtoReflect.Descriptor instead. func (*TopicIdAndReputerRequestNonces) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{28} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{29} } func (x *TopicIdAndReputerRequestNonces) GetTopicId() uint64 { @@ -33876,7 +34521,7 @@ type TopicIdActorIdTimeStampedValue struct { func (x *TopicIdActorIdTimeStampedValue) Reset() { *x = TopicIdActorIdTimeStampedValue{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[29] + mi := &file_emissions_v10_genesis_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33890,7 +34535,7 @@ func (*TopicIdActorIdTimeStampedValue) ProtoMessage() {} // Deprecated: Use TopicIdActorIdTimeStampedValue.ProtoReflect.Descriptor instead. func (*TopicIdActorIdTimeStampedValue) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{29} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{30} } func (x *TopicIdActorIdTimeStampedValue) GetTopicId() uint64 { @@ -33928,7 +34573,7 @@ type TopicIdActorIdActorIdTimeStampedValue struct { func (x *TopicIdActorIdActorIdTimeStampedValue) Reset() { *x = TopicIdActorIdActorIdTimeStampedValue{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[30] + mi := &file_emissions_v10_genesis_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33942,7 +34587,7 @@ func (*TopicIdActorIdActorIdTimeStampedValue) ProtoMessage() {} // Deprecated: Use TopicIdActorIdActorIdTimeStampedValue.ProtoReflect.Descriptor instead. func (*TopicIdActorIdActorIdTimeStampedValue) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{30} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{31} } func (x *TopicIdActorIdActorIdTimeStampedValue) GetTopicId() uint64 { @@ -33985,7 +34630,7 @@ type TopicIdTimestampedActorNonce struct { func (x *TopicIdTimestampedActorNonce) Reset() { *x = TopicIdTimestampedActorNonce{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[31] + mi := &file_emissions_v10_genesis_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33999,7 +34644,7 @@ func (*TopicIdTimestampedActorNonce) ProtoMessage() {} // Deprecated: Use TopicIdTimestampedActorNonce.ProtoReflect.Descriptor instead. func (*TopicIdTimestampedActorNonce) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{31} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{32} } func (x *TopicIdTimestampedActorNonce) GetTopicId() uint64 { @@ -34028,7 +34673,7 @@ type BlockHeightTopicIds struct { func (x *BlockHeightTopicIds) Reset() { *x = BlockHeightTopicIds{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[32] + mi := &file_emissions_v10_genesis_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -34042,7 +34687,7 @@ func (*BlockHeightTopicIds) ProtoMessage() {} // Deprecated: Use BlockHeightTopicIds.ProtoReflect.Descriptor instead. func (*BlockHeightTopicIds) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{32} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{33} } func (x *BlockHeightTopicIds) GetBlockHeight() int64 { @@ -34071,7 +34716,7 @@ type BlockHeightTopicIdWeightPair struct { func (x *BlockHeightTopicIdWeightPair) Reset() { *x = BlockHeightTopicIdWeightPair{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[33] + mi := &file_emissions_v10_genesis_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -34085,7 +34730,7 @@ func (*BlockHeightTopicIdWeightPair) ProtoMessage() {} // Deprecated: Use BlockHeightTopicIdWeightPair.ProtoReflect.Descriptor instead. func (*BlockHeightTopicIdWeightPair) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{33} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{34} } func (x *BlockHeightTopicIdWeightPair) GetBlockHeight() int64 { @@ -34115,7 +34760,7 @@ type TopicIdReputerReputerValueBundle struct { func (x *TopicIdReputerReputerValueBundle) Reset() { *x = TopicIdReputerReputerValueBundle{} if protoimpl.UnsafeEnabled { - mi := &file_emissions_v10_genesis_proto_msgTypes[34] + mi := &file_emissions_v10_genesis_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -34129,7 +34774,7 @@ func (*TopicIdReputerReputerValueBundle) ProtoMessage() {} // Deprecated: Use TopicIdReputerReputerValueBundle.ProtoReflect.Descriptor instead. func (*TopicIdReputerReputerValueBundle) Descriptor() ([]byte, []int) { - return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{34} + return file_emissions_v10_genesis_proto_rawDescGZIP(), []int{35} } func (x *TopicIdReputerReputerValueBundle) GetTopicId() uint64 { @@ -34184,7 +34829,7 @@ var file_emissions_v10_genesis_proto_rawDesc = []byte{ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x39, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x99, 0x4a, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x39, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, @@ -34752,353 +35397,364 @@ var file_emissions_v10_genesis_proto_rawDesc = []byte{ 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x68, 0x0a, 0x17, 0x6d, 0x6f, 0x6e, 0x74, - 0x68, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x18, 0x61, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, - 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, - 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x15, 0x6d, 0x6f, 0x6e, - 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x64, 0x0a, 0x15, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x62, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x54, 0x6f, 0x70, 0x69, - 0x63, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, - 0x08, 0x0e, 0x10, 0x0f, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x52, 0x1b, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, - 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x1e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, - 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, - 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x1c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x79, 0x52, 0x65, - 0x70, 0x75, 0x74, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x0f, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, - 0x41, 0x6e, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x17, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x66, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, + 0x64, 0x41, 0x6e, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x14, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x61, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4e, 0x6f, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x68, 0x0a, 0x17, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, + 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x61, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x15, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, + 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x64, + 0x0a, 0x15, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x62, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x13, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, + 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x52, 0x1b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, + 0x66, 0x65, 0x72, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x79, 0x57, 0x6f, 0x72, + 0x6b, 0x65, 0x72, 0x52, 0x1e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x79, 0x57, 0x6f, 0x72, + 0x6b, 0x65, 0x72, 0x52, 0x1c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x75, 0x74, + 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, + 0x72, 0x22, 0x58, 0x0a, 0x0f, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x22, 0x47, 0x0a, 0x0f, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x41, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x15, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, + 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, + 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x58, 0x0a, 0x14, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4e, 0x6f, + 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0f, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x07, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x56, 0x32, 0x52, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x58, 0x0a, 0x16, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x41, 0x6e, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x22, + 0x86, 0x01, 0x0a, 0x18, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, + 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x76, 0x0a, 0x13, 0x54, 0x6f, 0x70, 0x69, + 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x22, 0x64, 0x0a, 0x14, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, + 0x49, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, - 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x30, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x22, - 0x47, 0x0a, 0x0f, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x41, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x22, 0xb3, 0x01, 0x0a, 0x22, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, + 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x15, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x65, 0x66, 0x66, + 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, 0x6e, + 0x67, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, + 0x11, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x44, + 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x15, 0x54, 0x6f, 0x70, 0x69, - 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, - 0x58, 0x0a, 0x16, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6e, - 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, - 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x22, 0x76, 0x0a, 0x13, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, - 0x6f, 0x72, 0x49, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, + 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x03, 0x64, 0x65, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x2f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, + 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x03, + 0x64, 0x65, 0x63, 0x22, 0x6e, 0x0a, 0x0d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, + 0x64, 0x49, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, + 0x42, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, + 0x69, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, + 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x49, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, - 0x29, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x64, 0x0a, 0x14, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x55, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, - 0x22, 0xb3, 0x01, 0x0a, 0x22, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, - 0x72, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x65, 0x66, - 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x57, 0x0a, - 0x15, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x65, 0x66, 0x66, - 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, - 0x52, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x65, 0x66, 0x66, - 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x69, 0x63, - 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x44, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, + 0x42, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, + 0x69, 0x6e, 0x74, 0x22, 0xbd, 0x01, 0x0a, 0x24, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x49, 0x64, 0x12, 0x49, 0x0a, 0x03, 0x64, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x37, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, - 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x03, 0x64, 0x65, 0x63, 0x22, 0x6e, 0x0a, - 0x0d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x03, 0x69, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x22, 0x8d, 0x01, - 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, - 0x49, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, - 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x03, 0x69, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x22, 0xbd, 0x01, - 0x0a, 0x24, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x12, + 0x42, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0xd1, 0x01, 0x0a, 0x29, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0e, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd1, 0x01, - 0x0a, 0x29, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x70, - 0x69, 0x63, 0x49, 0x64, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, - 0x75, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, - 0x74, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x10, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x74, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x54, 0x6f, 0x70, 0x69, - 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x99, 0x02, 0x0a, 0x3a, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x12, 0x65, 0x0a, 0x1b, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x18, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x9a, 0x01, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x12, 0x73, 0x74, 0x61, + 0x6b, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x74, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x6f, 0x72, + 0x49, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x99, 0x02, + 0x0a, 0x3a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x49, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, + 0x75, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x75, - 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x22, 0x87, 0x01, 0x0a, 0x17, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, - 0x72, 0x49, 0x64, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, + 0x65, 0x72, 0x12, 0x65, 0x0a, 0x1b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x18, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9a, 0x01, 0x0a, 0x22, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x17, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x65, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x49, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x22, 0x82, 0x01, 0x0a, 0x16, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, + 0x72, 0x49, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, + 0x64, 0x12, 0x32, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x76, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x52, 0x08, 0x66, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x73, 0x74, 0x22, 0x7b, 0x0a, 0x18, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x70, 0x4b, + 0x65, 0x79, 0x41, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x6f, 0x64, + 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x6c, 0x69, 0x62, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x62, 0x50, 0x32, 0x70, 0x4b, 0x65, + 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x6f, + 0x64, 0x65, 0x22, 0x75, 0x0a, 0x0d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, + 0x44, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x49, + 0x0a, 0x03, 0x64, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, + 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x03, 0x64, 0x65, 0x63, 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x49, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0a, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x22, 0xb9, 0x01, 0x0a, 0x24, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x09, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x54, - 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x46, 0x6f, 0x72, - 0x65, 0x63, 0x61, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, - 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x66, - 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x6f, 0x72, - 0x65, 0x63, 0x61, 0x73, 0x74, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x22, - 0x7b, 0x0a, 0x18, 0x4c, 0x69, 0x62, 0x50, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x4f, - 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x6c, - 0x69, 0x62, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6c, 0x69, 0x62, 0x50, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, - 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x33, 0x2e, 0x4f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, - 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x75, 0x0a, 0x0d, - 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x44, 0x65, 0x63, 0x12, 0x19, 0x0a, - 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x03, 0x64, 0x65, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x2f, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, - 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x03, - 0x64, 0x65, 0x63, 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x52, 0x0a, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xb9, 0x01, - 0x0a, 0x24, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x53, 0x0a, 0x14, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x52, 0x12, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x22, + 0x92, 0x01, 0x0a, 0x1b, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, + 0x09, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, + 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x73, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x73, 0x74, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x25, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x70, 0x75, 0x74, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x55, 0x0a, 0x15, + 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x70, 0x75, 0x74, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x13, + 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x1e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x53, 0x0a, 0x14, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x30, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x79, 0x52, 0x12, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x22, 0x92, 0x01, 0x0a, 0x1b, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x65, 0x63, - 0x61, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x65, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, - 0x73, 0x74, 0x73, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x73, 0x22, 0xbc, - 0x01, 0x0a, 0x25, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, - 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, - 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x55, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, - 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x13, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, - 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0x9c, 0x01, - 0x0a, 0x1e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x22, 0xca, 0x01, 0x0a, 0x29, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3c, - 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, - 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xca, 0x01, 0x0a, - 0x29, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x5f, 0x0a, 0x18, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x52, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x5b, 0x0a, 0x10, 0x54, 0x6f, 0x70, - 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x19, 0x0a, - 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x06, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1e, 0x54, 0x6f, 0x70, 0x69, 0x63, - 0x49, 0x64, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x14, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xa3, - 0x01, 0x0a, 0x1e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x33, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x25, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, - 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x49, 0x64, 0x31, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x69, 0x64, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x49, 0x64, 0x32, 0x12, 0x4b, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x6e, 0x63, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x5c, 0x0a, 0x17, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x52, 0x15, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, - 0x41, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x6e, 0x0a, 0x13, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x5f, + 0x0a, 0x18, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, + 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, + 0x5b, 0x0a, 0x10, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x2c, + 0x0a, 0x06, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, + 0x6e, 0x63, 0x65, 0x73, 0x52, 0x06, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, + 0x1e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x75, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x16, 0x72, 0x65, + 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x14, + 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, + 0x6e, 0x63, 0x65, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x1e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, + 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, + 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x4b, 0x0a, + 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x25, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x41, 0x63, 0x74, + 0x6f, 0x72, 0x49, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x31, 0x12, 0x1b, 0x0a, 0x09, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x32, 0x12, 0x4b, 0x0a, 0x11, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x49, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x63, 0x74, + 0x6f, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x49, 0x64, 0x12, 0x5c, 0x0a, 0x17, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, + 0x64, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x76, 0x31, 0x30, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x41, + 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, + 0x22, 0x6e, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, + 0x22, 0x86, 0x01, 0x0a, 0x1c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, + 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, - 0x52, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x1c, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, - 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x43, - 0x0a, 0x0c, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x20, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x52, - 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, - 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, - 0x63, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x12, 0x52, 0x0a, - 0x14, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x70, 0x75, 0x74, - 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x12, 0x72, - 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x42, 0xc9, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x51, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, - 0x78, 0x2f, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x30, 0x3b, 0x65, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x31, 0x30, 0xa2, 0x02, 0x03, 0x45, 0x58, 0x58, - 0xaa, 0x02, 0x0d, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x31, 0x30, - 0xca, 0x02, 0x0d, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x30, - 0xe2, 0x02, 0x19, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x30, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x45, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x30, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x49, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x20, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x49, 0x64, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x75, + 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, + 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x75, + 0x74, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x52, 0x12, 0x72, 0x65, 0x70, 0x75, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0xc9, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, + 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x30, 0x42, 0x0c, 0x47, + 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x51, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, + 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x61, 0x2d, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x78, 0x2f, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x76, 0x31, 0x30, 0x3b, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x31, 0x30, + 0xa2, 0x02, 0x03, 0x45, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x56, 0x31, 0x30, 0xca, 0x02, 0x0d, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x30, 0xe2, 0x02, 0x19, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x30, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x0e, 0x45, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x3a, + 0x56, 0x31, 0x30, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -35113,178 +35769,180 @@ func file_emissions_v10_genesis_proto_rawDescGZIP() []byte { return file_emissions_v10_genesis_proto_rawDescData } -var file_emissions_v10_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 35) +var file_emissions_v10_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_emissions_v10_genesis_proto_goTypes = []interface{}{ (*GenesisState)(nil), // 0: emissions.v10.GenesisState (*TopicIdAndTopic)(nil), // 1: emissions.v10.TopicIdAndTopic (*TopicAndActorId)(nil), // 2: emissions.v10.TopicAndActorId (*TopicIdAndBlockHeight)(nil), // 3: emissions.v10.TopicIdAndBlockHeight - (*BlockHeightAndTopicIds)(nil), // 4: emissions.v10.BlockHeightAndTopicIds - (*TopicIdBlockHeightScores)(nil), // 5: emissions.v10.TopicIdBlockHeightScores - (*TopicIdActorIdScore)(nil), // 6: emissions.v10.TopicIdActorIdScore - (*TopicIdActorIdUint64)(nil), // 7: emissions.v10.TopicIdActorIdUint64 - (*TopicIdActorIdListeningCoefficient)(nil), // 8: emissions.v10.TopicIdActorIdListeningCoefficient - (*TopicIdActorIdDec)(nil), // 9: emissions.v10.TopicIdActorIdDec - (*TopicIdAndInt)(nil), // 10: emissions.v10.TopicIdAndInt - (*TopicIdActorIdInt)(nil), // 11: emissions.v10.TopicIdActorIdInt - (*TopicIdDelegatorReputerDelegatorInfo)(nil), // 12: emissions.v10.TopicIdDelegatorReputerDelegatorInfo - (*BlockHeightTopicIdReputerStakeRemovalInfo)(nil), // 13: emissions.v10.BlockHeightTopicIdReputerStakeRemovalInfo - (*ActorIdTopicIdBlockHeight)(nil), // 14: emissions.v10.ActorIdTopicIdBlockHeight - (*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo)(nil), // 15: emissions.v10.BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo - (*DelegatorReputerTopicIdBlockHeight)(nil), // 16: emissions.v10.DelegatorReputerTopicIdBlockHeight - (*TopicIdActorIdInference)(nil), // 17: emissions.v10.TopicIdActorIdInference - (*TopicIdActorIdForecast)(nil), // 18: emissions.v10.TopicIdActorIdForecast - (*LibP2PKeyAndOffchainNode)(nil), // 19: emissions.v10.LibP2pKeyAndOffchainNode - (*TopicIdAndDec)(nil), // 20: emissions.v10.TopicIdAndDec - (*TopicIdBlockHeightInferences)(nil), // 21: emissions.v10.TopicIdBlockHeightInferences - (*TopicIdBlockHeightEpochLabelRegistry)(nil), // 22: emissions.v10.TopicIdBlockHeightEpochLabelRegistry - (*TopicIdBlockHeightForecasts)(nil), // 23: emissions.v10.TopicIdBlockHeightForecasts - (*TopicIdBlockHeightReputerValueBundles)(nil), // 24: emissions.v10.TopicIdBlockHeightReputerValueBundles - (*TopicIdBlockHeightValueBundles)(nil), // 25: emissions.v10.TopicIdBlockHeightValueBundles - (*TopicIdBlockHeightNetworkInferenceBundles)(nil), // 26: emissions.v10.TopicIdBlockHeightNetworkInferenceBundles - (*TopicIdAndNonces)(nil), // 27: emissions.v10.TopicIdAndNonces - (*TopicIdAndReputerRequestNonces)(nil), // 28: emissions.v10.TopicIdAndReputerRequestNonces - (*TopicIdActorIdTimeStampedValue)(nil), // 29: emissions.v10.TopicIdActorIdTimeStampedValue - (*TopicIdActorIdActorIdTimeStampedValue)(nil), // 30: emissions.v10.TopicIdActorIdActorIdTimeStampedValue - (*TopicIdTimestampedActorNonce)(nil), // 31: emissions.v10.TopicIdTimestampedActorNonce - (*BlockHeightTopicIds)(nil), // 32: emissions.v10.BlockHeightTopicIds - (*BlockHeightTopicIdWeightPair)(nil), // 33: emissions.v10.BlockHeightTopicIdWeightPair - (*TopicIdReputerReputerValueBundle)(nil), // 34: emissions.v10.TopicIdReputerReputerValueBundle - (*v9.Params)(nil), // 35: emissions.v9.Params - (*Topic)(nil), // 36: emissions.v10.Topic - (*v3.Scores)(nil), // 37: emissions.v3.Scores - (*v3.Score)(nil), // 38: emissions.v3.Score - (*v3.ListeningCoefficient)(nil), // 39: emissions.v3.ListeningCoefficient - (*v3.DelegatorInfo)(nil), // 40: emissions.v3.DelegatorInfo - (*v3.StakeRemovalInfo)(nil), // 41: emissions.v3.StakeRemovalInfo - (*v3.DelegateStakeRemovalInfo)(nil), // 42: emissions.v3.DelegateStakeRemovalInfo - (*Inference)(nil), // 43: emissions.v10.Inference - (*v3.Forecast)(nil), // 44: emissions.v3.Forecast - (*v3.OffchainNode)(nil), // 45: emissions.v3.OffchainNode - (*Inferences)(nil), // 46: emissions.v10.Inferences - (*EpochLabelRegistry)(nil), // 47: emissions.v10.EpochLabelRegistry - (*v3.Forecasts)(nil), // 48: emissions.v3.Forecasts - (*v3.ReputerValueBundles)(nil), // 49: emissions.v3.ReputerValueBundles - (*v3.ValueBundle)(nil), // 50: emissions.v3.ValueBundle - (*NetworkInferenceBundle)(nil), // 51: emissions.v10.NetworkInferenceBundle - (*v3.Nonces)(nil), // 52: emissions.v3.Nonces - (*v3.ReputerRequestNonces)(nil), // 53: emissions.v3.ReputerRequestNonces - (*v3.TimestampedValue)(nil), // 54: emissions.v3.TimestampedValue - (*TimestampedActorNonce)(nil), // 55: emissions.v10.TimestampedActorNonce - (*TopicIds)(nil), // 56: emissions.v10.TopicIds - (*TopicIdWeightPair)(nil), // 57: emissions.v10.TopicIdWeightPair - (*v3.ReputerValueBundle)(nil), // 58: emissions.v3.ReputerValueBundle + (*TopicIdAndEpochNonce)(nil), // 4: emissions.v10.TopicIdAndEpochNonce + (*BlockHeightAndTopicIds)(nil), // 5: emissions.v10.BlockHeightAndTopicIds + (*TopicIdBlockHeightScores)(nil), // 6: emissions.v10.TopicIdBlockHeightScores + (*TopicIdActorIdScore)(nil), // 7: emissions.v10.TopicIdActorIdScore + (*TopicIdActorIdUint64)(nil), // 8: emissions.v10.TopicIdActorIdUint64 + (*TopicIdActorIdListeningCoefficient)(nil), // 9: emissions.v10.TopicIdActorIdListeningCoefficient + (*TopicIdActorIdDec)(nil), // 10: emissions.v10.TopicIdActorIdDec + (*TopicIdAndInt)(nil), // 11: emissions.v10.TopicIdAndInt + (*TopicIdActorIdInt)(nil), // 12: emissions.v10.TopicIdActorIdInt + (*TopicIdDelegatorReputerDelegatorInfo)(nil), // 13: emissions.v10.TopicIdDelegatorReputerDelegatorInfo + (*BlockHeightTopicIdReputerStakeRemovalInfo)(nil), // 14: emissions.v10.BlockHeightTopicIdReputerStakeRemovalInfo + (*ActorIdTopicIdBlockHeight)(nil), // 15: emissions.v10.ActorIdTopicIdBlockHeight + (*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo)(nil), // 16: emissions.v10.BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo + (*DelegatorReputerTopicIdBlockHeight)(nil), // 17: emissions.v10.DelegatorReputerTopicIdBlockHeight + (*TopicIdActorIdInference)(nil), // 18: emissions.v10.TopicIdActorIdInference + (*TopicIdActorIdForecast)(nil), // 19: emissions.v10.TopicIdActorIdForecast + (*LibP2PKeyAndOffchainNode)(nil), // 20: emissions.v10.LibP2pKeyAndOffchainNode + (*TopicIdAndDec)(nil), // 21: emissions.v10.TopicIdAndDec + (*TopicIdBlockHeightInferences)(nil), // 22: emissions.v10.TopicIdBlockHeightInferences + (*TopicIdBlockHeightEpochLabelRegistry)(nil), // 23: emissions.v10.TopicIdBlockHeightEpochLabelRegistry + (*TopicIdBlockHeightForecasts)(nil), // 24: emissions.v10.TopicIdBlockHeightForecasts + (*TopicIdBlockHeightReputerValueBundles)(nil), // 25: emissions.v10.TopicIdBlockHeightReputerValueBundles + (*TopicIdBlockHeightValueBundles)(nil), // 26: emissions.v10.TopicIdBlockHeightValueBundles + (*TopicIdBlockHeightNetworkInferenceBundles)(nil), // 27: emissions.v10.TopicIdBlockHeightNetworkInferenceBundles + (*TopicIdAndNonces)(nil), // 28: emissions.v10.TopicIdAndNonces + (*TopicIdAndReputerRequestNonces)(nil), // 29: emissions.v10.TopicIdAndReputerRequestNonces + (*TopicIdActorIdTimeStampedValue)(nil), // 30: emissions.v10.TopicIdActorIdTimeStampedValue + (*TopicIdActorIdActorIdTimeStampedValue)(nil), // 31: emissions.v10.TopicIdActorIdActorIdTimeStampedValue + (*TopicIdTimestampedActorNonce)(nil), // 32: emissions.v10.TopicIdTimestampedActorNonce + (*BlockHeightTopicIds)(nil), // 33: emissions.v10.BlockHeightTopicIds + (*BlockHeightTopicIdWeightPair)(nil), // 34: emissions.v10.BlockHeightTopicIdWeightPair + (*TopicIdReputerReputerValueBundle)(nil), // 35: emissions.v10.TopicIdReputerReputerValueBundle + (*v9.Params)(nil), // 36: emissions.v9.Params + (*Topic)(nil), // 37: emissions.v10.Topic + (*v3.Scores)(nil), // 38: emissions.v3.Scores + (*v3.Score)(nil), // 39: emissions.v3.Score + (*v3.ListeningCoefficient)(nil), // 40: emissions.v3.ListeningCoefficient + (*v3.DelegatorInfo)(nil), // 41: emissions.v3.DelegatorInfo + (*v3.StakeRemovalInfo)(nil), // 42: emissions.v3.StakeRemovalInfo + (*v3.DelegateStakeRemovalInfo)(nil), // 43: emissions.v3.DelegateStakeRemovalInfo + (*Inference)(nil), // 44: emissions.v10.Inference + (*v3.Forecast)(nil), // 45: emissions.v3.Forecast + (*v3.OffchainNode)(nil), // 46: emissions.v3.OffchainNode + (*Inferences)(nil), // 47: emissions.v10.Inferences + (*EpochLabelRegistry)(nil), // 48: emissions.v10.EpochLabelRegistry + (*v3.Forecasts)(nil), // 49: emissions.v3.Forecasts + (*v3.ReputerValueBundles)(nil), // 50: emissions.v3.ReputerValueBundles + (*v3.ValueBundle)(nil), // 51: emissions.v3.ValueBundle + (*NetworkInferenceBundle)(nil), // 52: emissions.v10.NetworkInferenceBundle + (*v3.Nonces)(nil), // 53: emissions.v3.Nonces + (*v3.ReputerRequestNonces)(nil), // 54: emissions.v3.ReputerRequestNonces + (*v3.TimestampedValue)(nil), // 55: emissions.v3.TimestampedValue + (*TimestampedActorNonce)(nil), // 56: emissions.v10.TimestampedActorNonce + (*TopicIds)(nil), // 57: emissions.v10.TopicIds + (*TopicIdWeightPair)(nil), // 58: emissions.v10.TopicIdWeightPair + (*v3.ReputerValueBundle)(nil), // 59: emissions.v3.ReputerValueBundle } var file_emissions_v10_genesis_proto_depIdxs = []int32{ - 35, // 0: emissions.v10.GenesisState.params:type_name -> emissions.v9.Params + 36, // 0: emissions.v10.GenesisState.params:type_name -> emissions.v9.Params 1, // 1: emissions.v10.GenesisState.topics:type_name -> emissions.v10.TopicIdAndTopic 2, // 2: emissions.v10.GenesisState.topic_workers:type_name -> emissions.v10.TopicAndActorId 2, // 3: emissions.v10.GenesisState.topic_reputers:type_name -> emissions.v10.TopicAndActorId 3, // 4: emissions.v10.GenesisState.topic_reward_nonce:type_name -> emissions.v10.TopicIdAndBlockHeight - 5, // 5: emissions.v10.GenesisState.inferer_scores_by_block:type_name -> emissions.v10.TopicIdBlockHeightScores - 5, // 6: emissions.v10.GenesisState.forecaster_scores_by_block:type_name -> emissions.v10.TopicIdBlockHeightScores - 5, // 7: emissions.v10.GenesisState.reputer_scores_by_block:type_name -> emissions.v10.TopicIdBlockHeightScores - 8, // 8: emissions.v10.GenesisState.reputer_listening_coefficient:type_name -> emissions.v10.TopicIdActorIdListeningCoefficient - 9, // 9: emissions.v10.GenesisState.previous_reputer_reward_fraction:type_name -> emissions.v10.TopicIdActorIdDec - 9, // 10: emissions.v10.GenesisState.previous_inference_reward_fraction:type_name -> emissions.v10.TopicIdActorIdDec - 9, // 11: emissions.v10.GenesisState.previous_forecast_reward_fraction:type_name -> emissions.v10.TopicIdActorIdDec - 20, // 12: emissions.v10.GenesisState.previous_forecaster_score_ratio:type_name -> emissions.v10.TopicIdAndDec - 10, // 13: emissions.v10.GenesisState.topic_stake:type_name -> emissions.v10.TopicIdAndInt - 11, // 14: emissions.v10.GenesisState.stake_reputer_authority:type_name -> emissions.v10.TopicIdActorIdInt - 11, // 15: emissions.v10.GenesisState.stake_sum_from_delegator:type_name -> emissions.v10.TopicIdActorIdInt - 12, // 16: emissions.v10.GenesisState.delegated_stakes:type_name -> emissions.v10.TopicIdDelegatorReputerDelegatorInfo - 11, // 17: emissions.v10.GenesisState.stake_from_delegators_upon_reputer:type_name -> emissions.v10.TopicIdActorIdInt - 9, // 18: emissions.v10.GenesisState.delegate_reward_per_share:type_name -> emissions.v10.TopicIdActorIdDec - 13, // 19: emissions.v10.GenesisState.stake_removals_by_block:type_name -> emissions.v10.BlockHeightTopicIdReputerStakeRemovalInfo - 14, // 20: emissions.v10.GenesisState.stake_removals_by_actor:type_name -> emissions.v10.ActorIdTopicIdBlockHeight - 15, // 21: emissions.v10.GenesisState.delegate_stake_removals_by_block:type_name -> emissions.v10.BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo - 16, // 22: emissions.v10.GenesisState.delegate_stake_removals_by_actor:type_name -> emissions.v10.DelegatorReputerTopicIdBlockHeight - 17, // 23: emissions.v10.GenesisState.inferences:type_name -> emissions.v10.TopicIdActorIdInference - 18, // 24: emissions.v10.GenesisState.forecasts:type_name -> emissions.v10.TopicIdActorIdForecast - 19, // 25: emissions.v10.GenesisState.workers:type_name -> emissions.v10.LibP2pKeyAndOffchainNode - 19, // 26: emissions.v10.GenesisState.reputers:type_name -> emissions.v10.LibP2pKeyAndOffchainNode - 10, // 27: emissions.v10.GenesisState.topic_fee_revenue:type_name -> emissions.v10.TopicIdAndInt - 20, // 28: emissions.v10.GenesisState.previous_topic_weight:type_name -> emissions.v10.TopicIdAndDec - 21, // 29: emissions.v10.GenesisState.all_inferences:type_name -> emissions.v10.TopicIdBlockHeightInferences - 23, // 30: emissions.v10.GenesisState.all_forecasts:type_name -> emissions.v10.TopicIdBlockHeightForecasts - 24, // 31: emissions.v10.GenesisState.all_loss_bundles:type_name -> emissions.v10.TopicIdBlockHeightReputerValueBundles - 25, // 32: emissions.v10.GenesisState.network_loss_bundles:type_name -> emissions.v10.TopicIdBlockHeightValueBundles - 27, // 33: emissions.v10.GenesisState.unfulfilled_worker_nonces:type_name -> emissions.v10.TopicIdAndNonces - 28, // 34: emissions.v10.GenesisState.unfulfilled_reputer_nonces:type_name -> emissions.v10.TopicIdAndReputerRequestNonces - 29, // 35: emissions.v10.GenesisState.latest_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdTimeStampedValue - 29, // 36: emissions.v10.GenesisState.latest_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdTimeStampedValue - 30, // 37: emissions.v10.GenesisState.latest_one_in_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue - 29, // 38: emissions.v10.GenesisState.latest_naive_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdTimeStampedValue - 30, // 39: emissions.v10.GenesisState.latest_one_out_inferer_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue - 30, // 40: emissions.v10.GenesisState.latest_one_out_inferer_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue - 30, // 41: emissions.v10.GenesisState.latest_one_out_forecaster_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue - 30, // 42: emissions.v10.GenesisState.latest_one_out_forecaster_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue - 31, // 43: emissions.v10.GenesisState.topic_last_worker_commit:type_name -> emissions.v10.TopicIdTimestampedActorNonce - 31, // 44: emissions.v10.GenesisState.topic_last_reputer_commit:type_name -> emissions.v10.TopicIdTimestampedActorNonce - 4, // 45: emissions.v10.GenesisState.open_worker_windows:type_name -> emissions.v10.BlockHeightAndTopicIds + 6, // 5: emissions.v10.GenesisState.inferer_scores_by_block:type_name -> emissions.v10.TopicIdBlockHeightScores + 6, // 6: emissions.v10.GenesisState.forecaster_scores_by_block:type_name -> emissions.v10.TopicIdBlockHeightScores + 6, // 7: emissions.v10.GenesisState.reputer_scores_by_block:type_name -> emissions.v10.TopicIdBlockHeightScores + 9, // 8: emissions.v10.GenesisState.reputer_listening_coefficient:type_name -> emissions.v10.TopicIdActorIdListeningCoefficient + 10, // 9: emissions.v10.GenesisState.previous_reputer_reward_fraction:type_name -> emissions.v10.TopicIdActorIdDec + 10, // 10: emissions.v10.GenesisState.previous_inference_reward_fraction:type_name -> emissions.v10.TopicIdActorIdDec + 10, // 11: emissions.v10.GenesisState.previous_forecast_reward_fraction:type_name -> emissions.v10.TopicIdActorIdDec + 21, // 12: emissions.v10.GenesisState.previous_forecaster_score_ratio:type_name -> emissions.v10.TopicIdAndDec + 11, // 13: emissions.v10.GenesisState.topic_stake:type_name -> emissions.v10.TopicIdAndInt + 12, // 14: emissions.v10.GenesisState.stake_reputer_authority:type_name -> emissions.v10.TopicIdActorIdInt + 12, // 15: emissions.v10.GenesisState.stake_sum_from_delegator:type_name -> emissions.v10.TopicIdActorIdInt + 13, // 16: emissions.v10.GenesisState.delegated_stakes:type_name -> emissions.v10.TopicIdDelegatorReputerDelegatorInfo + 12, // 17: emissions.v10.GenesisState.stake_from_delegators_upon_reputer:type_name -> emissions.v10.TopicIdActorIdInt + 10, // 18: emissions.v10.GenesisState.delegate_reward_per_share:type_name -> emissions.v10.TopicIdActorIdDec + 14, // 19: emissions.v10.GenesisState.stake_removals_by_block:type_name -> emissions.v10.BlockHeightTopicIdReputerStakeRemovalInfo + 15, // 20: emissions.v10.GenesisState.stake_removals_by_actor:type_name -> emissions.v10.ActorIdTopicIdBlockHeight + 16, // 21: emissions.v10.GenesisState.delegate_stake_removals_by_block:type_name -> emissions.v10.BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo + 17, // 22: emissions.v10.GenesisState.delegate_stake_removals_by_actor:type_name -> emissions.v10.DelegatorReputerTopicIdBlockHeight + 18, // 23: emissions.v10.GenesisState.inferences:type_name -> emissions.v10.TopicIdActorIdInference + 19, // 24: emissions.v10.GenesisState.forecasts:type_name -> emissions.v10.TopicIdActorIdForecast + 20, // 25: emissions.v10.GenesisState.workers:type_name -> emissions.v10.LibP2pKeyAndOffchainNode + 20, // 26: emissions.v10.GenesisState.reputers:type_name -> emissions.v10.LibP2pKeyAndOffchainNode + 11, // 27: emissions.v10.GenesisState.topic_fee_revenue:type_name -> emissions.v10.TopicIdAndInt + 21, // 28: emissions.v10.GenesisState.previous_topic_weight:type_name -> emissions.v10.TopicIdAndDec + 22, // 29: emissions.v10.GenesisState.all_inferences:type_name -> emissions.v10.TopicIdBlockHeightInferences + 24, // 30: emissions.v10.GenesisState.all_forecasts:type_name -> emissions.v10.TopicIdBlockHeightForecasts + 25, // 31: emissions.v10.GenesisState.all_loss_bundles:type_name -> emissions.v10.TopicIdBlockHeightReputerValueBundles + 26, // 32: emissions.v10.GenesisState.network_loss_bundles:type_name -> emissions.v10.TopicIdBlockHeightValueBundles + 28, // 33: emissions.v10.GenesisState.unfulfilled_worker_nonces:type_name -> emissions.v10.TopicIdAndNonces + 29, // 34: emissions.v10.GenesisState.unfulfilled_reputer_nonces:type_name -> emissions.v10.TopicIdAndReputerRequestNonces + 30, // 35: emissions.v10.GenesisState.latest_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdTimeStampedValue + 30, // 36: emissions.v10.GenesisState.latest_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdTimeStampedValue + 31, // 37: emissions.v10.GenesisState.latest_one_in_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue + 30, // 38: emissions.v10.GenesisState.latest_naive_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdTimeStampedValue + 31, // 39: emissions.v10.GenesisState.latest_one_out_inferer_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue + 31, // 40: emissions.v10.GenesisState.latest_one_out_inferer_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue + 31, // 41: emissions.v10.GenesisState.latest_one_out_forecaster_inferer_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue + 31, // 42: emissions.v10.GenesisState.latest_one_out_forecaster_forecaster_network_regrets:type_name -> emissions.v10.TopicIdActorIdActorIdTimeStampedValue + 32, // 43: emissions.v10.GenesisState.topic_last_worker_commit:type_name -> emissions.v10.TopicIdTimestampedActorNonce + 32, // 44: emissions.v10.GenesisState.topic_last_reputer_commit:type_name -> emissions.v10.TopicIdTimestampedActorNonce + 5, // 45: emissions.v10.GenesisState.open_worker_windows:type_name -> emissions.v10.BlockHeightAndTopicIds 3, // 46: emissions.v10.GenesisState.last_drip_block:type_name -> emissions.v10.TopicIdAndBlockHeight 3, // 47: emissions.v10.GenesisState.topic_to_next_possible_churning_block:type_name -> emissions.v10.TopicIdAndBlockHeight - 32, // 48: emissions.v10.GenesisState.block_to_active_topics:type_name -> emissions.v10.BlockHeightTopicIds - 33, // 49: emissions.v10.GenesisState.block_to_lowest_active_topic_weight:type_name -> emissions.v10.BlockHeightTopicIdWeightPair - 6, // 50: emissions.v10.GenesisState.inferer_score_emas:type_name -> emissions.v10.TopicIdActorIdScore - 6, // 51: emissions.v10.GenesisState.forecaster_score_emas:type_name -> emissions.v10.TopicIdActorIdScore - 6, // 52: emissions.v10.GenesisState.reputer_score_emas:type_name -> emissions.v10.TopicIdActorIdScore - 20, // 53: emissions.v10.GenesisState.previous_topic_quantile_inferer_score_ema:type_name -> emissions.v10.TopicIdAndDec - 20, // 54: emissions.v10.GenesisState.previous_topic_quantile_forecaster_score_ema:type_name -> emissions.v10.TopicIdAndDec - 20, // 55: emissions.v10.GenesisState.previous_topic_quantile_reputer_score_ema:type_name -> emissions.v10.TopicIdAndDec - 7, // 56: emissions.v10.GenesisState.count_inferer_inclusions_in_topic_active_set:type_name -> emissions.v10.TopicIdActorIdUint64 - 7, // 57: emissions.v10.GenesisState.count_forecaster_inclusions_in_topic_active_set:type_name -> emissions.v10.TopicIdActorIdUint64 + 33, // 48: emissions.v10.GenesisState.block_to_active_topics:type_name -> emissions.v10.BlockHeightTopicIds + 34, // 49: emissions.v10.GenesisState.block_to_lowest_active_topic_weight:type_name -> emissions.v10.BlockHeightTopicIdWeightPair + 7, // 50: emissions.v10.GenesisState.inferer_score_emas:type_name -> emissions.v10.TopicIdActorIdScore + 7, // 51: emissions.v10.GenesisState.forecaster_score_emas:type_name -> emissions.v10.TopicIdActorIdScore + 7, // 52: emissions.v10.GenesisState.reputer_score_emas:type_name -> emissions.v10.TopicIdActorIdScore + 21, // 53: emissions.v10.GenesisState.previous_topic_quantile_inferer_score_ema:type_name -> emissions.v10.TopicIdAndDec + 21, // 54: emissions.v10.GenesisState.previous_topic_quantile_forecaster_score_ema:type_name -> emissions.v10.TopicIdAndDec + 21, // 55: emissions.v10.GenesisState.previous_topic_quantile_reputer_score_ema:type_name -> emissions.v10.TopicIdAndDec + 8, // 56: emissions.v10.GenesisState.count_inferer_inclusions_in_topic_active_set:type_name -> emissions.v10.TopicIdActorIdUint64 + 8, // 57: emissions.v10.GenesisState.count_forecaster_inclusions_in_topic_active_set:type_name -> emissions.v10.TopicIdActorIdUint64 2, // 58: emissions.v10.GenesisState.active_inferers:type_name -> emissions.v10.TopicAndActorId 2, // 59: emissions.v10.GenesisState.active_forecasters:type_name -> emissions.v10.TopicAndActorId - 6, // 60: emissions.v10.GenesisState.lowest_inferer_score_ema:type_name -> emissions.v10.TopicIdActorIdScore - 6, // 61: emissions.v10.GenesisState.lowest_forecaster_score_ema:type_name -> emissions.v10.TopicIdActorIdScore + 7, // 60: emissions.v10.GenesisState.lowest_inferer_score_ema:type_name -> emissions.v10.TopicIdActorIdScore + 7, // 61: emissions.v10.GenesisState.lowest_forecaster_score_ema:type_name -> emissions.v10.TopicIdActorIdScore 2, // 62: emissions.v10.GenesisState.active_reputers:type_name -> emissions.v10.TopicAndActorId - 6, // 63: emissions.v10.GenesisState.lowest_reputer_score_ema:type_name -> emissions.v10.TopicIdActorIdScore - 34, // 64: emissions.v10.GenesisState.loss_bundles:type_name -> emissions.v10.TopicIdReputerReputerValueBundle + 7, // 63: emissions.v10.GenesisState.lowest_reputer_score_ema:type_name -> emissions.v10.TopicIdActorIdScore + 35, // 64: emissions.v10.GenesisState.loss_bundles:type_name -> emissions.v10.TopicIdReputerReputerValueBundle 2, // 65: emissions.v10.GenesisState.topic_worker_whitelist:type_name -> emissions.v10.TopicAndActorId 2, // 66: emissions.v10.GenesisState.topic_reputer_whitelist:type_name -> emissions.v10.TopicAndActorId - 20, // 67: emissions.v10.GenesisState.last_median_inferences:type_name -> emissions.v10.TopicIdAndDec - 20, // 68: emissions.v10.GenesisState.mad_inferences:type_name -> emissions.v10.TopicIdAndDec - 20, // 69: emissions.v10.GenesisState.initial_inferer_ema_score:type_name -> emissions.v10.TopicIdAndDec - 20, // 70: emissions.v10.GenesisState.initial_forecaster_ema_score:type_name -> emissions.v10.TopicIdAndDec - 20, // 71: emissions.v10.GenesisState.initial_reputer_ema_score:type_name -> emissions.v10.TopicIdAndDec - 20, // 72: emissions.v10.GenesisState.latest_regret_std_norm:type_name -> emissions.v10.TopicIdAndDec - 9, // 73: emissions.v10.GenesisState.latest_inferer_weights:type_name -> emissions.v10.TopicIdActorIdDec - 9, // 74: emissions.v10.GenesisState.latest_forecaster_weights:type_name -> emissions.v10.TopicIdActorIdDec - 25, // 75: emissions.v10.GenesisState.network_inferences:type_name -> emissions.v10.TopicIdBlockHeightValueBundles - 25, // 76: emissions.v10.GenesisState.outlier_resistant_network_inferences:type_name -> emissions.v10.TopicIdBlockHeightValueBundles - 26, // 77: emissions.v10.GenesisState.network_inference_bundle:type_name -> emissions.v10.TopicIdBlockHeightNetworkInferenceBundles - 26, // 78: emissions.v10.GenesisState.outlier_resistant_network_inference_bundle:type_name -> emissions.v10.TopicIdBlockHeightNetworkInferenceBundles - 22, // 79: emissions.v10.GenesisState.topic_label_registries:type_name -> emissions.v10.TopicIdBlockHeightEpochLabelRegistry - 36, // 80: emissions.v10.TopicIdAndTopic.topic:type_name -> emissions.v10.Topic - 37, // 81: emissions.v10.TopicIdBlockHeightScores.scores:type_name -> emissions.v3.Scores - 38, // 82: emissions.v10.TopicIdActorIdScore.score:type_name -> emissions.v3.Score - 39, // 83: emissions.v10.TopicIdActorIdListeningCoefficient.listening_coefficient:type_name -> emissions.v3.ListeningCoefficient - 40, // 84: emissions.v10.TopicIdDelegatorReputerDelegatorInfo.delegator_info:type_name -> emissions.v3.DelegatorInfo - 41, // 85: emissions.v10.BlockHeightTopicIdReputerStakeRemovalInfo.stake_removal_info:type_name -> emissions.v3.StakeRemovalInfo - 42, // 86: emissions.v10.BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo.delegate_stake_removal_info:type_name -> emissions.v3.DelegateStakeRemovalInfo - 43, // 87: emissions.v10.TopicIdActorIdInference.inference:type_name -> emissions.v10.Inference - 44, // 88: emissions.v10.TopicIdActorIdForecast.forecast:type_name -> emissions.v3.Forecast - 45, // 89: emissions.v10.LibP2pKeyAndOffchainNode.offchain_node:type_name -> emissions.v3.OffchainNode - 46, // 90: emissions.v10.TopicIdBlockHeightInferences.inferences:type_name -> emissions.v10.Inferences - 47, // 91: emissions.v10.TopicIdBlockHeightEpochLabelRegistry.epoch_label_registry:type_name -> emissions.v10.EpochLabelRegistry - 48, // 92: emissions.v10.TopicIdBlockHeightForecasts.forecasts:type_name -> emissions.v3.Forecasts - 49, // 93: emissions.v10.TopicIdBlockHeightReputerValueBundles.reputer_value_bundles:type_name -> emissions.v3.ReputerValueBundles - 50, // 94: emissions.v10.TopicIdBlockHeightValueBundles.value_bundle:type_name -> emissions.v3.ValueBundle - 51, // 95: emissions.v10.TopicIdBlockHeightNetworkInferenceBundles.network_inference_bundle:type_name -> emissions.v10.NetworkInferenceBundle - 52, // 96: emissions.v10.TopicIdAndNonces.nonces:type_name -> emissions.v3.Nonces - 53, // 97: emissions.v10.TopicIdAndReputerRequestNonces.reputer_request_nonces:type_name -> emissions.v3.ReputerRequestNonces - 54, // 98: emissions.v10.TopicIdActorIdTimeStampedValue.timestamped_value:type_name -> emissions.v3.TimestampedValue - 54, // 99: emissions.v10.TopicIdActorIdActorIdTimeStampedValue.timestamped_value:type_name -> emissions.v3.TimestampedValue - 55, // 100: emissions.v10.TopicIdTimestampedActorNonce.timestamped_actor_nonce:type_name -> emissions.v10.TimestampedActorNonce - 56, // 101: emissions.v10.BlockHeightTopicIds.topic_ids:type_name -> emissions.v10.TopicIds - 57, // 102: emissions.v10.BlockHeightTopicIdWeightPair.topic_weight:type_name -> emissions.v10.TopicIdWeightPair - 58, // 103: emissions.v10.TopicIdReputerReputerValueBundle.reputer_value_bundle:type_name -> emissions.v3.ReputerValueBundle - 104, // [104:104] is the sub-list for method output_type - 104, // [104:104] is the sub-list for method input_type - 104, // [104:104] is the sub-list for extension type_name - 104, // [104:104] is the sub-list for extension extendee - 0, // [0:104] is the sub-list for field type_name + 21, // 67: emissions.v10.GenesisState.last_median_inferences:type_name -> emissions.v10.TopicIdAndDec + 21, // 68: emissions.v10.GenesisState.mad_inferences:type_name -> emissions.v10.TopicIdAndDec + 21, // 69: emissions.v10.GenesisState.initial_inferer_ema_score:type_name -> emissions.v10.TopicIdAndDec + 21, // 70: emissions.v10.GenesisState.initial_forecaster_ema_score:type_name -> emissions.v10.TopicIdAndDec + 21, // 71: emissions.v10.GenesisState.initial_reputer_ema_score:type_name -> emissions.v10.TopicIdAndDec + 21, // 72: emissions.v10.GenesisState.latest_regret_std_norm:type_name -> emissions.v10.TopicIdAndDec + 10, // 73: emissions.v10.GenesisState.latest_inferer_weights:type_name -> emissions.v10.TopicIdActorIdDec + 10, // 74: emissions.v10.GenesisState.latest_forecaster_weights:type_name -> emissions.v10.TopicIdActorIdDec + 26, // 75: emissions.v10.GenesisState.network_inferences:type_name -> emissions.v10.TopicIdBlockHeightValueBundles + 26, // 76: emissions.v10.GenesisState.outlier_resistant_network_inferences:type_name -> emissions.v10.TopicIdBlockHeightValueBundles + 27, // 77: emissions.v10.GenesisState.network_inference_bundle:type_name -> emissions.v10.TopicIdBlockHeightNetworkInferenceBundles + 27, // 78: emissions.v10.GenesisState.outlier_resistant_network_inference_bundle:type_name -> emissions.v10.TopicIdBlockHeightNetworkInferenceBundles + 23, // 79: emissions.v10.GenesisState.topic_label_registries:type_name -> emissions.v10.TopicIdBlockHeightEpochLabelRegistry + 4, // 80: emissions.v10.GenesisState.topic_last_epoch_nonces:type_name -> emissions.v10.TopicIdAndEpochNonce + 37, // 81: emissions.v10.TopicIdAndTopic.topic:type_name -> emissions.v10.Topic + 38, // 82: emissions.v10.TopicIdBlockHeightScores.scores:type_name -> emissions.v3.Scores + 39, // 83: emissions.v10.TopicIdActorIdScore.score:type_name -> emissions.v3.Score + 40, // 84: emissions.v10.TopicIdActorIdListeningCoefficient.listening_coefficient:type_name -> emissions.v3.ListeningCoefficient + 41, // 85: emissions.v10.TopicIdDelegatorReputerDelegatorInfo.delegator_info:type_name -> emissions.v3.DelegatorInfo + 42, // 86: emissions.v10.BlockHeightTopicIdReputerStakeRemovalInfo.stake_removal_info:type_name -> emissions.v3.StakeRemovalInfo + 43, // 87: emissions.v10.BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo.delegate_stake_removal_info:type_name -> emissions.v3.DelegateStakeRemovalInfo + 44, // 88: emissions.v10.TopicIdActorIdInference.inference:type_name -> emissions.v10.Inference + 45, // 89: emissions.v10.TopicIdActorIdForecast.forecast:type_name -> emissions.v3.Forecast + 46, // 90: emissions.v10.LibP2pKeyAndOffchainNode.offchain_node:type_name -> emissions.v3.OffchainNode + 47, // 91: emissions.v10.TopicIdBlockHeightInferences.inferences:type_name -> emissions.v10.Inferences + 48, // 92: emissions.v10.TopicIdBlockHeightEpochLabelRegistry.epoch_label_registry:type_name -> emissions.v10.EpochLabelRegistry + 49, // 93: emissions.v10.TopicIdBlockHeightForecasts.forecasts:type_name -> emissions.v3.Forecasts + 50, // 94: emissions.v10.TopicIdBlockHeightReputerValueBundles.reputer_value_bundles:type_name -> emissions.v3.ReputerValueBundles + 51, // 95: emissions.v10.TopicIdBlockHeightValueBundles.value_bundle:type_name -> emissions.v3.ValueBundle + 52, // 96: emissions.v10.TopicIdBlockHeightNetworkInferenceBundles.network_inference_bundle:type_name -> emissions.v10.NetworkInferenceBundle + 53, // 97: emissions.v10.TopicIdAndNonces.nonces:type_name -> emissions.v3.Nonces + 54, // 98: emissions.v10.TopicIdAndReputerRequestNonces.reputer_request_nonces:type_name -> emissions.v3.ReputerRequestNonces + 55, // 99: emissions.v10.TopicIdActorIdTimeStampedValue.timestamped_value:type_name -> emissions.v3.TimestampedValue + 55, // 100: emissions.v10.TopicIdActorIdActorIdTimeStampedValue.timestamped_value:type_name -> emissions.v3.TimestampedValue + 56, // 101: emissions.v10.TopicIdTimestampedActorNonce.timestamped_actor_nonce:type_name -> emissions.v10.TimestampedActorNonce + 57, // 102: emissions.v10.BlockHeightTopicIds.topic_ids:type_name -> emissions.v10.TopicIds + 58, // 103: emissions.v10.BlockHeightTopicIdWeightPair.topic_weight:type_name -> emissions.v10.TopicIdWeightPair + 59, // 104: emissions.v10.TopicIdReputerReputerValueBundle.reputer_value_bundle:type_name -> emissions.v3.ReputerValueBundle + 105, // [105:105] is the sub-list for method output_type + 105, // [105:105] is the sub-list for method input_type + 105, // [105:105] is the sub-list for extension type_name + 105, // [105:105] is the sub-list for extension extendee + 0, // [0:105] is the sub-list for field type_name } func init() { file_emissions_v10_genesis_proto_init() } @@ -35345,7 +36003,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockHeightAndTopicIds); i { + switch v := v.(*TopicIdAndEpochNonce); i { case 0: return &v.state case 1: @@ -35357,7 +36015,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightScores); i { + switch v := v.(*BlockHeightAndTopicIds); i { case 0: return &v.state case 1: @@ -35369,7 +36027,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdScore); i { + switch v := v.(*TopicIdBlockHeightScores); i { case 0: return &v.state case 1: @@ -35381,7 +36039,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdUint64); i { + switch v := v.(*TopicIdActorIdScore); i { case 0: return &v.state case 1: @@ -35393,7 +36051,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdListeningCoefficient); i { + switch v := v.(*TopicIdActorIdUint64); i { case 0: return &v.state case 1: @@ -35405,7 +36063,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdDec); i { + switch v := v.(*TopicIdActorIdListeningCoefficient); i { case 0: return &v.state case 1: @@ -35417,7 +36075,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdAndInt); i { + switch v := v.(*TopicIdActorIdDec); i { case 0: return &v.state case 1: @@ -35429,7 +36087,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdInt); i { + switch v := v.(*TopicIdAndInt); i { case 0: return &v.state case 1: @@ -35441,7 +36099,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdDelegatorReputerDelegatorInfo); i { + switch v := v.(*TopicIdActorIdInt); i { case 0: return &v.state case 1: @@ -35453,7 +36111,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockHeightTopicIdReputerStakeRemovalInfo); i { + switch v := v.(*TopicIdDelegatorReputerDelegatorInfo); i { case 0: return &v.state case 1: @@ -35465,7 +36123,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActorIdTopicIdBlockHeight); i { + switch v := v.(*BlockHeightTopicIdReputerStakeRemovalInfo); i { case 0: return &v.state case 1: @@ -35477,7 +36135,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo); i { + switch v := v.(*ActorIdTopicIdBlockHeight); i { case 0: return &v.state case 1: @@ -35489,7 +36147,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelegatorReputerTopicIdBlockHeight); i { + switch v := v.(*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo); i { case 0: return &v.state case 1: @@ -35501,7 +36159,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdInference); i { + switch v := v.(*DelegatorReputerTopicIdBlockHeight); i { case 0: return &v.state case 1: @@ -35513,7 +36171,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdForecast); i { + switch v := v.(*TopicIdActorIdInference); i { case 0: return &v.state case 1: @@ -35525,7 +36183,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LibP2PKeyAndOffchainNode); i { + switch v := v.(*TopicIdActorIdForecast); i { case 0: return &v.state case 1: @@ -35537,7 +36195,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdAndDec); i { + switch v := v.(*LibP2PKeyAndOffchainNode); i { case 0: return &v.state case 1: @@ -35549,7 +36207,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightInferences); i { + switch v := v.(*TopicIdAndDec); i { case 0: return &v.state case 1: @@ -35561,7 +36219,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightEpochLabelRegistry); i { + switch v := v.(*TopicIdBlockHeightInferences); i { case 0: return &v.state case 1: @@ -35573,7 +36231,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightForecasts); i { + switch v := v.(*TopicIdBlockHeightEpochLabelRegistry); i { case 0: return &v.state case 1: @@ -35585,7 +36243,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightReputerValueBundles); i { + switch v := v.(*TopicIdBlockHeightForecasts); i { case 0: return &v.state case 1: @@ -35597,7 +36255,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightValueBundles); i { + switch v := v.(*TopicIdBlockHeightReputerValueBundles); i { case 0: return &v.state case 1: @@ -35609,7 +36267,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdBlockHeightNetworkInferenceBundles); i { + switch v := v.(*TopicIdBlockHeightValueBundles); i { case 0: return &v.state case 1: @@ -35621,7 +36279,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdAndNonces); i { + switch v := v.(*TopicIdBlockHeightNetworkInferenceBundles); i { case 0: return &v.state case 1: @@ -35633,7 +36291,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdAndReputerRequestNonces); i { + switch v := v.(*TopicIdAndNonces); i { case 0: return &v.state case 1: @@ -35645,7 +36303,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdTimeStampedValue); i { + switch v := v.(*TopicIdAndReputerRequestNonces); i { case 0: return &v.state case 1: @@ -35657,7 +36315,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdActorIdActorIdTimeStampedValue); i { + switch v := v.(*TopicIdActorIdTimeStampedValue); i { case 0: return &v.state case 1: @@ -35669,7 +36327,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopicIdTimestampedActorNonce); i { + switch v := v.(*TopicIdActorIdActorIdTimeStampedValue); i { case 0: return &v.state case 1: @@ -35681,7 +36339,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockHeightTopicIds); i { + switch v := v.(*TopicIdTimestampedActorNonce); i { case 0: return &v.state case 1: @@ -35693,7 +36351,7 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockHeightTopicIdWeightPair); i { + switch v := v.(*BlockHeightTopicIds); i { case 0: return &v.state case 1: @@ -35705,6 +36363,18 @@ func file_emissions_v10_genesis_proto_init() { } } file_emissions_v10_genesis_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlockHeightTopicIdWeightPair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_emissions_v10_genesis_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopicIdReputerReputerValueBundle); i { case 0: return &v.state @@ -35723,7 +36393,7 @@ func file_emissions_v10_genesis_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_emissions_v10_genesis_proto_rawDesc, NumEnums: 0, - NumMessages: 35, + NumMessages: 36, NumExtensions: 0, NumServices: 0, }, diff --git a/x/emissions/keeper/epoch.go b/x/emissions/keeper/epoch.go index f41c1e867..91b81a087 100644 --- a/x/emissions/keeper/epoch.go +++ b/x/emissions/keeper/epoch.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "errors" "cosmossdk.io/collections" "github.com/allora-network/allora-chain/fsm" @@ -75,6 +76,37 @@ func (k *Keeper) setupEpochFSMEngine() { k.epochFSMEngine = epochFSMEngine } +// GetTopicLastEpochNonce returns the last allocated epoch nonce for a topic. +// found is false when no epoch nonce has been allocated for the topic yet. +func (k *Keeper) GetTopicLastEpochNonce(ctx context.Context, topicID TopicId) (nonce types.NonceV2, found bool, err error) { + nonce, err = k.topicLastEpochNonce.Get(ctx, topicID) + if err != nil { + if errors.Is(err, collections.ErrNotFound) { + return types.ZeroNonce(), false, nil + } + return types.NonceV2(0), false, err + } + return nonce, true, nil +} + +// AllocateNextEpochNonce returns the next NonceV2 for the topic and persists it as the topic's last epoch nonce. +// The first allocation for a topic is ZeroNonce().NextNonce() (version V1, payload 1). +func (k *Keeper) AllocateNextEpochNonce(ctx context.Context, topicID TopicId) (types.NonceV2, error) { + lastNonce, found, err := k.GetTopicLastEpochNonce(ctx, topicID) + if err != nil { + return types.NonceV2(0), err + } + if !found { + lastNonce = types.ZeroNonce() + } + + nextNonce := lastNonce.NextNonce() + if err := k.topicLastEpochNonce.Set(ctx, topicID, nextNonce); err != nil { + return types.NonceV2(0), err + } + return nextNonce, nil +} + // StartEpoch initializes a new epoch for the given topic, and schedules its lifecycle tasks starting at the current block time. func (k *Keeper) StartEpoch(ctx context.Context, topicID TopicId) error { sdkCtx := sdk.UnwrapSDKContext(ctx) @@ -83,15 +115,14 @@ func (k *Keeper) StartEpoch(ctx context.Context, topicID TopicId) error { return err } - // TODO: get last nonce from topic once topic nonce persistence exists. - lastNonce := types.ZeroNonce() - nonce := lastNonce.NextNonce() + nonce, err := k.AllocateNextEpochNonce(ctx, topicID) + if err != nil { + return err + } epoch := types.NewEpoch(nonce, topic, sdkCtx.BlockTime()) k.epochFSMEngine.Init(&epoch) // Unnecessary but more formal - // TODO: persist topic last nonce once that field/store exists, then write the topic back. - if err := k.epochs.Set(ctx, epoch.Key(), epoch); err != nil { return err } diff --git a/x/emissions/keeper/epoch_nonce_test.go b/x/emissions/keeper/epoch_nonce_test.go new file mode 100644 index 000000000..0ffdfe561 --- /dev/null +++ b/x/emissions/keeper/epoch_nonce_test.go @@ -0,0 +1,92 @@ +package keeper_test + +import ( + "github.com/allora-network/allora-chain/x/emissions/types" +) + +func (s *KeeperTestSuite) TestAllocateNextEpochNonceMonotonicPerTopic() { + ctx := s.Ctx() + k := s.EmissionsKeeper() + topicA := uint64(1) + topicB := uint64(2) + + _, found, err := k.GetTopicLastEpochNonce(ctx, topicA) + s.Require().NoError(err) + s.Require().False(found) + + firstA, err := k.AllocateNextEpochNonce(ctx, topicA) + s.Require().NoError(err) + s.Require().Equal(types.ZeroNonce().NextNonce(), firstA) + s.Require().Equal(types.NonceVersionV1, firstA.Version()) + s.Require().Equal(uint64(1), firstA.Payload()) + + secondA, err := k.AllocateNextEpochNonce(ctx, topicA) + s.Require().NoError(err) + s.Require().Equal(firstA.NextNonce(), secondA) + s.Require().Equal(uint64(2), secondA.Payload()) + + thirdA, err := k.AllocateNextEpochNonce(ctx, topicA) + s.Require().NoError(err) + s.Require().Equal(secondA.NextNonce(), thirdA) + + firstB, err := k.AllocateNextEpochNonce(ctx, topicB) + s.Require().NoError(err) + s.Require().Equal(types.ZeroNonce().NextNonce(), firstB) + s.Require().NotEqual(thirdA, firstB) + + lastA, found, err := k.GetTopicLastEpochNonce(ctx, topicA) + s.Require().NoError(err) + s.Require().True(found) + s.Require().Equal(thirdA, lastA) + + lastB, found, err := k.GetTopicLastEpochNonce(ctx, topicB) + s.Require().NoError(err) + s.Require().True(found) + s.Require().Equal(firstB, lastB) +} + +func (s *KeeperTestSuite) TestTopicLastEpochNonceGenesisRoundTrip() { + ctx := s.Ctx() + k := s.EmissionsKeeper() + topicA := uint64(7) + topicB := uint64(9) + + nonceA, err := k.AllocateNextEpochNonce(ctx, topicA) + s.Require().NoError(err) + _, err = k.AllocateNextEpochNonce(ctx, topicA) + s.Require().NoError(err) + nonceA, err = k.AllocateNextEpochNonce(ctx, topicA) + s.Require().NoError(err) + + nonceB, err := k.AllocateNextEpochNonce(ctx, topicB) + s.Require().NoError(err) + + exported, err := k.ExportGenesis(ctx) + s.Require().NoError(err) + s.Require().Len(exported.TopicLastEpochNonces, 2) + + byTopic := make(map[uint64]types.NonceV2, len(exported.TopicLastEpochNonces)) + for _, row := range exported.TopicLastEpochNonces { + s.Require().NotNil(row) + byTopic[row.TopicId] = row.Nonce + } + s.Require().Equal(nonceA, byTopic[topicA]) + s.Require().Equal(nonceB, byTopic[topicB]) + + fresh := s.newFreshGenesisSuite() + s.Require().NoError(fresh.EmissionsKeeper().InitGenesis(fresh.Ctx(), exported)) + + gotA, found, err := fresh.EmissionsKeeper().GetTopicLastEpochNonce(fresh.Ctx(), topicA) + s.Require().NoError(err) + s.Require().True(found) + s.Require().Equal(nonceA, gotA) + + gotB, found, err := fresh.EmissionsKeeper().GetTopicLastEpochNonce(fresh.Ctx(), topicB) + s.Require().NoError(err) + s.Require().True(found) + s.Require().Equal(nonceB, gotB) + + nextA, err := fresh.EmissionsKeeper().AllocateNextEpochNonce(fresh.Ctx(), topicA) + s.Require().NoError(err) + s.Require().Equal(nonceA.NextNonce(), nextA) +} diff --git a/x/emissions/keeper/genesis.go b/x/emissions/keeper/genesis.go index 893bce476..39f8d1e5f 100644 --- a/x/emissions/keeper/genesis.go +++ b/x/emissions/keeper/genesis.go @@ -124,6 +124,15 @@ func (k *Keeper) initGenesisKeeperFields(ctx context.Context, data *types.Genesi } } + // TopicLastEpochNonces + for _, topicLastEpochNonce := range data.TopicLastEpochNonces { + if topicLastEpochNonce != nil { + if err := k.topicLastEpochNonce.Set(ctx, topicLastEpochNonce.TopicId, topicLastEpochNonce.Nonce); err != nil { + return errors.Wrap(err, "error setting topicLastEpochNonce") + } + } + } + return nil } @@ -267,5 +276,23 @@ func (k *Keeper) exportGenesisKeeperFields(ctx context.Context, data *types.Gene data.OutlierResistantNetworkInferenceBundle = outlierResistantNetworkInferenceBundle + // TopicLastEpochNonces + topicLastEpochNonces := make([]*types.TopicIdAndEpochNonce, 0) + topicLastEpochNonceIter, err := k.topicLastEpochNonce.Iterate(ctx, nil) + if err != nil { + return errors.Wrap(err, "failed to iterate topic last epoch nonces") + } + for ; topicLastEpochNonceIter.Valid(); topicLastEpochNonceIter.Next() { + keyValue, err := topicLastEpochNonceIter.KeyValue() + if err != nil { + return errors.Wrap(err, "failed to get key value: topicLastEpochNonceIter") + } + topicLastEpochNonces = append(topicLastEpochNonces, &types.TopicIdAndEpochNonce{ + TopicId: keyValue.Key, + Nonce: keyValue.Value, + }) + } + data.TopicLastEpochNonces = topicLastEpochNonces + return nil } diff --git a/x/emissions/keeper/keeper.go b/x/emissions/keeper/keeper.go index 18aab8883..394fc1dc8 100644 --- a/x/emissions/keeper/keeper.go +++ b/x/emissions/keeper/keeper.go @@ -93,6 +93,8 @@ type Keeper struct { // EPOCHS epochs *collections.IndexedMap[collections.Pair[TopicId, types.NonceV2], types.Epoch, EpochsIndexes] + // topicLastEpochNonce tracks the last allocated epoch NonceV2 for each topic. + topicLastEpochNonce collections.Map[TopicId, types.NonceV2] // REPUTERS AND LOSSES reputerLossKeeper *ReputerLossKeeper @@ -193,6 +195,13 @@ func NewKeeper( codec.CollValue[types.Epoch](cdc), NewEpochsIndexes(sb), ), + topicLastEpochNonce: collections.NewMap( + sb, + types.TopicLastEpochNonceKey, + "topic_last_epoch_nonce", + collections.Uint64Key, + types.NonceValue, + ), } schema, err := sb.Build() diff --git a/x/emissions/proto/emissions/v10/genesis.proto b/x/emissions/proto/emissions/v10/genesis.proto index b9ef69230..637dcb76a 100644 --- a/x/emissions/proto/emissions/v10/genesis.proto +++ b/x/emissions/proto/emissions/v10/genesis.proto @@ -282,6 +282,9 @@ message GenesisState { // map of (topic, block_height) -> temporary or final EpochLabelRegistry repeated TopicIdBlockHeightEpochLabelRegistry topic_label_registries = 101; + // Last allocated epoch NonceV2 per topic (map of topic_id -> nonce). + repeated TopicIdAndEpochNonce topic_last_epoch_nonces = 102; + // MONTHLY REWARDS string monthly_reputer_rewards = 97 [ (cosmos_proto.scalar) = "cosmos.Int", @@ -312,6 +315,12 @@ message TopicIdAndBlockHeight { int64 block_height = 2; } +message TopicIdAndEpochNonce { + uint64 topic_id = 1; + // Last allocated epoch nonce for the topic (NonceV2 encoded as uint64). + uint64 nonce = 2 [(gogoproto.nullable) = false, (gogoproto.customtype) = "NonceV2"]; +} + message BlockHeightAndTopicIds { int64 block_height = 1; repeated uint64 topic_ids = 2; diff --git a/x/emissions/types/codec.go b/x/emissions/types/codec.go index b3fe8174f..fb5552ae0 100644 --- a/x/emissions/types/codec.go +++ b/x/emissions/types/codec.go @@ -9,6 +9,7 @@ import ( var ( EpochStateKey = codec.NewInt32Key[EpochState]() NonceKey = codec.NewUint64Key[NonceV2]() + NonceValue = codec.KeyToValueCodec(NonceKey) ) // RegisterInterfaces registers the interfaces types with the interface registry. diff --git a/x/emissions/types/genesis.go b/x/emissions/types/genesis.go index 9c415db2c..1e83c82b9 100644 --- a/x/emissions/types/genesis.go +++ b/x/emissions/types/genesis.go @@ -107,6 +107,7 @@ func NewGenesisState() *GenesisState { NetworkInferenceBundle: []*TopicIdBlockHeightNetworkInferenceBundles{}, OutlierResistantNetworkInferenceBundle: []*TopicIdBlockHeightNetworkInferenceBundles{}, TopicLabelRegistries: []*TopicIdBlockHeightEpochLabelRegistry{}, + TopicLastEpochNonces: []*TopicIdAndEpochNonce{}, } } diff --git a/x/emissions/types/genesis.pb.go b/x/emissions/types/genesis.pb.go index 95724927d..fc1b5f021 100644 --- a/x/emissions/types/genesis.pb.go +++ b/x/emissions/types/genesis.pb.go @@ -232,6 +232,8 @@ type GenesisState struct { // EPOCH LABEL REGISTRIES // map of (topic, block_height) -> temporary or final EpochLabelRegistry TopicLabelRegistries []*TopicIdBlockHeightEpochLabelRegistry `protobuf:"bytes,101,rep,name=topic_label_registries,json=topicLabelRegistries,proto3" json:"topic_label_registries,omitempty"` + // Last allocated epoch NonceV2 per topic (map of topic_id -> nonce). + TopicLastEpochNonces []*TopicIdAndEpochNonce `protobuf:"bytes,102,rep,name=topic_last_epoch_nonces,json=topicLastEpochNonces,proto3" json:"topic_last_epoch_nonces,omitempty"` // MONTHLY REWARDS MonthlyReputerRewards cosmossdk_io_math.Int `protobuf:"bytes,97,opt,name=monthly_reputer_rewards,json=monthlyReputerRewards,proto3,customtype=cosmossdk.io/math.Int" json:"monthly_reputer_rewards"` MonthlyTopicRewards cosmossdk_io_math.Int `protobuf:"bytes,98,opt,name=monthly_topic_rewards,json=monthlyTopicRewards,proto3,customtype=cosmossdk.io/math.Int" json:"monthly_topic_rewards"` @@ -914,6 +916,13 @@ func (m *GenesisState) GetTopicLabelRegistries() []*TopicIdBlockHeightEpochLabel return nil } +func (m *GenesisState) GetTopicLastEpochNonces() []*TopicIdAndEpochNonce { + if m != nil { + return m.TopicLastEpochNonces + } + return nil +} + type TopicIdAndTopic struct { TopicId uint64 `protobuf:"varint,1,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` Topic *Topic `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` @@ -1070,6 +1079,52 @@ func (m *TopicIdAndBlockHeight) GetBlockHeight() int64 { return 0 } +type TopicIdAndEpochNonce struct { + TopicId uint64 `protobuf:"varint,1,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` + // Last allocated epoch nonce for the topic (NonceV2 encoded as uint64). + Nonce NonceV2 `protobuf:"varint,2,opt,name=nonce,proto3,customtype=NonceV2" json:"nonce"` +} + +func (m *TopicIdAndEpochNonce) Reset() { *m = TopicIdAndEpochNonce{} } +func (m *TopicIdAndEpochNonce) String() string { return proto.CompactTextString(m) } +func (*TopicIdAndEpochNonce) ProtoMessage() {} +func (*TopicIdAndEpochNonce) Descriptor() ([]byte, []int) { + return fileDescriptor_c2017374dc45a41f, []int{4} +} +func (m *TopicIdAndEpochNonce) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TopicIdAndEpochNonce) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TopicIdAndEpochNonce.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TopicIdAndEpochNonce) XXX_Merge(src proto.Message) { + xxx_messageInfo_TopicIdAndEpochNonce.Merge(m, src) +} +func (m *TopicIdAndEpochNonce) XXX_Size() int { + return m.Size() +} +func (m *TopicIdAndEpochNonce) XXX_DiscardUnknown() { + xxx_messageInfo_TopicIdAndEpochNonce.DiscardUnknown(m) +} + +var xxx_messageInfo_TopicIdAndEpochNonce proto.InternalMessageInfo + +func (m *TopicIdAndEpochNonce) GetTopicId() uint64 { + if m != nil { + return m.TopicId + } + return 0 +} + type BlockHeightAndTopicIds struct { BlockHeight int64 `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` TopicIds []uint64 `protobuf:"varint,2,rep,packed,name=topic_ids,json=topicIds,proto3" json:"topic_ids,omitempty"` @@ -1079,7 +1134,7 @@ func (m *BlockHeightAndTopicIds) Reset() { *m = BlockHeightAndTopicIds{} func (m *BlockHeightAndTopicIds) String() string { return proto.CompactTextString(m) } func (*BlockHeightAndTopicIds) ProtoMessage() {} func (*BlockHeightAndTopicIds) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{4} + return fileDescriptor_c2017374dc45a41f, []int{5} } func (m *BlockHeightAndTopicIds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1132,7 +1187,7 @@ func (m *TopicIdBlockHeightScores) Reset() { *m = TopicIdBlockHeightScor func (m *TopicIdBlockHeightScores) String() string { return proto.CompactTextString(m) } func (*TopicIdBlockHeightScores) ProtoMessage() {} func (*TopicIdBlockHeightScores) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{5} + return fileDescriptor_c2017374dc45a41f, []int{6} } func (m *TopicIdBlockHeightScores) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1192,7 +1247,7 @@ func (m *TopicIdActorIdScore) Reset() { *m = TopicIdActorIdScore{} } func (m *TopicIdActorIdScore) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdScore) ProtoMessage() {} func (*TopicIdActorIdScore) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{6} + return fileDescriptor_c2017374dc45a41f, []int{7} } func (m *TopicIdActorIdScore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1252,7 +1307,7 @@ func (m *TopicIdActorIdUint64) Reset() { *m = TopicIdActorIdUint64{} } func (m *TopicIdActorIdUint64) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdUint64) ProtoMessage() {} func (*TopicIdActorIdUint64) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{7} + return fileDescriptor_c2017374dc45a41f, []int{8} } func (m *TopicIdActorIdUint64) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1312,7 +1367,7 @@ func (m *TopicIdActorIdListeningCoefficient) Reset() { *m = TopicIdActor func (m *TopicIdActorIdListeningCoefficient) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdListeningCoefficient) ProtoMessage() {} func (*TopicIdActorIdListeningCoefficient) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{8} + return fileDescriptor_c2017374dc45a41f, []int{9} } func (m *TopicIdActorIdListeningCoefficient) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1372,7 +1427,7 @@ func (m *TopicIdActorIdDec) Reset() { *m = TopicIdActorIdDec{} } func (m *TopicIdActorIdDec) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdDec) ProtoMessage() {} func (*TopicIdActorIdDec) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{9} + return fileDescriptor_c2017374dc45a41f, []int{10} } func (m *TopicIdActorIdDec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1424,7 +1479,7 @@ func (m *TopicIdAndInt) Reset() { *m = TopicIdAndInt{} } func (m *TopicIdAndInt) String() string { return proto.CompactTextString(m) } func (*TopicIdAndInt) ProtoMessage() {} func (*TopicIdAndInt) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{10} + return fileDescriptor_c2017374dc45a41f, []int{11} } func (m *TopicIdAndInt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1470,7 +1525,7 @@ func (m *TopicIdActorIdInt) Reset() { *m = TopicIdActorIdInt{} } func (m *TopicIdActorIdInt) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdInt) ProtoMessage() {} func (*TopicIdActorIdInt) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{11} + return fileDescriptor_c2017374dc45a41f, []int{12} } func (m *TopicIdActorIdInt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1524,7 +1579,7 @@ func (m *TopicIdDelegatorReputerDelegatorInfo) Reset() { *m = TopicIdDel func (m *TopicIdDelegatorReputerDelegatorInfo) String() string { return proto.CompactTextString(m) } func (*TopicIdDelegatorReputerDelegatorInfo) ProtoMessage() {} func (*TopicIdDelegatorReputerDelegatorInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{12} + return fileDescriptor_c2017374dc45a41f, []int{13} } func (m *TopicIdDelegatorReputerDelegatorInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1596,7 +1651,7 @@ func (m *BlockHeightTopicIdReputerStakeRemovalInfo) String() string { } func (*BlockHeightTopicIdReputerStakeRemovalInfo) ProtoMessage() {} func (*BlockHeightTopicIdReputerStakeRemovalInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{13} + return fileDescriptor_c2017374dc45a41f, []int{14} } func (m *BlockHeightTopicIdReputerStakeRemovalInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1663,7 +1718,7 @@ func (m *ActorIdTopicIdBlockHeight) Reset() { *m = ActorIdTopicIdBlockHe func (m *ActorIdTopicIdBlockHeight) String() string { return proto.CompactTextString(m) } func (*ActorIdTopicIdBlockHeight) ProtoMessage() {} func (*ActorIdTopicIdBlockHeight) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{14} + return fileDescriptor_c2017374dc45a41f, []int{15} } func (m *ActorIdTopicIdBlockHeight) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1729,7 +1784,7 @@ func (m *BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) String() st } func (*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) ProtoMessage() {} func (*BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{15} + return fileDescriptor_c2017374dc45a41f, []int{16} } func (m *BlockHeightTopicIdDelegatorReputerDelegateStakeRemovalInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1804,7 +1859,7 @@ func (m *DelegatorReputerTopicIdBlockHeight) Reset() { *m = DelegatorRep func (m *DelegatorReputerTopicIdBlockHeight) String() string { return proto.CompactTextString(m) } func (*DelegatorReputerTopicIdBlockHeight) ProtoMessage() {} func (*DelegatorReputerTopicIdBlockHeight) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{16} + return fileDescriptor_c2017374dc45a41f, []int{17} } func (m *DelegatorReputerTopicIdBlockHeight) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1871,7 +1926,7 @@ func (m *TopicIdActorIdInference) Reset() { *m = TopicIdActorIdInference func (m *TopicIdActorIdInference) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdInference) ProtoMessage() {} func (*TopicIdActorIdInference) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{17} + return fileDescriptor_c2017374dc45a41f, []int{18} } func (m *TopicIdActorIdInference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1931,7 +1986,7 @@ func (m *TopicIdActorIdForecast) Reset() { *m = TopicIdActorIdForecast{} func (m *TopicIdActorIdForecast) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdForecast) ProtoMessage() {} func (*TopicIdActorIdForecast) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{18} + return fileDescriptor_c2017374dc45a41f, []int{19} } func (m *TopicIdActorIdForecast) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1990,7 +2045,7 @@ func (m *LibP2PKeyAndOffchainNode) Reset() { *m = LibP2PKeyAndOffchainNo func (m *LibP2PKeyAndOffchainNode) String() string { return proto.CompactTextString(m) } func (*LibP2PKeyAndOffchainNode) ProtoMessage() {} func (*LibP2PKeyAndOffchainNode) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{19} + return fileDescriptor_c2017374dc45a41f, []int{20} } func (m *LibP2PKeyAndOffchainNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2042,7 +2097,7 @@ func (m *TopicIdAndDec) Reset() { *m = TopicIdAndDec{} } func (m *TopicIdAndDec) String() string { return proto.CompactTextString(m) } func (*TopicIdAndDec) ProtoMessage() {} func (*TopicIdAndDec) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{20} + return fileDescriptor_c2017374dc45a41f, []int{21} } func (m *TopicIdAndDec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2088,7 +2143,7 @@ func (m *TopicIdBlockHeightInferences) Reset() { *m = TopicIdBlockHeight func (m *TopicIdBlockHeightInferences) String() string { return proto.CompactTextString(m) } func (*TopicIdBlockHeightInferences) ProtoMessage() {} func (*TopicIdBlockHeightInferences) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{21} + return fileDescriptor_c2017374dc45a41f, []int{22} } func (m *TopicIdBlockHeightInferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2148,7 +2203,7 @@ func (m *TopicIdBlockHeightEpochLabelRegistry) Reset() { *m = TopicIdBlo func (m *TopicIdBlockHeightEpochLabelRegistry) String() string { return proto.CompactTextString(m) } func (*TopicIdBlockHeightEpochLabelRegistry) ProtoMessage() {} func (*TopicIdBlockHeightEpochLabelRegistry) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{22} + return fileDescriptor_c2017374dc45a41f, []int{23} } func (m *TopicIdBlockHeightEpochLabelRegistry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2208,7 +2263,7 @@ func (m *TopicIdBlockHeightForecasts) Reset() { *m = TopicIdBlockHeightF func (m *TopicIdBlockHeightForecasts) String() string { return proto.CompactTextString(m) } func (*TopicIdBlockHeightForecasts) ProtoMessage() {} func (*TopicIdBlockHeightForecasts) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{23} + return fileDescriptor_c2017374dc45a41f, []int{24} } func (m *TopicIdBlockHeightForecasts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2268,7 +2323,7 @@ func (m *TopicIdBlockHeightReputerValueBundles) Reset() { *m = TopicIdBl func (m *TopicIdBlockHeightReputerValueBundles) String() string { return proto.CompactTextString(m) } func (*TopicIdBlockHeightReputerValueBundles) ProtoMessage() {} func (*TopicIdBlockHeightReputerValueBundles) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{24} + return fileDescriptor_c2017374dc45a41f, []int{25} } func (m *TopicIdBlockHeightReputerValueBundles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2328,7 +2383,7 @@ func (m *TopicIdBlockHeightValueBundles) Reset() { *m = TopicIdBlockHeig func (m *TopicIdBlockHeightValueBundles) String() string { return proto.CompactTextString(m) } func (*TopicIdBlockHeightValueBundles) ProtoMessage() {} func (*TopicIdBlockHeightValueBundles) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{25} + return fileDescriptor_c2017374dc45a41f, []int{26} } func (m *TopicIdBlockHeightValueBundles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2392,7 +2447,7 @@ func (m *TopicIdBlockHeightNetworkInferenceBundles) String() string { } func (*TopicIdBlockHeightNetworkInferenceBundles) ProtoMessage() {} func (*TopicIdBlockHeightNetworkInferenceBundles) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{26} + return fileDescriptor_c2017374dc45a41f, []int{27} } func (m *TopicIdBlockHeightNetworkInferenceBundles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2451,7 +2506,7 @@ func (m *TopicIdAndNonces) Reset() { *m = TopicIdAndNonces{} } func (m *TopicIdAndNonces) String() string { return proto.CompactTextString(m) } func (*TopicIdAndNonces) ProtoMessage() {} func (*TopicIdAndNonces) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{27} + return fileDescriptor_c2017374dc45a41f, []int{28} } func (m *TopicIdAndNonces) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2503,7 +2558,7 @@ func (m *TopicIdAndReputerRequestNonces) Reset() { *m = TopicIdAndRepute func (m *TopicIdAndReputerRequestNonces) String() string { return proto.CompactTextString(m) } func (*TopicIdAndReputerRequestNonces) ProtoMessage() {} func (*TopicIdAndReputerRequestNonces) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{28} + return fileDescriptor_c2017374dc45a41f, []int{29} } func (m *TopicIdAndReputerRequestNonces) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2556,7 +2611,7 @@ func (m *TopicIdActorIdTimeStampedValue) Reset() { *m = TopicIdActorIdTi func (m *TopicIdActorIdTimeStampedValue) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdTimeStampedValue) ProtoMessage() {} func (*TopicIdActorIdTimeStampedValue) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{29} + return fileDescriptor_c2017374dc45a41f, []int{30} } func (m *TopicIdActorIdTimeStampedValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2617,7 +2672,7 @@ func (m *TopicIdActorIdActorIdTimeStampedValue) Reset() { *m = TopicIdAc func (m *TopicIdActorIdActorIdTimeStampedValue) String() string { return proto.CompactTextString(m) } func (*TopicIdActorIdActorIdTimeStampedValue) ProtoMessage() {} func (*TopicIdActorIdActorIdTimeStampedValue) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{30} + return fileDescriptor_c2017374dc45a41f, []int{31} } func (m *TopicIdActorIdActorIdTimeStampedValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2683,7 +2738,7 @@ func (m *TopicIdTimestampedActorNonce) Reset() { *m = TopicIdTimestamped func (m *TopicIdTimestampedActorNonce) String() string { return proto.CompactTextString(m) } func (*TopicIdTimestampedActorNonce) ProtoMessage() {} func (*TopicIdTimestampedActorNonce) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{31} + return fileDescriptor_c2017374dc45a41f, []int{32} } func (m *TopicIdTimestampedActorNonce) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2735,7 +2790,7 @@ func (m *BlockHeightTopicIds) Reset() { *m = BlockHeightTopicIds{} } func (m *BlockHeightTopicIds) String() string { return proto.CompactTextString(m) } func (*BlockHeightTopicIds) ProtoMessage() {} func (*BlockHeightTopicIds) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{32} + return fileDescriptor_c2017374dc45a41f, []int{33} } func (m *BlockHeightTopicIds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2787,7 +2842,7 @@ func (m *BlockHeightTopicIdWeightPair) Reset() { *m = BlockHeightTopicId func (m *BlockHeightTopicIdWeightPair) String() string { return proto.CompactTextString(m) } func (*BlockHeightTopicIdWeightPair) ProtoMessage() {} func (*BlockHeightTopicIdWeightPair) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{33} + return fileDescriptor_c2017374dc45a41f, []int{34} } func (m *BlockHeightTopicIdWeightPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2840,7 +2895,7 @@ func (m *TopicIdReputerReputerValueBundle) Reset() { *m = TopicIdReputer func (m *TopicIdReputerReputerValueBundle) String() string { return proto.CompactTextString(m) } func (*TopicIdReputerReputerValueBundle) ProtoMessage() {} func (*TopicIdReputerReputerValueBundle) Descriptor() ([]byte, []int) { - return fileDescriptor_c2017374dc45a41f, []int{34} + return fileDescriptor_c2017374dc45a41f, []int{35} } func (m *TopicIdReputerReputerValueBundle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2895,6 +2950,7 @@ func init() { proto.RegisterType((*TopicIdAndTopic)(nil), "emissions.v10.TopicIdAndTopic") proto.RegisterType((*TopicAndActorId)(nil), "emissions.v10.TopicAndActorId") proto.RegisterType((*TopicIdAndBlockHeight)(nil), "emissions.v10.TopicIdAndBlockHeight") + proto.RegisterType((*TopicIdAndEpochNonce)(nil), "emissions.v10.TopicIdAndEpochNonce") proto.RegisterType((*BlockHeightAndTopicIds)(nil), "emissions.v10.BlockHeightAndTopicIds") proto.RegisterType((*TopicIdBlockHeightScores)(nil), "emissions.v10.TopicIdBlockHeightScores") proto.RegisterType((*TopicIdActorIdScore)(nil), "emissions.v10.TopicIdActorIdScore") @@ -2931,238 +2987,242 @@ func init() { func init() { proto.RegisterFile("emissions/v10/genesis.proto", fileDescriptor_c2017374dc45a41f) } var fileDescriptor_c2017374dc45a41f = []byte{ - // 3690 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5b, 0xcb, 0x6f, 0xdd, 0xc6, - 0x7a, 0x37, 0x2d, 0xd9, 0x96, 0x3e, 0x49, 0x96, 0x34, 0x7a, 0x51, 0x0f, 0x1f, 0xc9, 0xf4, 0x23, - 0xf2, 0xeb, 0xc8, 0x96, 0x1c, 0xc7, 0x4e, 0x93, 0xa6, 0x92, 0x2c, 0x3b, 0xc7, 0x51, 0x64, 0x99, - 0x92, 0x2d, 0x27, 0x4e, 0xcc, 0x52, 0x87, 0x23, 0x89, 0x30, 0x0f, 0x79, 0xc2, 0xe1, 0x91, 0x2d, - 0x04, 0x6d, 0xd1, 0x2e, 0x9a, 0x45, 0x51, 0xa0, 0x2d, 0xd2, 0x27, 0xb2, 0x6a, 0x37, 0x05, 0xba, - 0x29, 0xd0, 0x6e, 0x0a, 0x34, 0xfb, 0xdc, 0xbb, 0xca, 0xbd, 0xab, 0x8b, 0xbb, 0x08, 0x2e, 0x92, - 0xc5, 0xfd, 0x37, 0x2e, 0x38, 0x0f, 0xbe, 0x49, 0x51, 0x47, 0xd9, 0x08, 0xe2, 0xcc, 0x7c, 0xbf, - 0xdf, 0x6f, 0x66, 0x3e, 0xce, 0xe3, 0xe3, 0x77, 0x60, 0x12, 0x37, 0x4c, 0x42, 0x4c, 0xc7, 0x26, - 0x73, 0xfb, 0xb7, 0x6e, 0xce, 0xed, 0x62, 0x1b, 0x13, 0x93, 0x54, 0x9b, 0xae, 0xe3, 0x39, 0xa8, - 0x2f, 0xa8, 0xac, 0xee, 0xdf, 0xba, 0x39, 0x31, 0xa8, 0x37, 0x4c, 0xdb, 0x99, 0xa3, 0x7f, 0x59, - 0x8b, 0x89, 0xf1, 0xba, 0x43, 0x1a, 0x0e, 0xd1, 0xe8, 0xd3, 0x1c, 0x7b, 0xe0, 0x55, 0xe7, 0xe2, - 0xc8, 0xa6, 0xbd, 0x83, 0x5d, 0x6c, 0xd7, 0x31, 0xaf, 0xbe, 0x14, 0xaf, 0xb6, 0xb1, 0xf7, 0xda, - 0x71, 0x5f, 0x69, 0xc9, 0x66, 0xe3, 0xf1, 0x66, 0x9e, 0xd3, 0x34, 0xeb, 0xbc, 0x6a, 0x2c, 0x52, - 0xb5, 0x30, 0x67, 0x3b, 0x86, 0xb0, 0x91, 0x13, 0x15, 0x21, 0xda, 0x44, 0xac, 0xc6, 0xc5, 0xcd, - 0x96, 0x87, 0xdd, 0x4c, 0x2b, 0x52, 0x77, 0xdc, 0x6c, 0x3c, 0xe2, 0xe9, 0xaf, 0xb2, 0x6b, 0xbc, - 0x83, 0x26, 0x16, 0xbd, 0x9f, 0x8e, 0xd5, 0xec, 0xeb, 0x56, 0x0b, 0x6b, 0xdb, 0x2d, 0xdb, 0xb0, - 0xb2, 0x3a, 0xb6, 0x30, 0xe7, 0xf7, 0x3d, 0x50, 0x12, 0xad, 0xba, 0x37, 0xd7, 0xd4, 0x5d, 0xbd, - 0x21, 0x60, 0x87, 0x77, 0x9d, 0x5d, 0x87, 0x0d, 0xb6, 0xff, 0x1f, 0x2b, 0x55, 0xbe, 0xad, 0x41, - 0xef, 0x43, 0x36, 0x73, 0x1b, 0x9e, 0xee, 0x61, 0x34, 0x0f, 0xa7, 0x99, 0x99, 0x2c, 0xcd, 0x48, - 0xb3, 0x3d, 0xf3, 0xc3, 0xd5, 0xc8, 0x4c, 0xde, 0xab, 0xae, 0xd3, 0xba, 0xa5, 0xce, 0xef, 0x7e, - 0x98, 0x3e, 0xa1, 0xf2, 0x96, 0xa8, 0x0a, 0x43, 0x7e, 0x9f, 0x35, 0x0f, 0xeb, 0x0d, 0x4d, 0x37, - 0x0c, 0x17, 0x13, 0x82, 0x89, 0x7c, 0x72, 0xa6, 0x63, 0xb6, 0x5b, 0x1d, 0xf4, 0xab, 0x36, 0xb1, - 0xde, 0x58, 0x14, 0x15, 0x48, 0x81, 0x3e, 0x1b, 0xbf, 0xf1, 0x34, 0x3a, 0x25, 0x9a, 0x69, 0xc8, - 0x1d, 0x33, 0xd2, 0x6c, 0xa7, 0xda, 0xe3, 0x17, 0x6e, 0xfa, 0x65, 0x35, 0x03, 0xdd, 0x81, 0xd3, - 0xb4, 0x9a, 0xc8, 0x9d, 0x33, 0x1d, 0xb3, 0x3d, 0xf3, 0x95, 0x6a, 0xcc, 0xa3, 0xaa, 0xbc, 0xdd, - 0xa2, 0x6d, 0xd0, 0xff, 0x54, 0xde, 0x1a, 0x5d, 0x80, 0x3e, 0xbd, 0xee, 0x99, 0xfb, 0x58, 0xe3, - 0xe6, 0xa7, 0x66, 0x3a, 0x66, 0x3b, 0xd5, 0x5e, 0x56, 0xb8, 0xc9, 0x1a, 0x5d, 0x83, 0x41, 0x17, - 0xbf, 0xd6, 0x5d, 0x43, 0xdf, 0xb6, 0x82, 0x86, 0xa7, 0x69, 0xc3, 0x81, 0xb0, 0x82, 0x37, 0x5e, - 0x86, 0x3e, 0x26, 0x94, 0x8d, 0x34, 0x91, 0xcf, 0xe4, 0x0b, 0x5a, 0xb4, 0x8d, 0xc5, 0xba, 0xe7, - 0xb8, 0x35, 0x43, 0xed, 0xa5, 0x46, 0x5b, 0xcc, 0x06, 0xad, 0xc0, 0x59, 0x06, 0xc2, 0x3d, 0x87, - 0xc8, 0x5d, 0xa5, 0x50, 0x18, 0xb5, 0xca, 0x8d, 0x90, 0x0a, 0x48, 0xc0, 0xf8, 0x2a, 0x35, 0xea, - 0xa1, 0x72, 0x37, 0x85, 0xba, 0x98, 0x3b, 0x42, 0x4b, 0x96, 0x53, 0x7f, 0xf5, 0x21, 0x36, 0x77, - 0xf7, 0x3c, 0x75, 0x80, 0x03, 0xfa, 0xe6, 0x6b, 0xbe, 0x35, 0x7a, 0x09, 0x63, 0xec, 0xd5, 0x71, - 0x35, 0xea, 0xba, 0x44, 0xdb, 0x3e, 0xd0, 0xb6, 0x7d, 0x13, 0x19, 0x28, 0xf0, 0x5b, 0xd9, 0xc0, - 0x11, 0xd4, 0x0d, 0x6a, 0xa7, 0x0e, 0x73, 0x1c, 0xf6, 0xb8, 0x74, 0x40, 0x5b, 0x20, 0x03, 0x26, - 0x76, 0x1c, 0x17, 0xd7, 0x75, 0xe2, 0x65, 0x50, 0xf4, 0x1c, 0x8d, 0x62, 0x2c, 0x84, 0x8a, 0xb3, - 0xbc, 0x84, 0x31, 0x3e, 0xb4, 0x29, 0x8a, 0xde, 0x23, 0xf6, 0x82, 0xe3, 0xc4, 0xf1, 0x5b, 0x70, - 0x4e, 0xe0, 0x5b, 0x26, 0xf1, 0xb0, 0x6d, 0xda, 0xbb, 0x5a, 0xdd, 0xc1, 0x3b, 0x3b, 0x66, 0xdd, - 0xc4, 0xb6, 0x27, 0x0f, 0x50, 0x96, 0x5b, 0x39, 0x93, 0xc0, 0xa6, 0x73, 0x55, 0x58, 0x2e, 0x87, - 0x86, 0xea, 0x24, 0xc7, 0xcd, 0xaa, 0x44, 0x26, 0xcc, 0x34, 0x5d, 0xbc, 0x6f, 0x3a, 0x2d, 0x22, - 0x5c, 0x47, 0xcc, 0xfd, 0x8e, 0xeb, 0xfb, 0xb4, 0x63, 0xcb, 0x83, 0x94, 0x79, 0xa6, 0x90, 0xf9, - 0x3e, 0xae, 0xab, 0xe7, 0x04, 0x12, 0x77, 0x27, 0xe6, 0x04, 0x0f, 0x38, 0x0c, 0x6a, 0x80, 0x12, - 0x50, 0x05, 0x6b, 0x69, 0x8a, 0x0c, 0x95, 0x24, 0x9b, 0x16, 0x58, 0x35, 0x01, 0x95, 0xa0, 0x7b, - 0x05, 0xe7, 0x03, 0x3a, 0x31, 0xa9, 0x29, 0xb6, 0xa1, 0x92, 0x6c, 0x15, 0x01, 0xf5, 0x80, 0x23, - 0x25, 0xc8, 0xea, 0x30, 0x9d, 0x22, 0x13, 0x9e, 0xa2, 0xb9, 0xba, 0x67, 0x3a, 0xf2, 0x30, 0xa5, - 0x9a, 0xca, 0x7d, 0x89, 0x7c, 0x9a, 0xa9, 0x24, 0x0d, 0xf7, 0x12, 0xd5, 0x47, 0x40, 0x4f, 0xa0, - 0xc7, 0x73, 0x3c, 0xdd, 0xd2, 0xe8, 0x3a, 0x2f, 0x8f, 0xcc, 0x48, 0xb3, 0xdd, 0x4b, 0x37, 0xfd, - 0x95, 0xf2, 0xb7, 0x3f, 0x4c, 0x8f, 0xb0, 0x1d, 0x8e, 0x18, 0xaf, 0xaa, 0xa6, 0x33, 0xd7, 0xd0, - 0xbd, 0xbd, 0x6a, 0xcd, 0xf6, 0x7e, 0xfd, 0xbf, 0x37, 0x80, 0x6f, 0x7d, 0x35, 0xdb, 0xfb, 0xcf, - 0xdf, 0xff, 0xf7, 0x55, 0x49, 0x05, 0x0a, 0xb2, 0xe1, 0x63, 0xa0, 0xf7, 0x7d, 0x48, 0xff, 0x7d, - 0x67, 0x90, 0xa3, 0x87, 0x68, 0xac, 0xd9, 0x9e, 0x6f, 0xde, 0x34, 0xeb, 0xcc, 0xfc, 0x39, 0x8c, - 0x51, 0xc3, 0xc0, 0x75, 0xf4, 0x96, 0xb7, 0xe7, 0xb8, 0xa6, 0x77, 0x20, 0x8f, 0x95, 0x18, 0x59, - 0x1f, 0x6e, 0x84, 0x02, 0x70, 0x8f, 0x59, 0x14, 0xe6, 0xe8, 0x13, 0x90, 0x19, 0x32, 0x69, 0x35, - 0xb4, 0x1d, 0xd7, 0x69, 0x68, 0x06, 0xb6, 0xf0, 0xae, 0xee, 0x39, 0xae, 0x2c, 0x1f, 0x09, 0x7a, - 0xa3, 0xd5, 0x78, 0xe0, 0x3a, 0x8d, 0xfb, 0xc2, 0x1c, 0xbd, 0x84, 0x01, 0x8e, 0x85, 0x0d, 0xd6, - 0x6f, 0x22, 0x8f, 0x53, 0xc8, 0x85, 0x6c, 0xc8, 0xc0, 0x94, 0xab, 0x0c, 0x9e, 0x6b, 0xf6, 0x8e, - 0xa3, 0xf6, 0x07, 0x60, 0x74, 0x4c, 0x08, 0xb2, 0x40, 0x61, 0xd2, 0xe3, 0xb2, 0x89, 0xd6, 0x6a, - 0x3a, 0xb6, 0x18, 0x29, 0x79, 0xa2, 0x64, 0x27, 0x2a, 0x14, 0x2b, 0xd6, 0x03, 0xf2, 0xb4, 0xe9, - 0xd8, 0x5c, 0x0b, 0x7a, 0x01, 0xe3, 0x42, 0x80, 0xf0, 0xee, 0xa6, 0xef, 0x79, 0x7b, 0xba, 0x8b, - 0xe5, 0xc9, 0x92, 0xee, 0x3d, 0x2a, 0x20, 0x98, 0x5b, 0xaf, 0x63, 0x77, 0xc3, 0xb7, 0x47, 0x4e, - 0x38, 0xbf, 0x0d, 0x67, 0x5f, 0xb7, 0x22, 0x8b, 0xde, 0x14, 0x85, 0xbe, 0x9b, 0x80, 0x8e, 0xac, - 0x76, 0x9c, 0x85, 0xeb, 0xdc, 0x60, 0xb3, 0x4c, 0x51, 0xe8, 0xb0, 0x0d, 0x93, 0x48, 0x49, 0xb0, - 0x0a, 0x6a, 0x59, 0x84, 0xba, 0x2f, 0x54, 0x3e, 0x47, 0x09, 0x67, 0x13, 0x84, 0xbc, 0x13, 0xe9, - 0xc5, 0x36, 0x45, 0x40, 0x5b, 0xa2, 0xbf, 0x97, 0x60, 0x26, 0x18, 0xaf, 0xbc, 0xbe, 0x55, 0x28, - 0x55, 0xed, 0xd0, 0xbe, 0xe5, 0x38, 0x06, 0x4e, 0x75, 0x76, 0xca, 0xc8, 0xa8, 0x09, 0x3a, 0x7d, - 0x50, 0x28, 0x89, 0xf5, 0x7e, 0x3a, 0x73, 0xf5, 0x4f, 0x0a, 0xc8, 0x18, 0x86, 0x3c, 0x6a, 0x36, - 0x1c, 0x0f, 0x00, 0x82, 0xa5, 0x98, 0xc8, 0x33, 0x94, 0xe4, 0xf2, 0x21, 0x3e, 0x29, 0x96, 0xdb, - 0x88, 0x25, 0x5a, 0x86, 0x6e, 0xb1, 0xec, 0x11, 0xf9, 0x3c, 0x85, 0xb9, 0x54, 0x08, 0x13, 0xac, - 0xa3, 0xa1, 0x1d, 0x5a, 0x84, 0x33, 0xe2, 0x08, 0xa4, 0x64, 0x6e, 0xa9, 0xab, 0xe6, 0xf6, 0xfa, - 0x7c, 0xf3, 0x23, 0x7c, 0xb0, 0x68, 0x1b, 0x8f, 0x77, 0x76, 0xea, 0x7b, 0xba, 0x69, 0xaf, 0x39, - 0x06, 0x56, 0x85, 0x1d, 0x5a, 0x86, 0xae, 0xe0, 0x00, 0x74, 0xe1, 0x68, 0x18, 0x81, 0x21, 0xfa, - 0x10, 0x06, 0xd9, 0xa2, 0xb8, 0x83, 0xfd, 0xa9, 0xd8, 0xc7, 0x76, 0x0b, 0xcb, 0x17, 0x4b, 0x2c, - 0x8d, 0xfd, 0xd4, 0xec, 0x01, 0xc6, 0x2a, 0x33, 0x42, 0xeb, 0x30, 0x12, 0x6c, 0x0b, 0xfc, 0x8c, - 0x47, 0x67, 0x45, 0xbe, 0x54, 0x62, 0x33, 0x18, 0x12, 0xa6, 0xb4, 0x78, 0x8b, 0x1a, 0x22, 0x15, - 0xce, 0xea, 0x96, 0xa5, 0x45, 0x26, 0xed, 0x32, 0x85, 0xba, 0x76, 0xe8, 0xe9, 0x23, 0x98, 0x38, - 0xa2, 0xf6, 0xe9, 0x96, 0x15, 0x3e, 0xa2, 0xc7, 0xe0, 0x17, 0x68, 0xe1, 0x04, 0xbe, 0x45, 0x21, - 0xaf, 0x1e, 0x0a, 0x29, 0x26, 0x91, 0xa8, 0xbd, 0xba, 0x65, 0x05, 0x4f, 0xfe, 0x0a, 0xeb, 0x03, - 0x5a, 0x0e, 0x21, 0xfc, 0x66, 0x41, 0xe4, 0x59, 0x8a, 0x79, 0xfb, 0x50, 0x4c, 0xee, 0xc9, 0xcf, - 0xfc, 0x6b, 0xc9, 0x12, 0xb3, 0x55, 0xfd, 0x2e, 0xaf, 0x3a, 0x84, 0xf0, 0x67, 0xa4, 0xc1, 0xb0, - 0xb8, 0x94, 0xc5, 0x38, 0xae, 0x50, 0x8e, 0x1b, 0x87, 0x72, 0xc4, 0xc0, 0x11, 0x87, 0x8a, 0x12, - 0xfc, 0x8b, 0x04, 0x37, 0x82, 0x89, 0x6b, 0x62, 0xb7, 0x8e, 0x6d, 0x4f, 0xdf, 0x0d, 0x16, 0x58, - 0xcf, 0x61, 0xef, 0xa9, 0x11, 0x9e, 0xb6, 0xaf, 0xd2, 0xcd, 0xf8, 0x1d, 0xbe, 0x19, 0xcf, 0xed, - 0x9a, 0xde, 0x5e, 0x6b, 0xbb, 0x5a, 0x77, 0x1a, 0x73, 0xba, 0x65, 0x39, 0xae, 0x7e, 0x83, 0xb3, - 0x88, 0x47, 0xea, 0x77, 0x6c, 0x9b, 0xf6, 0xe7, 0x7a, 0x56, 0xb0, 0xad, 0x07, 0x64, 0x6c, 0x29, - 0xde, 0x74, 0xe8, 0x7b, 0x6b, 0x04, 0x27, 0xf4, 0x17, 0x30, 0xde, 0xb2, 0x77, 0x5a, 0xd6, 0x8e, - 0x69, 0x59, 0xd8, 0xe0, 0x77, 0x06, 0x76, 0x4e, 0x27, 0xf2, 0x35, 0x3a, 0x00, 0xd3, 0xb9, 0x6e, - 0x45, 0x0f, 0xe4, 0x44, 0x1d, 0x8b, 0x20, 0xb0, 0x0b, 0x04, 0xab, 0x40, 0xaf, 0x60, 0x22, 0x0a, - 0x2e, 0x76, 0x75, 0x8e, 0x7e, 0xbd, 0x68, 0x78, 0x17, 0x6d, 0x23, 0x38, 0xf6, 0x7d, 0xd1, 0xc2, - 0xc4, 0xe3, 0x5c, 0x72, 0x04, 0x90, 0x37, 0xe0, 0x64, 0x2e, 0x54, 0x2c, 0xdd, 0xc3, 0xc4, 0xd3, - 0xc4, 0xf5, 0x40, 0x4c, 0xaa, 0x8b, 0x77, 0x5d, 0xec, 0x11, 0xf9, 0x46, 0x21, 0x21, 0x5f, 0xf9, - 0xcd, 0x86, 0xbf, 0xb4, 0x35, 0x9a, 0xd8, 0xa0, 0xd3, 0xaa, 0x4e, 0x32, 0x50, 0xe6, 0xdf, 0xee, - 0x1a, 0x83, 0x54, 0x19, 0x22, 0x7a, 0x03, 0xe7, 0x39, 0x67, 0xe4, 0x94, 0x96, 0xa4, 0xad, 0xb6, - 0x43, 0xcb, 0xfb, 0x12, 0x1e, 0xdc, 0x12, 0xcc, 0x7f, 0x23, 0xc1, 0x2c, 0xa7, 0x76, 0x6c, 0xac, - 0x99, 0x76, 0x91, 0x82, 0xb9, 0xa2, 0x97, 0x85, 0x2b, 0xc8, 0x13, 0x72, 0x81, 0xb1, 0x3c, 0xb6, - 0x71, 0xcd, 0xce, 0x55, 0xf3, 0x67, 0x70, 0x91, 0x8b, 0xb1, 0x75, 0xff, 0x2e, 0x9b, 0x37, 0x03, - 0x37, 0xdb, 0x19, 0x8a, 0x19, 0x06, 0xbd, 0xe6, 0x23, 0x67, 0x4f, 0xc3, 0x3f, 0x49, 0x50, 0x8d, - 0x0c, 0x86, 0xd3, 0x0a, 0x7d, 0x20, 0x4f, 0xc9, 0xad, 0x63, 0x0c, 0xc9, 0x6c, 0x30, 0x24, 0x8f, - 0x5b, 0xc2, 0x31, 0xb2, 0x85, 0x7d, 0x23, 0xc1, 0xad, 0x1c, 0x61, 0x05, 0xd3, 0x35, 0x7f, 0x0c, - 0x6d, 0xd7, 0x32, 0xb4, 0xe5, 0x4e, 0x5b, 0x86, 0xbc, 0x88, 0xac, 0xbc, 0xa1, 0x5b, 0xf8, 0xb9, - 0xe4, 0x85, 0xba, 0xb2, 0x47, 0xef, 0xdf, 0x25, 0xb8, 0x9d, 0x2f, 0xaf, 0x60, 0x00, 0x6f, 0x1f, - 0x43, 0x61, 0x35, 0x5b, 0x61, 0xee, 0x18, 0x1a, 0x20, 0xb3, 0xad, 0xd8, 0xf2, 0x2f, 0x84, 0x7c, - 0xfd, 0xac, 0x3b, 0x8d, 0x86, 0xe9, 0xc9, 0x6f, 0x17, 0xed, 0xa5, 0x3e, 0x33, 0x61, 0xcc, 0x54, - 0x0b, 0x5d, 0xc6, 0xd4, 0x11, 0x0a, 0xb6, 0xaa, 0x13, 0x8f, 0xad, 0xa4, 0xcb, 0x14, 0x09, 0xed, - 0xc0, 0x78, 0x84, 0x45, 0x2c, 0xa4, 0x9c, 0xe6, 0xce, 0xd1, 0x69, 0x46, 0x03, 0x1a, 0xbe, 0x88, - 0x72, 0x9e, 0xa7, 0x30, 0xe4, 0x34, 0xb1, 0x2d, 0xfa, 0xf1, 0xda, 0xb4, 0x0d, 0xe7, 0x35, 0x91, - 0xdf, 0xc9, 0x3c, 0x82, 0x45, 0xb6, 0x40, 0x11, 0xd7, 0xaa, 0x19, 0x44, 0x1d, 0xf4, 0x11, 0x98, - 0xfa, 0x2d, 0x66, 0x8f, 0x56, 0xa1, 0x9f, 0x0a, 0x37, 0x5c, 0xb3, 0xc9, 0x0f, 0xc5, 0x77, 0x8f, - 0x10, 0x04, 0xea, 0xf3, 0x8d, 0xef, 0xbb, 0x66, 0x53, 0xc4, 0x36, 0x2e, 0xb1, 0xc1, 0xf0, 0x1c, - 0x8d, 0x06, 0xe6, 0x9a, 0x0e, 0x21, 0xe6, 0xb6, 0x85, 0xb5, 0xfa, 0x5e, 0xcb, 0xa5, 0x91, 0x0e, - 0xc6, 0x71, 0xef, 0x08, 0x1c, 0x33, 0x14, 0x72, 0xd3, 0x59, 0xc3, 0x6f, 0xbc, 0x75, 0x8e, 0xb7, - 0xcc, 0xe1, 0x18, 0xed, 0x16, 0x8c, 0x52, 0x58, 0x9f, 0x36, 0x1e, 0xb3, 0x7b, 0x97, 0xf2, 0x28, - 0x87, 0x1e, 0xf0, 0x89, 0x3a, 0x44, 0x11, 0x36, 0x9d, 0xc5, 0x68, 0x78, 0xef, 0x0d, 0x5c, 0x08, - 0x80, 0x2d, 0xe7, 0xb5, 0xef, 0xef, 0x51, 0x7c, 0x71, 0xc8, 0xfb, 0xa3, 0xcc, 0x69, 0x4e, 0xb3, - 0xb0, 0xa3, 0xdd, 0xba, 0x6e, 0xba, 0x6a, 0x85, 0xd3, 0xad, 0x52, 0xd4, 0x08, 0x29, 0x3f, 0xfe, - 0xad, 0x03, 0x8a, 0xc5, 0xd2, 0x34, 0xdc, 0xd0, 0x89, 0xfc, 0x5e, 0x66, 0x77, 0xe2, 0xaf, 0x0f, - 0x8b, 0x23, 0x0c, 0x44, 0x23, 0x68, 0x2b, 0x0d, 0x9d, 0xa0, 0x67, 0x30, 0x92, 0x0a, 0x58, 0x50, - 0xd0, 0xf7, 0x4b, 0x83, 0x0e, 0x25, 0x62, 0x66, 0x14, 0x77, 0x1d, 0x50, 0x2c, 0x5e, 0xc6, 0x40, - 0xff, 0xb8, 0xbc, 0xd2, 0x68, 0x94, 0x8c, 0x22, 0xb6, 0xe0, 0x4a, 0xe2, 0x30, 0xfd, 0x45, 0x4b, - 0xb7, 0x3d, 0xd3, 0x0a, 0xb7, 0xaf, 0x80, 0x49, 0xfe, 0xa0, 0xc4, 0x01, 0xfb, 0x62, 0xec, 0x80, - 0xfd, 0x84, 0x83, 0xd5, 0xe2, 0x23, 0x84, 0xbe, 0x84, 0xeb, 0x79, 0xb4, 0x59, 0x03, 0x27, 0xff, - 0x49, 0x09, 0xe6, 0xb7, 0x32, 0x99, 0x1f, 0xa4, 0x86, 0xb1, 0xa8, 0xcf, 0xa9, 0xd1, 0x95, 0x17, - 0xdb, 0xee, 0xb3, 0x1a, 0x1f, 0x6b, 0xf4, 0x97, 0x12, 0x5c, 0xaf, 0x3b, 0x2d, 0x3b, 0xba, 0x2d, - 0xd7, 0xad, 0x16, 0x05, 0xf5, 0x8f, 0x2e, 0x4c, 0x0a, 0xf7, 0x79, 0x82, 0x3d, 0x79, 0x89, 0x52, - 0x5f, 0x28, 0x9c, 0xd7, 0xa7, 0xa6, 0xed, 0xdd, 0xb9, 0xad, 0x5e, 0xa6, 0xc0, 0xc1, 0x2e, 0x2c, - 0x60, 0x6b, 0x36, 0x0b, 0x4d, 0x53, 0xcc, 0x0d, 0xec, 0xa1, 0xaf, 0x24, 0x98, 0x63, 0x1a, 0x62, - 0x5b, 0x5c, 0xa1, 0x8c, 0xe5, 0xf2, 0x32, 0xae, 0x50, 0xec, 0xe8, 0x8e, 0x96, 0xab, 0xe4, 0x21, - 0xf4, 0x73, 0x0e, 0x3e, 0x1a, 0x44, 0xbe, 0x5f, 0x2a, 0xb8, 0x7e, 0x96, 0x99, 0xf1, 0xbe, 0x12, - 0xf4, 0x31, 0x20, 0x0e, 0x14, 0x76, 0x89, 0xc8, 0x2b, 0xa5, 0xb0, 0x06, 0x99, 0x65, 0x28, 0xd8, - 0xbf, 0x0a, 0xc8, 0x7c, 0xf5, 0x49, 0xfb, 0xff, 0x83, 0xd2, 0x2f, 0xda, 0x08, 0xc3, 0x48, 0xba, - 0xbd, 0x0e, 0x93, 0x1c, 0x3c, 0xd3, 0xcb, 0x1f, 0x96, 0xc6, 0xe7, 0x1a, 0x33, 0x9c, 0x3b, 0x1c, - 0xd7, 0xe0, 0x1a, 0xf5, 0xe1, 0x51, 0xc6, 0x35, 0x72, 0x27, 0x12, 0x03, 0x91, 0x7e, 0x29, 0x6a, - 0x47, 0x1d, 0x88, 0xe4, 0xbb, 0xa0, 0x42, 0x6f, 0xec, 0x92, 0xf9, 0x88, 0x02, 0xce, 0x65, 0x03, - 0x06, 0x57, 0xa0, 0xe4, 0x25, 0x56, 0xed, 0xb1, 0x22, 0xf7, 0xcb, 0xbf, 0x80, 0x19, 0x1e, 0xc9, - 0x6d, 0x35, 0xb4, 0xcc, 0x08, 0x01, 0x91, 0x3f, 0x3a, 0xde, 0x8d, 0x72, 0x8a, 0x45, 0x79, 0x5b, - 0x8d, 0xf5, 0x74, 0x14, 0x81, 0x20, 0x02, 0xe7, 0xf8, 0x5d, 0xb6, 0xde, 0x72, 0x5d, 0x6c, 0x7b, - 0x6c, 0x03, 0xd6, 0x44, 0xa7, 0xe4, 0xd5, 0x36, 0x83, 0xcb, 0x13, 0x0c, 0x76, 0x99, 0xa1, 0xd2, - 0xbd, 0x6e, 0x85, 0x63, 0xa2, 0x2b, 0x30, 0xf0, 0x7a, 0xcf, 0xf4, 0xb0, 0x65, 0xfa, 0x1b, 0xa6, - 0xd1, 0x30, 0x6d, 0x22, 0x7f, 0x4c, 0xbf, 0xe1, 0xf5, 0x07, 0xe5, 0x8b, 0xb4, 0xd8, 0x6f, 0xba, - 0x6b, 0x39, 0xdb, 0xba, 0xa5, 0x05, 0x35, 0xf2, 0x1a, 0x6b, 0xca, 0xca, 0xb7, 0x44, 0x31, 0xba, - 0x03, 0x63, 0x6c, 0xe0, 0xea, 0x2e, 0xd6, 0x3d, 0xc7, 0x8d, 0x58, 0x3c, 0xa6, 0x16, 0xec, 0x84, - 0xb6, 0xcc, 0x6a, 0x43, 0xbb, 0x4d, 0x18, 0x8d, 0x7e, 0x76, 0x8b, 0x98, 0xad, 0x97, 0x72, 0xc2, - 0xe1, 0xc8, 0xf7, 0xb7, 0x10, 0xf5, 0x99, 0x50, 0x23, 0x3c, 0x31, 0x84, 0x7d, 0x52, 0x0a, 0x76, - 0x24, 0xfa, 0x41, 0x2e, 0xc4, 0x5d, 0x86, 0x4a, 0xb6, 0x5a, 0x0d, 0xdb, 0xfa, 0xb6, 0x85, 0x0d, - 0x59, 0xa5, 0x9f, 0x17, 0x27, 0xb3, 0x54, 0xad, 0xb0, 0x26, 0x68, 0x05, 0xa6, 0x73, 0xc4, 0x05, - 0x28, 0x1b, 0x14, 0x65, 0x2a, 0x53, 0x84, 0x80, 0x51, 0x61, 0x94, 0x1e, 0x0e, 0x1b, 0xd8, 0x30, - 0x75, 0x3b, 0x1a, 0x8b, 0xda, 0x2c, 0xb1, 0x03, 0x0d, 0xfb, 0xb6, 0x1f, 0x53, 0xd3, 0x5a, 0x34, - 0x80, 0x78, 0xb6, 0xa1, 0x1b, 0x51, 0xac, 0xa7, 0x25, 0xb0, 0xfa, 0x1a, 0xba, 0x11, 0x01, 0xd9, - 0x82, 0x71, 0xd3, 0x36, 0x3d, 0x53, 0xb7, 0x82, 0x15, 0x11, 0x37, 0x74, 0xb6, 0x18, 0xc8, 0xcf, - 0x4a, 0xe0, 0x8d, 0x72, 0x73, 0xbe, 0x18, 0xae, 0x34, 0x74, 0xba, 0x0c, 0xa0, 0xcf, 0x61, 0x4a, - 0x00, 0x47, 0x56, 0xc3, 0x10, 0x7b, 0xab, 0x04, 0xb6, 0x90, 0x16, 0x2e, 0x84, 0x01, 0x7c, 0x44, - 0xb7, 0x98, 0x99, 0x10, 0xfb, 0xf9, 0x11, 0x74, 0xf3, 0x19, 0x0b, 0x80, 0xef, 0xc0, 0x98, 0x78, - 0x8d, 0x92, 0x4e, 0xfe, 0x09, 0x7b, 0x37, 0xf8, 0xdb, 0x94, 0xf0, 0xe2, 0xbb, 0x20, 0x73, 0xbb, - 0xb4, 0x1b, 0x7f, 0x4a, 0x0d, 0x47, 0x59, 0x7d, 0xca, 0x4f, 0x6f, 0x03, 0xaf, 0x61, 0x2f, 0x78, - 0xc4, 0xee, 0x05, 0xb5, 0x1b, 0x66, 0xb5, 0xf4, 0x35, 0x0f, 0xad, 0x9e, 0xf8, 0x1e, 0xe5, 0xb1, - 0x05, 0xdc, 0xbf, 0xa5, 0x69, 0xc4, 0x33, 0x34, 0xdb, 0x71, 0x1b, 0xf2, 0x67, 0x65, 0x02, 0xa5, - 0xcc, 0x96, 0x5d, 0xf0, 0x36, 0x3c, 0x63, 0xcd, 0x71, 0x1b, 0xe8, 0x59, 0x00, 0x29, 0x5c, 0x41, - 0x2c, 0xac, 0x9f, 0x97, 0xfc, 0x28, 0x32, 0x1c, 0x0b, 0x24, 0x89, 0x95, 0xf3, 0x33, 0x18, 0x4f, - 0x47, 0x90, 0x04, 0xf4, 0xcb, 0x92, 0xd0, 0x63, 0xc9, 0x60, 0x51, 0x88, 0x8e, 0x52, 0xe9, 0x26, - 0x44, 0xd6, 0xda, 0x89, 0x6b, 0x0e, 0x72, 0xa0, 0xc8, 0xfb, 0xf1, 0xe7, 0x70, 0xd1, 0x69, 0x79, - 0x96, 0x49, 0xbf, 0xf1, 0x12, 0x93, 0x78, 0xba, 0xed, 0x69, 0x19, 0x7c, 0x7f, 0xda, 0x0e, 0xdf, - 0x79, 0x0e, 0xad, 0x0a, 0xe4, 0xb5, 0x14, 0xbf, 0x0b, 0x72, 0x8a, 0x8d, 0xef, 0xab, 0x72, 0x3d, - 0xf3, 0x7b, 0x52, 0x9a, 0x33, 0x89, 0x2a, 0xe8, 0x47, 0xed, 0xcc, 0x0a, 0xf4, 0xb5, 0x04, 0x57, - 0x4b, 0x74, 0x5a, 0xc8, 0x30, 0x8e, 0x29, 0xe3, 0xf2, 0x61, 0xa3, 0xc0, 0x65, 0x99, 0x62, 0xf7, - 0xb1, 0xf4, 0x6d, 0xec, 0xbf, 0x66, 0xbb, 0x26, 0xf1, 0x5c, 0x13, 0x13, 0x19, 0x17, 0x7d, 0x8a, - 0x8c, 0x28, 0x58, 0x69, 0x3a, 0xf5, 0xbd, 0x55, 0xdf, 0x5a, 0x65, 0xc6, 0x07, 0x7c, 0x4b, 0x8a, - 0x96, 0x99, 0x98, 0xa0, 0x3d, 0x18, 0x6b, 0x38, 0xb6, 0xb7, 0x67, 0x1d, 0x24, 0xbe, 0xf0, 0x13, - 0x59, 0x6f, 0x73, 0x97, 0x1f, 0xe1, 0x80, 0xb1, 0x0f, 0xfd, 0x04, 0x19, 0x20, 0x2a, 0xb4, 0x68, - 0x16, 0x09, 0x91, 0xb7, 0xdb, 0xe4, 0x19, 0xe2, 0x70, 0x9b, 0x61, 0x4e, 0x09, 0x79, 0xd4, 0xd9, - 0xd5, 0x37, 0x70, 0xf6, 0x51, 0x67, 0xd7, 0xd9, 0x81, 0xfe, 0x47, 0x9d, 0x5d, 0xfd, 0x03, 0x03, - 0x89, 0x90, 0xaf, 0xc8, 0xab, 0x60, 0x8b, 0x5a, 0x3a, 0x30, 0x9b, 0xa8, 0x9f, 0x12, 0xab, 0x47, - 0x2c, 0x29, 0x83, 0x3f, 0x2a, 0xcf, 0xa1, 0x3f, 0x91, 0x09, 0x84, 0xc6, 0xa1, 0x2b, 0x48, 0x2c, - 0x92, 0x68, 0x62, 0xd1, 0x19, 0x8f, 0x27, 0x15, 0x5d, 0x85, 0x53, 0xf4, 0x5f, 0xf9, 0x64, 0x3a, - 0xb7, 0x49, 0x4c, 0xa2, 0xca, 0x9a, 0x28, 0x0f, 0x39, 0x72, 0xb8, 0xf7, 0x17, 0x21, 0x8f, 0x43, - 0x17, 0xfd, 0x10, 0xe8, 0x57, 0xf9, 0xe0, 0xdd, 0xea, 0x19, 0x9d, 0x59, 0x29, 0x4f, 0x61, 0x24, - 0x33, 0x42, 0x52, 0x04, 0x77, 0x1e, 0x7a, 0xd9, 0x81, 0x6f, 0x8f, 0x85, 0x2a, 0x7c, 0xc8, 0x0e, - 0xb5, 0x67, 0x3b, 0xb4, 0x56, 0x9e, 0xc3, 0x68, 0x76, 0xbc, 0x28, 0x65, 0x2c, 0xa5, 0x8c, 0xd1, - 0x24, 0x74, 0x0b, 0x6a, 0x96, 0xa7, 0xd5, 0xa9, 0x76, 0x71, 0x6e, 0xa2, 0xfc, 0xb5, 0x04, 0x72, - 0x5e, 0x76, 0xcc, 0xf1, 0x44, 0xa3, 0xeb, 0x70, 0x9a, 0x65, 0xe7, 0xd0, 0x94, 0xaf, 0xc4, 0x0c, - 0x2c, 0x54, 0x79, 0x06, 0x0e, 0x6f, 0xa3, 0xec, 0xc3, 0x50, 0xc6, 0x45, 0xa0, 0xbd, 0x69, 0x40, - 0x57, 0xe0, 0x14, 0xdb, 0xb0, 0x19, 0xf3, 0x50, 0x06, 0xb3, 0xca, 0x5a, 0x28, 0x06, 0x0c, 0x67, - 0xdd, 0x49, 0xdb, 0x24, 0x1e, 0x85, 0xd3, 0x2d, 0x6a, 0xcf, 0xd3, 0xdc, 0xf8, 0x93, 0xf2, 0x3f, - 0x12, 0x28, 0x87, 0xa7, 0x07, 0xb5, 0x49, 0xba, 0x05, 0x23, 0xd9, 0x69, 0x4a, 0xac, 0xf7, 0x4a, - 0xbc, 0xf7, 0x99, 0x79, 0x49, 0xc3, 0x56, 0x46, 0xa9, 0xf2, 0xb5, 0x04, 0x83, 0xa9, 0x0d, 0xb3, - 0x4d, 0x91, 0x35, 0xe8, 0x30, 0x70, 0x9d, 0x4a, 0x3a, 0xc6, 0x4d, 0xca, 0xc7, 0x50, 0x6c, 0xe8, - 0x8b, 0x7d, 0xeb, 0x2d, 0x52, 0xb4, 0x04, 0x1d, 0xa6, 0xcd, 0xdc, 0xb3, 0x9d, 0x45, 0xcf, 0x37, - 0x56, 0xfe, 0x36, 0x35, 0x0c, 0xb5, 0xb6, 0xe7, 0x8a, 0xeb, 0xe9, 0x38, 0x8e, 0x9e, 0x6f, 0x25, - 0xb8, 0x58, 0x26, 0x1d, 0xa6, 0x48, 0xe2, 0x14, 0x74, 0x87, 0x49, 0x3c, 0x4c, 0x63, 0x58, 0x80, - 0x64, 0x38, 0x23, 0x72, 0x63, 0x3a, 0x98, 0x7e, 0xfe, 0x88, 0x96, 0xe0, 0x6c, 0xd0, 0xcc, 0xdf, - 0xb1, 0x1d, 0xb9, 0x93, 0x3a, 0xd9, 0x64, 0xdc, 0xc9, 0xe2, 0x69, 0x39, 0x7d, 0x46, 0xf4, 0x51, - 0xf9, 0x95, 0x04, 0x57, 0x4a, 0x27, 0xa7, 0x94, 0x59, 0xe1, 0xa2, 0xfd, 0x3c, 0x19, 0xef, 0x67, - 0x7e, 0x4f, 0x56, 0x01, 0xc5, 0x12, 0x3c, 0xa2, 0xbd, 0xa9, 0x24, 0x16, 0x8c, 0x64, 0x0e, 0xc9, - 0x00, 0x49, 0x94, 0x28, 0x1e, 0x8c, 0xe7, 0xa6, 0xbf, 0xc4, 0xfc, 0x41, 0x8a, 0xfb, 0x43, 0x81, - 0xf4, 0x64, 0xc7, 0x3b, 0xd2, 0xfb, 0xc2, 0xbf, 0x9e, 0x84, 0x77, 0xdb, 0x4f, 0x85, 0x39, 0xe6, - 0xd0, 0xc6, 0x5c, 0xa8, 0xa3, 0xc0, 0x85, 0x3a, 0xe3, 0x03, 0x8f, 0x61, 0x32, 0x3b, 0xc5, 0x86, - 0xcd, 0xc0, 0x29, 0x3a, 0x03, 0x97, 0x33, 0xfd, 0x29, 0x9d, 0xcd, 0x23, 0x1b, 0x39, 0x35, 0xca, - 0xbf, 0x49, 0xa0, 0x1c, 0x9e, 0x93, 0x13, 0xef, 0x85, 0x54, 0xd0, 0x8b, 0x93, 0xf1, 0x5e, 0x44, - 0x07, 0xa6, 0xa3, 0x78, 0xe2, 0x3a, 0xd3, 0x13, 0xf7, 0x95, 0x04, 0x63, 0x39, 0xb9, 0x3c, 0x6d, - 0x2e, 0x2c, 0x77, 0xa0, 0x3b, 0x38, 0x40, 0xf3, 0x85, 0x5f, 0x4e, 0x1c, 0x79, 0xc2, 0x74, 0xa1, - 0xb0, 0xa9, 0xf2, 0x57, 0x12, 0x8c, 0x66, 0xa7, 0x03, 0xb5, 0x29, 0x64, 0x1e, 0xba, 0xc4, 0x6d, - 0x8c, 0xeb, 0x18, 0x8d, 0xcf, 0x65, 0x90, 0x6e, 0x14, 0xb4, 0x53, 0xbe, 0x04, 0x39, 0x2f, 0x17, - 0x08, 0x55, 0xa0, 0xc7, 0x32, 0xb7, 0xb5, 0xe6, 0x7c, 0x53, 0x7b, 0x85, 0x0f, 0xc4, 0x14, 0x59, - 0xa2, 0x39, 0xfa, 0x00, 0xfa, 0x1c, 0xde, 0x5e, 0xb3, 0x1d, 0x03, 0xf3, 0xf3, 0xde, 0x44, 0x9c, - 0x34, 0x96, 0x5e, 0xd4, 0xeb, 0x44, 0x9e, 0x94, 0x56, 0x74, 0x3b, 0x39, 0x64, 0x83, 0xe3, 0xbb, - 0xd8, 0xc9, 0x9f, 0x61, 0x17, 0xfb, 0x67, 0x09, 0xa6, 0x8a, 0x32, 0x83, 0x8e, 0x79, 0xfa, 0xba, - 0x17, 0xcb, 0x26, 0x63, 0x13, 0x31, 0x9e, 0xe7, 0x10, 0x24, 0x9a, 0x40, 0xa6, 0xfc, 0x5f, 0xb8, - 0xbf, 0x14, 0xde, 0x71, 0x8e, 0xa9, 0x70, 0x03, 0x86, 0xb1, 0x8f, 0x19, 0xbf, 0x76, 0x1d, 0x70, - 0xad, 0xe7, 0x13, 0x5a, 0x33, 0xae, 0x58, 0x08, 0xa7, 0xca, 0x94, 0x7f, 0x90, 0x60, 0xb2, 0x20, - 0x39, 0xea, 0x98, 0x92, 0xdf, 0x8e, 0xa6, 0xd6, 0x31, 0x9d, 0x63, 0xd9, 0xce, 0x4d, 0x22, 0xc9, - 0x74, 0xca, 0xff, 0x4b, 0x70, 0xa9, 0x54, 0x76, 0xd5, 0x31, 0xe5, 0x3d, 0x85, 0x11, 0x71, 0xab, - 0x8c, 0xfe, 0x94, 0x84, 0x64, 0x0d, 0xe9, 0x42, 0x35, 0x2b, 0xbb, 0x6b, 0xc8, 0x4d, 0x17, 0x2a, - 0xdf, 0x48, 0x50, 0x29, 0x0e, 0x38, 0x1c, 0x53, 0xf7, 0x7b, 0xd0, 0x1b, 0xd5, 0x9b, 0xe5, 0xad, - 0x0b, 0xd5, 0x58, 0x00, 0x7f, 0x3f, 0x7c, 0x50, 0x7e, 0x29, 0xc1, 0x95, 0xd2, 0x41, 0x81, 0x63, - 0x2a, 0xd5, 0x0a, 0xa2, 0x26, 0x4c, 0x75, 0xf2, 0x3b, 0x7f, 0xb6, 0x8e, 0xbc, 0x10, 0x89, 0xf2, - 0x02, 0x06, 0x92, 0x29, 0x62, 0x45, 0x92, 0xaf, 0xc3, 0x69, 0x9e, 0x10, 0x76, 0x32, 0xeb, 0x8e, - 0xc5, 0xf3, 0xbe, 0x78, 0x1b, 0xe5, 0x1f, 0xc3, 0x89, 0xcc, 0x49, 0x11, 0x2b, 0xe2, 0x7a, 0x0e, - 0xa3, 0x61, 0xcc, 0x82, 0xda, 0x68, 0x31, 0x6e, 0x25, 0xd3, 0xbd, 0xe2, 0x19, 0x68, 0xe2, 0xf7, - 0x16, 0xb1, 0x52, 0xe5, 0x3f, 0x22, 0xba, 0xb2, 0x33, 0x4b, 0xda, 0xdc, 0x8b, 0x3e, 0x82, 0x41, - 0x2f, 0x4c, 0xe1, 0x60, 0x2f, 0x05, 0x9f, 0xa7, 0xc4, 0x11, 0x2f, 0x92, 0xe9, 0xc1, 0x52, 0x59, - 0x06, 0xbc, 0x44, 0x89, 0xf2, 0x8b, 0xf0, 0x2d, 0x2e, 0x4e, 0x83, 0x29, 0x12, 0x3b, 0x09, 0xdd, - 0x42, 0xec, 0x2d, 0xae, 0xb6, 0x8b, 0xab, 0xbd, 0x15, 0xad, 0x9c, 0xe7, 0x27, 0x2a, 0x51, 0x39, - 0x9f, 0xdd, 0x97, 0xce, 0x36, 0xfb, 0x12, 0xd9, 0x7c, 0x32, 0x73, 0x5c, 0x8a, 0xba, 0xf0, 0x19, - 0x8c, 0x45, 0x85, 0x30, 0xc5, 0xec, 0xc7, 0x49, 0xcc, 0x11, 0x52, 0x39, 0x23, 0x39, 0xc9, 0x3a, - 0x59, 0xc5, 0x8a, 0x0d, 0x43, 0x19, 0xb9, 0x1f, 0x65, 0x8e, 0xaa, 0xb7, 0xe3, 0x71, 0x8e, 0xd4, - 0xe2, 0x1c, 0x46, 0xee, 0x48, 0x3c, 0x00, 0x32, 0x55, 0x94, 0x06, 0x52, 0x86, 0x79, 0x19, 0x7a, - 0x63, 0xc9, 0x26, 0x8c, 0x3c, 0x27, 0xf4, 0x1c, 0xc9, 0x30, 0x61, 0xbf, 0xf7, 0x60, 0x05, 0xca, - 0x7f, 0x49, 0x30, 0x73, 0xd8, 0x97, 0xcb, 0xa2, 0x69, 0xc9, 0x3f, 0xaa, 0xaa, 0x30, 0x9c, 0xb5, - 0x2d, 0xf0, 0x17, 0x61, 0xe6, 0xb0, 0x5d, 0x41, 0x45, 0xe9, 0x4d, 0x61, 0x49, 0xfd, 0xee, 0xc7, - 0x8a, 0xf4, 0xfd, 0x8f, 0x15, 0xe9, 0x77, 0x3f, 0x56, 0xa4, 0xbf, 0xfb, 0xa9, 0x72, 0xe2, 0xfb, - 0x9f, 0x2a, 0x27, 0x7e, 0xf3, 0x53, 0xe5, 0xc4, 0xa7, 0x77, 0x4b, 0x9e, 0x86, 0xde, 0xcc, 0x85, - 0xbf, 0x5f, 0xa4, 0x3f, 0x89, 0xdc, 0x3e, 0x4d, 0x7f, 0xa6, 0xb8, 0xf0, 0x87, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x96, 0xfe, 0x59, 0xd7, 0x6d, 0x3a, 0x00, 0x00, + // 3745 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5b, 0xcd, 0x6f, 0xdd, 0xc6, + 0x76, 0x37, 0x2d, 0xd9, 0x96, 0x8e, 0x24, 0x4b, 0x1a, 0x7d, 0x51, 0x1f, 0xbe, 0x92, 0xe9, 0x8f, + 0xc8, 0x5f, 0x57, 0xb6, 0xe4, 0x38, 0x76, 0x9a, 0x34, 0x95, 0x64, 0xd9, 0xb9, 0x8e, 0x22, 0xcb, + 0x94, 0x6c, 0x39, 0x71, 0x62, 0x96, 0xba, 0x1c, 0x49, 0x84, 0x79, 0xc9, 0x1b, 0x0e, 0xaf, 0x6c, + 0x21, 0x68, 0x8b, 0x76, 0xd1, 0x2c, 0x8a, 0x02, 0x6d, 0x91, 0x7e, 0xa4, 0xc8, 0xaa, 0xdd, 0x14, + 0xe8, 0xa6, 0x40, 0xbb, 0x29, 0xd0, 0xee, 0xf3, 0xde, 0x2a, 0xef, 0xad, 0x1e, 0xde, 0x22, 0x78, + 0x48, 0x16, 0xef, 0xdf, 0x78, 0xe0, 0x7c, 0xf0, 0x9b, 0x14, 0x75, 0x95, 0x8d, 0x20, 0xce, 0xcc, + 0xf9, 0x9d, 0xdf, 0xcc, 0x39, 0x3c, 0x33, 0x73, 0x78, 0x2e, 0x4c, 0xe2, 0x86, 0x49, 0x88, 0xe9, + 0xd8, 0x64, 0x6e, 0xff, 0xd6, 0xcd, 0xb9, 0x5d, 0x6c, 0x63, 0x62, 0x92, 0x6a, 0xd3, 0x75, 0x3c, + 0x07, 0xf5, 0x05, 0x9d, 0xd5, 0xfd, 0x5b, 0x37, 0x27, 0x06, 0xf5, 0x86, 0x69, 0x3b, 0x73, 0xf4, + 0x2f, 0x1b, 0x31, 0x31, 0x5e, 0x77, 0x48, 0xc3, 0x21, 0x1a, 0x7d, 0x9a, 0x63, 0x0f, 0xbc, 0xeb, + 0x5c, 0x1c, 0xd9, 0xb4, 0x77, 0xb0, 0x8b, 0xed, 0x3a, 0xe6, 0xdd, 0x97, 0xe2, 0xdd, 0x36, 0xf6, + 0x5e, 0x3b, 0xee, 0x2b, 0x2d, 0x39, 0x6c, 0x3c, 0x3e, 0xcc, 0x73, 0x9a, 0x66, 0x9d, 0x77, 0x8d, + 0x45, 0xba, 0x16, 0xe6, 0x6c, 0xc7, 0x10, 0x32, 0x72, 0xa2, 0x23, 0x44, 0x9b, 0x88, 0xf5, 0xb8, + 0xb8, 0xd9, 0xf2, 0xb0, 0x9b, 0x29, 0x45, 0xea, 0x8e, 0x9b, 0x8d, 0x47, 0x3c, 0xfd, 0x55, 0x76, + 0x8f, 0x77, 0xd0, 0xc4, 0x62, 0xf6, 0xd3, 0xb1, 0x9e, 0x7d, 0xdd, 0x6a, 0x61, 0x6d, 0xbb, 0x65, + 0x1b, 0x56, 0xd6, 0xc4, 0x16, 0xe6, 0xfc, 0xb9, 0x07, 0x4c, 0xa2, 0x5d, 0xf7, 0xe6, 0x9a, 0xba, + 0xab, 0x37, 0x04, 0xec, 0xf0, 0xae, 0xb3, 0xeb, 0xb0, 0xc5, 0xf6, 0xff, 0x63, 0xad, 0xca, 0x37, + 0x8f, 0xa0, 0xf7, 0x21, 0xb3, 0xdc, 0x86, 0xa7, 0x7b, 0x18, 0xcd, 0xc3, 0x69, 0x26, 0x26, 0x4b, + 0x33, 0xd2, 0x6c, 0xcf, 0xfc, 0x70, 0x35, 0x62, 0xc9, 0x7b, 0xd5, 0x75, 0xda, 0xb7, 0xd4, 0xf9, + 0xdd, 0x0f, 0xd3, 0x27, 0x54, 0x3e, 0x12, 0x55, 0x61, 0xc8, 0x9f, 0xb3, 0xe6, 0x61, 0xbd, 0xa1, + 0xe9, 0x86, 0xe1, 0x62, 0x42, 0x30, 0x91, 0x4f, 0xce, 0x74, 0xcc, 0x76, 0xab, 0x83, 0x7e, 0xd7, + 0x26, 0xd6, 0x1b, 0x8b, 0xa2, 0x03, 0x29, 0xd0, 0x67, 0xe3, 0x37, 0x9e, 0x46, 0x4d, 0xa2, 0x99, + 0x86, 0xdc, 0x31, 0x23, 0xcd, 0x76, 0xaa, 0x3d, 0x7e, 0xe3, 0xa6, 0xdf, 0x56, 0x33, 0xd0, 0x1d, + 0x38, 0x4d, 0xbb, 0x89, 0xdc, 0x39, 0xd3, 0x31, 0xdb, 0x33, 0x5f, 0xa9, 0xc6, 0x3c, 0xaa, 0xca, + 0xc7, 0x2d, 0xda, 0x06, 0xfd, 0x4f, 0xe5, 0xa3, 0xd1, 0x05, 0xe8, 0xd3, 0xeb, 0x9e, 0xb9, 0x8f, + 0x35, 0x2e, 0x7e, 0x6a, 0xa6, 0x63, 0xb6, 0x53, 0xed, 0x65, 0x8d, 0x9b, 0x6c, 0xd0, 0x35, 0x18, + 0x74, 0xf1, 0x6b, 0xdd, 0x35, 0xf4, 0x6d, 0x2b, 0x18, 0x78, 0x9a, 0x0e, 0x1c, 0x08, 0x3b, 0xf8, + 0xe0, 0x65, 0xe8, 0x63, 0x44, 0xd9, 0x4a, 0x13, 0xf9, 0x4c, 0x3e, 0xa1, 0x45, 0xdb, 0x58, 0xac, + 0x7b, 0x8e, 0x5b, 0x33, 0xd4, 0x5e, 0x2a, 0xb4, 0xc5, 0x64, 0xd0, 0x0a, 0x9c, 0x65, 0x20, 0xdc, + 0x73, 0x88, 0xdc, 0x55, 0x0a, 0x85, 0xa9, 0x56, 0xb9, 0x10, 0x52, 0x01, 0x09, 0x18, 0x9f, 0xa5, + 0x46, 0x3d, 0x54, 0xee, 0xa6, 0x50, 0x17, 0x73, 0x57, 0x68, 0xc9, 0x72, 0xea, 0xaf, 0x3e, 0xc4, + 0xe6, 0xee, 0x9e, 0xa7, 0x0e, 0x70, 0x40, 0x5f, 0x7c, 0xcd, 0x97, 0x46, 0x2f, 0x61, 0x8c, 0xbd, + 0x3a, 0xae, 0x46, 0x5d, 0x97, 0x68, 0xdb, 0x07, 0xda, 0xb6, 0x2f, 0x22, 0x03, 0x05, 0x7e, 0x2b, + 0x1b, 0x38, 0x82, 0xba, 0x41, 0xe5, 0xd4, 0x61, 0x8e, 0xc3, 0x1e, 0x97, 0x0e, 0xe8, 0x08, 0x64, + 0xc0, 0xc4, 0x8e, 0xe3, 0xe2, 0xba, 0x4e, 0xbc, 0x0c, 0x15, 0x3d, 0x47, 0x53, 0x31, 0x16, 0x42, + 0xc5, 0xb5, 0xbc, 0x84, 0x31, 0xbe, 0xb4, 0x29, 0x15, 0xbd, 0x47, 0x9c, 0x05, 0xc7, 0x89, 0xe3, + 0xb7, 0xe0, 0x9c, 0xc0, 0xb7, 0x4c, 0xe2, 0x61, 0xdb, 0xb4, 0x77, 0xb5, 0xba, 0x83, 0x77, 0x76, + 0xcc, 0xba, 0x89, 0x6d, 0x4f, 0x1e, 0xa0, 0x5a, 0x6e, 0xe5, 0x18, 0x81, 0x99, 0x73, 0x55, 0x48, + 0x2e, 0x87, 0x82, 0xea, 0x24, 0xc7, 0xcd, 0xea, 0x44, 0x26, 0xcc, 0x34, 0x5d, 0xbc, 0x6f, 0x3a, + 0x2d, 0x22, 0x5c, 0x47, 0xd8, 0x7e, 0xc7, 0xf5, 0x7d, 0xda, 0xb1, 0xe5, 0x41, 0xaa, 0x79, 0xa6, + 0x50, 0xf3, 0x7d, 0x5c, 0x57, 0xcf, 0x09, 0x24, 0xee, 0x4e, 0xcc, 0x09, 0x1e, 0x70, 0x18, 0xd4, + 0x00, 0x25, 0x50, 0x15, 0xc4, 0xd2, 0x94, 0x32, 0x54, 0x52, 0xd9, 0xb4, 0xc0, 0xaa, 0x09, 0xa8, + 0x84, 0xba, 0x57, 0x70, 0x3e, 0x50, 0x27, 0x8c, 0x9a, 0xd2, 0x36, 0x54, 0x52, 0x5b, 0x45, 0x40, + 0x3d, 0xe0, 0x48, 0x09, 0x65, 0x75, 0x98, 0x4e, 0x29, 0x13, 0x9e, 0xa2, 0xb9, 0xba, 0x67, 0x3a, + 0xf2, 0x30, 0x55, 0x35, 0x95, 0xfb, 0x12, 0xf9, 0x6a, 0xa6, 0x92, 0x6a, 0xb8, 0x97, 0xa8, 0x3e, + 0x02, 0x7a, 0x02, 0x3d, 0x9e, 0xe3, 0xe9, 0x96, 0x46, 0xe3, 0xbc, 0x3c, 0x32, 0x23, 0xcd, 0x76, + 0x2f, 0xdd, 0xf4, 0x23, 0xe5, 0x6f, 0x7f, 0x98, 0x1e, 0x61, 0x3b, 0x1c, 0x31, 0x5e, 0x55, 0x4d, + 0x67, 0xae, 0xa1, 0x7b, 0x7b, 0xd5, 0x9a, 0xed, 0xfd, 0xfa, 0x7f, 0x6e, 0x00, 0xdf, 0xfa, 0x6a, + 0xb6, 0xf7, 0x1f, 0xbf, 0xff, 0xaf, 0xab, 0x92, 0x0a, 0x14, 0x64, 0xc3, 0xc7, 0x40, 0xef, 0xfb, + 0x90, 0xfe, 0xfb, 0xce, 0x20, 0x47, 0x0f, 0xe1, 0x58, 0xb3, 0x3d, 0x5f, 0xbc, 0x69, 0xd6, 0x99, + 0xf8, 0x73, 0x18, 0xa3, 0x82, 0x81, 0xeb, 0xe8, 0x2d, 0x6f, 0xcf, 0x71, 0x4d, 0xef, 0x40, 0x1e, + 0x2b, 0xb1, 0xb2, 0x3e, 0xdc, 0x08, 0x05, 0xe0, 0x1e, 0xb3, 0x28, 0xc4, 0xd1, 0x27, 0x20, 0x33, + 0x64, 0xd2, 0x6a, 0x68, 0x3b, 0xae, 0xd3, 0xd0, 0x0c, 0x6c, 0xe1, 0x5d, 0xdd, 0x73, 0x5c, 0x59, + 0x3e, 0x12, 0xf4, 0x46, 0xab, 0xf1, 0xc0, 0x75, 0x1a, 0xf7, 0x85, 0x38, 0x7a, 0x09, 0x03, 0x1c, + 0x0b, 0x1b, 0x6c, 0xde, 0x44, 0x1e, 0xa7, 0x90, 0x0b, 0xd9, 0x90, 0x81, 0x28, 0x67, 0x19, 0x3c, + 0xd7, 0xec, 0x1d, 0x47, 0xed, 0x0f, 0xc0, 0xe8, 0x9a, 0x10, 0x64, 0x81, 0xc2, 0xa8, 0xc7, 0x69, + 0x13, 0xad, 0xd5, 0x74, 0x6c, 0xb1, 0x52, 0xf2, 0x44, 0xc9, 0x49, 0x54, 0x28, 0x56, 0x6c, 0x06, + 0xe4, 0x69, 0xd3, 0xb1, 0x39, 0x17, 0xf4, 0x02, 0xc6, 0x05, 0x01, 0xe1, 0xdd, 0x4d, 0xdf, 0xf3, + 0xf6, 0x74, 0x17, 0xcb, 0x93, 0x25, 0xdd, 0x7b, 0x54, 0x40, 0x30, 0xb7, 0x5e, 0xc7, 0xee, 0x86, + 0x2f, 0x8f, 0x9c, 0xd0, 0xbe, 0x0d, 0x67, 0x5f, 0xb7, 0x22, 0x41, 0x6f, 0x8a, 0x42, 0xdf, 0x4d, + 0x40, 0x47, 0xa2, 0x1d, 0xd7, 0xc2, 0x79, 0x6e, 0x30, 0x2b, 0x53, 0x14, 0xba, 0x6c, 0xc3, 0x24, + 0xd2, 0x12, 0x44, 0x41, 0x2d, 0x4b, 0xa1, 0xee, 0x13, 0x95, 0xcf, 0x51, 0x85, 0xb3, 0x09, 0x85, + 0x7c, 0x12, 0xe9, 0x60, 0x9b, 0x52, 0x40, 0x47, 0xa2, 0xbf, 0x97, 0x60, 0x26, 0x58, 0xaf, 0xbc, + 0xb9, 0x55, 0xa8, 0xaa, 0xda, 0xa1, 0x73, 0xcb, 0x71, 0x0c, 0x9c, 0x9a, 0xec, 0x94, 0x91, 0xd1, + 0x13, 0x4c, 0xfa, 0xa0, 0x90, 0x12, 0x9b, 0xfd, 0x74, 0x66, 0xf4, 0x4f, 0x12, 0xc8, 0x58, 0x86, + 0x3c, 0xd5, 0x6c, 0x39, 0x1e, 0x00, 0x04, 0xa1, 0x98, 0xc8, 0x33, 0x54, 0xc9, 0xe5, 0x43, 0x7c, + 0x52, 0x84, 0xdb, 0x88, 0x24, 0x5a, 0x86, 0x6e, 0x11, 0xf6, 0x88, 0x7c, 0x9e, 0xc2, 0x5c, 0x2a, + 0x84, 0x09, 0xe2, 0x68, 0x28, 0x87, 0x16, 0xe1, 0x8c, 0x38, 0x02, 0x29, 0x99, 0x5b, 0xea, 0xaa, + 0xb9, 0xbd, 0x3e, 0xdf, 0xfc, 0x08, 0x1f, 0x2c, 0xda, 0xc6, 0xe3, 0x9d, 0x9d, 0xfa, 0x9e, 0x6e, + 0xda, 0x6b, 0x8e, 0x81, 0x55, 0x21, 0x87, 0x96, 0xa1, 0x2b, 0x38, 0x00, 0x5d, 0x38, 0x1a, 0x46, + 0x20, 0x88, 0x3e, 0x84, 0x41, 0x16, 0x14, 0x77, 0xb0, 0x6f, 0x8a, 0x7d, 0x6c, 0xb7, 0xb0, 0x7c, + 0xb1, 0x44, 0x68, 0xec, 0xa7, 0x62, 0x0f, 0x30, 0x56, 0x99, 0x10, 0x5a, 0x87, 0x91, 0x60, 0x5b, + 0xe0, 0x67, 0x3c, 0x6a, 0x15, 0xf9, 0x52, 0x89, 0xcd, 0x60, 0x48, 0x88, 0xd2, 0xe6, 0x2d, 0x2a, + 0x88, 0x54, 0x38, 0xab, 0x5b, 0x96, 0x16, 0x31, 0xda, 0x65, 0x0a, 0x75, 0xed, 0xd0, 0xd3, 0x47, + 0x60, 0x38, 0xa2, 0xf6, 0xe9, 0x96, 0x15, 0x3e, 0xa2, 0xc7, 0xe0, 0x37, 0x68, 0xa1, 0x01, 0xdf, + 0xa2, 0x90, 0x57, 0x0f, 0x85, 0x14, 0x46, 0x24, 0x6a, 0xaf, 0x6e, 0x59, 0xc1, 0x93, 0x1f, 0x61, + 0x7d, 0x40, 0xcb, 0x21, 0x84, 0xdf, 0x2c, 0x88, 0x3c, 0x4b, 0x31, 0x6f, 0x1f, 0x8a, 0xc9, 0x3d, + 0xf9, 0x99, 0x7f, 0x2d, 0x59, 0x62, 0xb2, 0xaa, 0x3f, 0xe5, 0x55, 0x87, 0x10, 0xfe, 0x8c, 0x34, + 0x18, 0x16, 0x97, 0xb2, 0x98, 0x8e, 0x2b, 0x54, 0xc7, 0x8d, 0x43, 0x75, 0xc4, 0xc0, 0x11, 0x87, + 0x8a, 0x2a, 0xf8, 0x17, 0x09, 0x6e, 0x04, 0x86, 0x6b, 0x62, 0xb7, 0x8e, 0x6d, 0x4f, 0xdf, 0x0d, + 0x02, 0xac, 0xe7, 0xb0, 0xf7, 0xd4, 0x08, 0x4f, 0xdb, 0x57, 0xe9, 0x66, 0xfc, 0x0e, 0xdf, 0x8c, + 0xe7, 0x76, 0x4d, 0x6f, 0xaf, 0xb5, 0x5d, 0xad, 0x3b, 0x8d, 0x39, 0xdd, 0xb2, 0x1c, 0x57, 0xbf, + 0xc1, 0xb5, 0x88, 0x47, 0xea, 0x77, 0x6c, 0x9b, 0xf6, 0x6d, 0x3d, 0x2b, 0xb4, 0xad, 0x07, 0xca, + 0x58, 0x28, 0xde, 0x74, 0xe8, 0x7b, 0x6b, 0x04, 0x27, 0xf4, 0x17, 0x30, 0xde, 0xb2, 0x77, 0x5a, + 0xd6, 0x8e, 0x69, 0x59, 0xd8, 0xe0, 0x77, 0x06, 0x76, 0x4e, 0x27, 0xf2, 0x35, 0xba, 0x00, 0xd3, + 0xb9, 0x6e, 0x45, 0x0f, 0xe4, 0x44, 0x1d, 0x8b, 0x20, 0xb0, 0x0b, 0x04, 0xeb, 0x40, 0xaf, 0x60, + 0x22, 0x0a, 0x2e, 0x76, 0x75, 0x8e, 0x7e, 0xbd, 0x68, 0x79, 0x17, 0x6d, 0x23, 0x38, 0xf6, 0x7d, + 0xd1, 0xc2, 0xc4, 0xe3, 0xba, 0xe4, 0x08, 0x20, 0x1f, 0xc0, 0x95, 0xb9, 0x50, 0xb1, 0x74, 0x0f, + 0x13, 0x4f, 0x13, 0xd7, 0x03, 0x61, 0x54, 0x17, 0xef, 0xba, 0xd8, 0x23, 0xf2, 0x8d, 0x42, 0x85, + 0x3c, 0xf2, 0x9b, 0x0d, 0x3f, 0xb4, 0x35, 0x9a, 0xd8, 0xa0, 0x66, 0x55, 0x27, 0x19, 0x28, 0xf3, + 0x6f, 0x77, 0x8d, 0x41, 0xaa, 0x0c, 0x11, 0xbd, 0x81, 0xf3, 0x5c, 0x67, 0xe4, 0x94, 0x96, 0x54, + 0x5b, 0x6d, 0x47, 0x2d, 0x9f, 0x4b, 0x78, 0x70, 0x4b, 0x68, 0xfe, 0x1b, 0x09, 0x66, 0xb9, 0x6a, + 0xc7, 0xc6, 0x9a, 0x69, 0x17, 0x31, 0x98, 0x2b, 0x7a, 0x59, 0x38, 0x83, 0x3c, 0x22, 0x17, 0x98, + 0x96, 0xc7, 0x36, 0xae, 0xd9, 0xb9, 0x6c, 0xfe, 0x0c, 0x2e, 0x72, 0x32, 0xb6, 0xee, 0xdf, 0x65, + 0xf3, 0x2c, 0x70, 0xb3, 0x9d, 0xa5, 0x98, 0x61, 0xd0, 0x6b, 0x3e, 0x72, 0xb6, 0x19, 0xfe, 0x49, + 0x82, 0x6a, 0x64, 0x31, 0x9c, 0x56, 0xe8, 0x03, 0x79, 0x4c, 0x6e, 0x1d, 0x63, 0x49, 0x66, 0x83, + 0x25, 0x79, 0xdc, 0x12, 0x8e, 0x91, 0x4d, 0xec, 0x5b, 0x09, 0x6e, 0xe5, 0x10, 0x2b, 0x30, 0xd7, + 0xfc, 0x31, 0xb8, 0x5d, 0xcb, 0xe0, 0x96, 0x6b, 0xb6, 0x0c, 0x7a, 0x11, 0x5a, 0x79, 0x4b, 0xb7, + 0xf0, 0x73, 0xd1, 0x0b, 0x79, 0x65, 0xaf, 0xde, 0xbf, 0x49, 0x70, 0x3b, 0x9f, 0x5e, 0xc1, 0x02, + 0xde, 0x3e, 0x06, 0xc3, 0x6a, 0x36, 0xc3, 0xdc, 0x35, 0x34, 0x40, 0x66, 0x5b, 0xb1, 0xe5, 0x5f, + 0x08, 0x79, 0xfc, 0xac, 0x3b, 0x8d, 0x86, 0xe9, 0xc9, 0x6f, 0x17, 0xed, 0xa5, 0xbe, 0x66, 0xc2, + 0x34, 0x53, 0x2e, 0x34, 0x8c, 0xa9, 0x23, 0x14, 0x6c, 0x55, 0x27, 0x1e, 0x8b, 0xa4, 0xcb, 0x14, + 0x09, 0xed, 0xc0, 0x78, 0x44, 0x8b, 0x08, 0xa4, 0x5c, 0xcd, 0x9d, 0xa3, 0xab, 0x19, 0x0d, 0xd4, + 0xf0, 0x20, 0xca, 0xf5, 0x3c, 0x85, 0x21, 0xa7, 0x89, 0x6d, 0x31, 0x8f, 0xd7, 0xa6, 0x6d, 0x38, + 0xaf, 0x89, 0xfc, 0x4e, 0xe6, 0x11, 0x2c, 0xb2, 0x05, 0x8a, 0xbc, 0x56, 0xcd, 0x20, 0xea, 0xa0, + 0x8f, 0xc0, 0xd8, 0x6f, 0x31, 0x79, 0xb4, 0x0a, 0xfd, 0x94, 0xb8, 0xe1, 0x9a, 0x4d, 0x7e, 0x28, + 0xbe, 0x7b, 0x84, 0x24, 0x50, 0x9f, 0x2f, 0x7c, 0xdf, 0x35, 0x9b, 0x22, 0xb7, 0x71, 0x89, 0x2d, + 0x86, 0xe7, 0x68, 0x34, 0x31, 0xd7, 0x74, 0x08, 0x31, 0xb7, 0x2d, 0xac, 0xd5, 0xf7, 0x5a, 0x2e, + 0xcd, 0x74, 0x30, 0x1d, 0xf7, 0x8e, 0xa0, 0x63, 0x86, 0x42, 0x6e, 0x3a, 0x6b, 0xf8, 0x8d, 0xb7, + 0xce, 0xf1, 0x96, 0x39, 0x1c, 0x53, 0xbb, 0x05, 0xa3, 0x14, 0xd6, 0x57, 0x1b, 0xcf, 0xd9, 0xbd, + 0x4b, 0xf5, 0x28, 0x87, 0x1e, 0xf0, 0x89, 0x3a, 0x44, 0x11, 0x36, 0x9d, 0xc5, 0x68, 0x7a, 0xef, + 0x0d, 0x5c, 0x08, 0x80, 0x2d, 0xe7, 0xb5, 0xef, 0xef, 0x51, 0x7c, 0x71, 0xc8, 0xfb, 0xa3, 0x4c, + 0x33, 0xa7, 0xb5, 0xb0, 0xa3, 0xdd, 0xba, 0x6e, 0xba, 0x6a, 0x85, 0xab, 0x5b, 0xa5, 0xa8, 0x11, + 0xa5, 0xfc, 0xf8, 0xb7, 0x0e, 0x28, 0x96, 0x4b, 0xd3, 0x70, 0x43, 0x27, 0xf2, 0x7b, 0x99, 0xd3, + 0x89, 0xbf, 0x3e, 0x2c, 0x8f, 0x30, 0x10, 0xcd, 0xa0, 0xad, 0x34, 0x74, 0x82, 0x9e, 0xc1, 0x48, + 0x2a, 0x61, 0x41, 0x41, 0xdf, 0x2f, 0x0d, 0x3a, 0x94, 0xc8, 0x99, 0x51, 0xdc, 0x75, 0x40, 0xb1, + 0x7c, 0x19, 0x03, 0xfd, 0xe3, 0xf2, 0x4c, 0xa3, 0x59, 0x32, 0x8a, 0xd8, 0x82, 0x2b, 0x89, 0xc3, + 0xf4, 0x17, 0x2d, 0xdd, 0xf6, 0x4c, 0x2b, 0xdc, 0xbe, 0x02, 0x4d, 0xf2, 0x07, 0x25, 0x0e, 0xd8, + 0x17, 0x63, 0x07, 0xec, 0x27, 0x1c, 0xac, 0x16, 0x5f, 0x21, 0xf4, 0x25, 0x5c, 0xcf, 0x53, 0x9b, + 0xb5, 0x70, 0xf2, 0x9f, 0x94, 0xd0, 0xfc, 0x56, 0xa6, 0xe6, 0x07, 0xa9, 0x65, 0x2c, 0x9a, 0x73, + 0x6a, 0x75, 0xe5, 0xc5, 0xb6, 0xe7, 0xac, 0xc6, 0xd7, 0x1a, 0xfd, 0xa5, 0x04, 0xd7, 0xeb, 0x4e, + 0xcb, 0x8e, 0x6e, 0xcb, 0x75, 0xab, 0x45, 0x41, 0xfd, 0xa3, 0x0b, 0xa3, 0xc2, 0x7d, 0x9e, 0x60, + 0x4f, 0x5e, 0xa2, 0xaa, 0x2f, 0x14, 0xda, 0xf5, 0xa9, 0x69, 0x7b, 0x77, 0x6e, 0xab, 0x97, 0x29, + 0x70, 0xb0, 0x0b, 0x0b, 0xd8, 0x9a, 0xcd, 0x52, 0xd3, 0x14, 0x73, 0x03, 0x7b, 0xe8, 0x2b, 0x09, + 0xe6, 0x18, 0x87, 0xd8, 0x16, 0x57, 0x48, 0x63, 0xb9, 0x3c, 0x8d, 0x2b, 0x14, 0x3b, 0xba, 0xa3, + 0xe5, 0x32, 0x79, 0x08, 0xfd, 0x5c, 0x07, 0x5f, 0x0d, 0x22, 0xdf, 0x2f, 0x95, 0x5c, 0x3f, 0xcb, + 0xc4, 0xf8, 0x5c, 0x09, 0xfa, 0x18, 0x10, 0x07, 0x0a, 0xa7, 0x44, 0xe4, 0x95, 0x52, 0x58, 0x83, + 0x4c, 0x32, 0x24, 0xec, 0x5f, 0x05, 0x64, 0x1e, 0x7d, 0xd2, 0xfe, 0xff, 0xa0, 0xf4, 0x8b, 0x36, + 0xc2, 0x30, 0x92, 0x6e, 0xaf, 0xc3, 0x24, 0x07, 0xcf, 0xf4, 0xf2, 0x87, 0xa5, 0xf1, 0x39, 0xc7, + 0x0c, 0xe7, 0x0e, 0xd7, 0x35, 0xb8, 0x46, 0x7d, 0x78, 0x94, 0x75, 0x8d, 0xdc, 0x89, 0xc4, 0x42, + 0xa4, 0x5f, 0x8a, 0xda, 0x51, 0x17, 0x22, 0xf9, 0x2e, 0xa8, 0xd0, 0x1b, 0xbb, 0x64, 0x3e, 0xa2, + 0x80, 0x73, 0xd9, 0x80, 0xc1, 0x15, 0x28, 0x79, 0x89, 0x55, 0x7b, 0xac, 0xc8, 0xfd, 0xf2, 0x2f, + 0x60, 0x86, 0x67, 0x72, 0x5b, 0x0d, 0x2d, 0x33, 0x43, 0x40, 0xe4, 0x8f, 0x8e, 0x77, 0xa3, 0x9c, + 0x62, 0x59, 0xde, 0x56, 0x63, 0x3d, 0x9d, 0x45, 0x20, 0x88, 0xc0, 0x39, 0x7e, 0x97, 0xad, 0xb7, + 0x5c, 0x17, 0xdb, 0x1e, 0xdb, 0x80, 0x35, 0x31, 0x29, 0x79, 0xb5, 0xcd, 0xe4, 0xf2, 0x04, 0x83, + 0x5d, 0x66, 0xa8, 0x74, 0xaf, 0x5b, 0xe1, 0x98, 0xe8, 0x0a, 0x0c, 0xbc, 0xde, 0x33, 0x3d, 0x6c, + 0x99, 0xfe, 0x86, 0x69, 0x34, 0x4c, 0x9b, 0xc8, 0x1f, 0xd3, 0x6f, 0x78, 0xfd, 0x41, 0xfb, 0x22, + 0x6d, 0xf6, 0x87, 0xee, 0x5a, 0xce, 0xb6, 0x6e, 0x69, 0x41, 0x8f, 0xbc, 0xc6, 0x86, 0xb2, 0xf6, + 0x2d, 0xd1, 0x8c, 0xee, 0xc0, 0x18, 0x5b, 0xb8, 0xba, 0x8b, 0x75, 0xcf, 0x71, 0x23, 0x12, 0x8f, + 0xa9, 0x04, 0x3b, 0xa1, 0x2d, 0xb3, 0xde, 0x50, 0x6e, 0x13, 0x46, 0xa3, 0x9f, 0xdd, 0x22, 0x62, + 0xeb, 0xa5, 0x9c, 0x70, 0x38, 0xf2, 0xfd, 0x2d, 0x44, 0x7d, 0x26, 0xd8, 0x08, 0x4f, 0x0c, 0x61, + 0x9f, 0x94, 0x82, 0x1d, 0x89, 0x7e, 0x90, 0x0b, 0x71, 0x97, 0xa1, 0x92, 0xcd, 0x56, 0xc3, 0xb6, + 0xbe, 0x6d, 0x61, 0x43, 0x56, 0xe9, 0xe7, 0xc5, 0xc9, 0x2c, 0x56, 0x2b, 0x6c, 0x08, 0x5a, 0x81, + 0xe9, 0x1c, 0x72, 0x01, 0xca, 0x06, 0x45, 0x99, 0xca, 0x24, 0x21, 0x60, 0x54, 0x18, 0xa5, 0x87, + 0xc3, 0x06, 0x36, 0x4c, 0xdd, 0x8e, 0xe6, 0xa2, 0x36, 0x4b, 0xec, 0x40, 0xc3, 0xbe, 0xec, 0xc7, + 0x54, 0xb4, 0x16, 0x4d, 0x20, 0x9e, 0x6d, 0xe8, 0x46, 0x14, 0xeb, 0x69, 0x09, 0xac, 0xbe, 0x86, + 0x6e, 0x44, 0x40, 0xb6, 0x60, 0xdc, 0xb4, 0x4d, 0xcf, 0xd4, 0xad, 0x20, 0x22, 0xe2, 0x86, 0xce, + 0x82, 0x81, 0xfc, 0xac, 0x04, 0xde, 0x28, 0x17, 0xe7, 0xc1, 0x70, 0xa5, 0xa1, 0xd3, 0x30, 0x80, + 0x3e, 0x87, 0x29, 0x01, 0x1c, 0x89, 0x86, 0x21, 0xf6, 0x56, 0x09, 0x6c, 0x41, 0x2d, 0x0c, 0x84, + 0x01, 0x7c, 0x84, 0xb7, 0xb0, 0x4c, 0x88, 0xfd, 0xfc, 0x08, 0xbc, 0xb9, 0xc5, 0x02, 0xe0, 0x3b, + 0x30, 0x26, 0x5e, 0xa3, 0xa4, 0x93, 0x7f, 0xc2, 0xde, 0x0d, 0xfe, 0x36, 0x25, 0xbc, 0xf8, 0x2e, + 0xc8, 0x5c, 0x2e, 0xed, 0xc6, 0x9f, 0x52, 0xc1, 0x51, 0xd6, 0x9f, 0xf2, 0xd3, 0xdb, 0xc0, 0x7b, + 0xd8, 0x0b, 0x1e, 0x91, 0x7b, 0x41, 0xe5, 0x86, 0x59, 0x2f, 0x7d, 0xcd, 0x43, 0xa9, 0x27, 0xbe, + 0x47, 0x79, 0x2c, 0x80, 0xfb, 0xb7, 0x34, 0x8d, 0x78, 0x86, 0x66, 0x3b, 0x6e, 0x43, 0xfe, 0xac, + 0x4c, 0xa2, 0x94, 0xc9, 0xb2, 0x0b, 0xde, 0x86, 0x67, 0xac, 0x39, 0x6e, 0x03, 0x3d, 0x0b, 0x20, + 0x85, 0x2b, 0x88, 0xc0, 0xfa, 0x79, 0xc9, 0x8f, 0x22, 0xc3, 0xb1, 0x44, 0x92, 0x88, 0x9c, 0x9f, + 0xc1, 0x78, 0x3a, 0x83, 0x24, 0xa0, 0x5f, 0x96, 0x84, 0x1e, 0x4b, 0x26, 0x8b, 0x42, 0x74, 0x94, + 0x2a, 0x37, 0x21, 0xb2, 0xd6, 0x4e, 0x5e, 0x73, 0x90, 0x03, 0x45, 0xde, 0x8f, 0x3f, 0x87, 0x8b, + 0x4e, 0xcb, 0xb3, 0x4c, 0xfa, 0x8d, 0x97, 0x98, 0xc4, 0xd3, 0x6d, 0x4f, 0xcb, 0xd0, 0xf7, 0xa7, + 0xed, 0xe8, 0x3b, 0xcf, 0xa1, 0x55, 0x81, 0xbc, 0x96, 0xd2, 0xef, 0x82, 0x9c, 0xd2, 0xc6, 0xf7, + 0x55, 0xb9, 0x9e, 0xf9, 0x3d, 0x29, 0xad, 0x33, 0x89, 0x2a, 0xd4, 0x8f, 0xda, 0x99, 0x1d, 0xe8, + 0x6b, 0x09, 0xae, 0x96, 0x98, 0xb4, 0xa0, 0x61, 0x1c, 0x93, 0xc6, 0xe5, 0xc3, 0x56, 0x81, 0xd3, + 0x32, 0xc5, 0xee, 0x63, 0xe9, 0xdb, 0xd8, 0x7f, 0xcd, 0x76, 0x4d, 0xe2, 0xb9, 0x26, 0x26, 0x32, + 0x2e, 0xfa, 0x14, 0x19, 0x61, 0xb0, 0xd2, 0x74, 0xea, 0x7b, 0xab, 0xbe, 0xb4, 0xca, 0x84, 0x0f, + 0xf8, 0x96, 0x14, 0x6d, 0x33, 0x31, 0x41, 0x9f, 0x8a, 0x2d, 0x89, 0x06, 0x6d, 0xec, 0x8b, 0x89, + 0x8c, 0xee, 0x4e, 0xe1, 0x79, 0xd9, 0x36, 0xa8, 0x0e, 0x96, 0x80, 0x18, 0x0e, 0x12, 0x10, 0x61, + 0x23, 0x41, 0x7b, 0x30, 0xd6, 0x70, 0x6c, 0x6f, 0xcf, 0x3a, 0x48, 0x54, 0x0f, 0x10, 0x59, 0x6f, + 0xf3, 0x04, 0x31, 0xc2, 0x01, 0x63, 0x45, 0x04, 0x04, 0x19, 0x20, 0x3a, 0xb4, 0x68, 0x85, 0x0a, + 0x91, 0xb7, 0xdb, 0xd4, 0x33, 0xc4, 0xe1, 0x36, 0xc3, 0x7a, 0x15, 0xf2, 0xa8, 0xb3, 0xab, 0x6f, + 0xe0, 0xec, 0xa3, 0xce, 0xae, 0xb3, 0x03, 0xfd, 0x8f, 0x3a, 0xbb, 0xfa, 0x07, 0x06, 0x12, 0xe9, + 0x64, 0x51, 0xb3, 0xc1, 0x02, 0x66, 0x3a, 0xe9, 0x9b, 0xe8, 0x9f, 0x12, 0x91, 0x29, 0x56, 0xf0, + 0xc1, 0x1f, 0x95, 0xe7, 0xd0, 0x9f, 0xa8, 0x32, 0x42, 0xe3, 0xd0, 0x15, 0x14, 0x2d, 0x49, 0xb4, + 0x68, 0xe9, 0x8c, 0xc7, 0x0b, 0x96, 0xae, 0xc2, 0x29, 0xfa, 0xaf, 0x7c, 0x32, 0x5d, 0x37, 0x25, + 0x8c, 0xa6, 0xb2, 0x21, 0xca, 0x43, 0x8e, 0x1c, 0x9e, 0x2b, 0x8a, 0x90, 0xc7, 0xa1, 0x8b, 0x7e, + 0x64, 0xf4, 0xbb, 0x7c, 0xf0, 0x6e, 0xf5, 0x8c, 0xce, 0xa4, 0x94, 0xa7, 0x30, 0x92, 0x99, 0x7d, + 0x29, 0x82, 0x3b, 0x0f, 0xbd, 0xec, 0x30, 0xb9, 0xc7, 0xd2, 0x20, 0x3e, 0x64, 0x87, 0xda, 0xb3, + 0x1d, 0x4a, 0x2b, 0xcf, 0x61, 0x38, 0xcb, 0xc9, 0x8a, 0x50, 0x2f, 0xc1, 0x29, 0x56, 0x8c, 0xe4, + 0xc3, 0x75, 0x2e, 0xf5, 0x73, 0x7b, 0x9f, 0xa1, 0x82, 0xcf, 0xe6, 0x55, 0xd6, 0xab, 0x3c, 0x87, + 0xd1, 0xec, 0x2c, 0x57, 0x8a, 0x96, 0x94, 0xa2, 0x85, 0x26, 0xa1, 0x5b, 0xa8, 0x67, 0xd5, 0x65, + 0x9d, 0x6a, 0x17, 0xd7, 0x4f, 0x94, 0xbf, 0x96, 0x40, 0xce, 0xab, 0xe9, 0x39, 0xde, 0x72, 0xa0, + 0xeb, 0x70, 0x9a, 0xd5, 0x14, 0xd1, 0x42, 0xb5, 0x84, 0x6d, 0x17, 0xaa, 0xbc, 0x6e, 0x88, 0x8f, + 0x51, 0xf6, 0x61, 0x28, 0xe3, 0xfa, 0xd2, 0x9e, 0x81, 0xd1, 0x15, 0x38, 0xc5, 0x8e, 0x19, 0x4c, + 0xf3, 0x50, 0x86, 0x66, 0x95, 0x8d, 0x50, 0x8c, 0xd0, 0x68, 0xd1, 0x9b, 0x74, 0x9b, 0x8a, 0x47, + 0xe1, 0x74, 0x8b, 0xca, 0xf3, 0xe2, 0x3c, 0xfe, 0xa4, 0xfc, 0xb7, 0x04, 0xca, 0xe1, 0x45, 0x4d, + 0x6d, 0x2a, 0xdd, 0x82, 0x91, 0xec, 0xe2, 0x2a, 0x36, 0x7b, 0x25, 0x3e, 0xfb, 0xcc, 0x6a, 0xaa, + 0x61, 0x2b, 0xa3, 0x55, 0xf9, 0x5a, 0x82, 0xc1, 0xd4, 0x36, 0xdf, 0x26, 0xc9, 0x1a, 0x74, 0x18, + 0xb8, 0x4e, 0x29, 0x1d, 0xe3, 0xfe, 0xe7, 0x63, 0x28, 0x36, 0xf4, 0xc5, 0xbe, 0x50, 0x17, 0x31, + 0x5a, 0x82, 0x0e, 0xd3, 0x66, 0xee, 0xd9, 0x4e, 0x38, 0xf5, 0x85, 0x95, 0xbf, 0x4d, 0x2d, 0x43, + 0xad, 0x6d, 0x5b, 0x71, 0x3e, 0x1d, 0xc7, 0xe1, 0xf3, 0xff, 0x12, 0x5c, 0x2c, 0x53, 0xc4, 0x53, + 0x44, 0x71, 0x0a, 0xba, 0xc3, 0xd2, 0x23, 0xc6, 0x31, 0x6c, 0x40, 0x32, 0x9c, 0x11, 0x15, 0x3d, + 0x1d, 0x8c, 0x3f, 0x7f, 0x44, 0x4b, 0x70, 0x36, 0x18, 0xe6, 0x9f, 0x33, 0x1c, 0xb9, 0x93, 0x3a, + 0xd9, 0x64, 0xdc, 0xc9, 0xe2, 0xc5, 0x44, 0x7d, 0x46, 0xf4, 0x51, 0xf9, 0x95, 0x04, 0x57, 0x4a, + 0x97, 0xd4, 0x94, 0x89, 0x70, 0xd1, 0x79, 0x9e, 0x8c, 0xcf, 0x33, 0x7f, 0x26, 0xab, 0x80, 0x62, + 0x65, 0x29, 0xd1, 0xd9, 0x54, 0x12, 0x01, 0x23, 0x59, 0xf9, 0x32, 0x40, 0x12, 0x2d, 0x8a, 0x07, + 0xe3, 0xb9, 0x45, 0x3b, 0x31, 0x7f, 0x90, 0xe2, 0xfe, 0x50, 0x40, 0x3d, 0x39, 0xf1, 0x8e, 0xf4, + 0x8e, 0xf3, 0xcd, 0x49, 0x78, 0xb7, 0xfd, 0x02, 0x9e, 0x63, 0x2e, 0x6d, 0xcc, 0x85, 0x3a, 0x0a, + 0x5c, 0xa8, 0x33, 0xbe, 0xf0, 0x18, 0x26, 0xb3, 0x0b, 0x83, 0x98, 0x05, 0x4e, 0x51, 0x0b, 0x5c, + 0xce, 0xf4, 0xa7, 0x74, 0x0d, 0x92, 0x6c, 0xe4, 0xf4, 0x28, 0xff, 0x2a, 0x81, 0x72, 0x78, 0x25, + 0x51, 0x7c, 0x16, 0x52, 0xc1, 0x2c, 0x4e, 0xc6, 0x67, 0x11, 0x5d, 0x98, 0x8e, 0x62, 0xc3, 0x75, + 0xa6, 0x0d, 0xf7, 0x95, 0x04, 0x63, 0x39, 0x15, 0x48, 0x6d, 0x06, 0x96, 0x3b, 0xd0, 0x1d, 0x1c, + 0xfb, 0x79, 0xe0, 0x97, 0x13, 0x87, 0xa9, 0xb0, 0xc8, 0x29, 0x1c, 0xaa, 0xfc, 0x95, 0x04, 0xa3, + 0xd9, 0x45, 0x4c, 0x6d, 0x12, 0x99, 0x87, 0x2e, 0x71, 0x87, 0xe4, 0x3c, 0x46, 0xe3, 0xb6, 0x0c, + 0x8a, 0xa4, 0x82, 0x71, 0xca, 0x97, 0x20, 0xe7, 0x55, 0x30, 0xa1, 0x0a, 0xf4, 0x58, 0xe6, 0xb6, + 0xd6, 0x9c, 0x6f, 0x6a, 0xaf, 0xf0, 0x81, 0x30, 0x91, 0x25, 0x86, 0xa3, 0x0f, 0xa0, 0xcf, 0xe1, + 0xe3, 0x35, 0xdb, 0x31, 0x30, 0x3f, 0x49, 0x4e, 0xc4, 0x95, 0xc6, 0x8a, 0xa2, 0x7a, 0x9d, 0xc8, + 0x93, 0xd2, 0x8a, 0x6e, 0x27, 0x87, 0x6c, 0x70, 0x7c, 0x17, 0x3b, 0xf9, 0x33, 0xec, 0x62, 0xff, + 0x2c, 0xc1, 0x54, 0x51, 0x3d, 0xd3, 0x31, 0x4f, 0x5f, 0xf7, 0x62, 0x35, 0x70, 0xcc, 0x10, 0xe3, + 0x79, 0x0e, 0x41, 0xa2, 0x65, 0x6f, 0xca, 0xff, 0x86, 0xfb, 0x4b, 0xe1, 0xcd, 0xec, 0x98, 0x0c, + 0x37, 0x60, 0x98, 0x5d, 0xdb, 0x62, 0x97, 0xc5, 0x03, 0xce, 0xf5, 0x7c, 0x82, 0x6b, 0xc6, 0xc5, + 0x10, 0xe1, 0x54, 0x9b, 0xf2, 0x0f, 0x12, 0x4c, 0x16, 0x94, 0x74, 0x1d, 0x93, 0xf2, 0xdb, 0xd1, + 0x82, 0x40, 0xc6, 0x73, 0x2c, 0xdb, 0xb9, 0x49, 0xa4, 0x04, 0x50, 0xf9, 0x3f, 0x09, 0x2e, 0x95, + 0xaa, 0x09, 0x3b, 0x26, 0xbd, 0xa7, 0x30, 0x22, 0xee, 0xab, 0xd1, 0x1f, 0xc0, 0x90, 0xac, 0x25, + 0x5d, 0xa8, 0x66, 0xd5, 0xa4, 0x0d, 0xb9, 0xe9, 0x46, 0xe5, 0x5b, 0x09, 0x2a, 0xc5, 0x69, 0x92, + 0x63, 0xf2, 0x7e, 0x0f, 0x7a, 0xa3, 0x7c, 0xb3, 0xbc, 0x75, 0xa1, 0x1a, 0xfb, 0xec, 0xb0, 0x1f, + 0x3e, 0x28, 0xbf, 0x94, 0xe0, 0x4a, 0xe9, 0x54, 0xc6, 0x31, 0x99, 0x6a, 0x05, 0xb9, 0x1e, 0xc6, + 0x3a, 0x59, 0x9d, 0x90, 0xcd, 0x23, 0x2f, 0xb1, 0xa3, 0xbc, 0x80, 0x81, 0x64, 0x61, 0x5b, 0x11, + 0xe5, 0xeb, 0x70, 0x9a, 0x27, 0x3d, 0x4e, 0x66, 0xdd, 0xb1, 0x78, 0xb5, 0x1a, 0x1f, 0xa3, 0xfc, + 0x63, 0x68, 0xc8, 0x9c, 0xc2, 0xb6, 0x22, 0x5d, 0xcf, 0x61, 0x34, 0xcc, 0x86, 0x50, 0x19, 0x2d, + 0xa6, 0x5b, 0xc9, 0x74, 0xaf, 0x78, 0xdd, 0x9c, 0xf8, 0x95, 0x48, 0xac, 0x55, 0xf9, 0xf7, 0x08, + 0xaf, 0xec, 0x7a, 0x98, 0x36, 0xf7, 0xa2, 0x8f, 0x60, 0xd0, 0x0b, 0x0b, 0x4f, 0xd8, 0x4b, 0xc1, + 0xed, 0x94, 0x38, 0xe2, 0x45, 0xea, 0x53, 0x58, 0x01, 0xce, 0x80, 0x97, 0x68, 0x51, 0x7e, 0x11, + 0xbe, 0xc5, 0xc5, 0xc5, 0x3b, 0x45, 0x64, 0x27, 0xa1, 0x5b, 0x90, 0xbd, 0xc5, 0xd9, 0x76, 0x71, + 0xb6, 0xb7, 0xa2, 0x9d, 0xf3, 0xfc, 0x44, 0x25, 0x3a, 0xe7, 0xb3, 0xe7, 0xd2, 0xd9, 0xe6, 0x5c, + 0x22, 0x9b, 0x4f, 0x66, 0x65, 0x4e, 0xd1, 0x14, 0x3e, 0x83, 0xb1, 0x28, 0x11, 0xc6, 0x38, 0xcc, + 0x62, 0x64, 0x54, 0xba, 0xe4, 0x94, 0x18, 0x65, 0x35, 0x2b, 0x36, 0x0c, 0x65, 0x54, 0xac, 0x94, + 0x39, 0xaa, 0xde, 0x8e, 0xe7, 0x39, 0x52, 0xc1, 0x39, 0xcc, 0x01, 0x92, 0x78, 0x02, 0x64, 0xaa, + 0xa8, 0x78, 0xa5, 0x8c, 0xe6, 0x65, 0xe8, 0x8d, 0x95, 0xc8, 0x30, 0xe5, 0x39, 0x09, 0xf3, 0x48, + 0x5d, 0x0c, 0xfb, 0x95, 0x0a, 0x6b, 0x50, 0xfe, 0x53, 0x82, 0x99, 0xc3, 0xbe, 0xb7, 0x16, 0x99, + 0x25, 0xff, 0xa8, 0xaa, 0xc2, 0x70, 0xd6, 0xb6, 0xc0, 0x5f, 0x84, 0x99, 0xc3, 0x76, 0x05, 0x15, + 0xa5, 0x37, 0x85, 0x25, 0xf5, 0xbb, 0x1f, 0x2b, 0xd2, 0xf7, 0x3f, 0x56, 0xa4, 0xdf, 0xfd, 0x58, + 0x91, 0xfe, 0xee, 0xa7, 0xca, 0x89, 0xef, 0x7f, 0xaa, 0x9c, 0xf8, 0xcd, 0x4f, 0x95, 0x13, 0x9f, + 0xde, 0x2d, 0x79, 0x1a, 0x7a, 0x33, 0x17, 0xfe, 0xea, 0x92, 0xfe, 0x90, 0x73, 0xfb, 0x34, 0xfd, + 0x71, 0xe5, 0xc2, 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xcf, 0xef, 0x1f, 0x23, 0x3b, 0x00, + 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -3185,6 +3245,22 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.TopicLastEpochNonces) > 0 { + for iNdEx := len(m.TopicLastEpochNonces) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TopicLastEpochNonces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6 + i-- + dAtA[i] = 0xb2 + } + } if len(m.TopicLabelRegistries) > 0 { for iNdEx := len(m.TopicLabelRegistries) - 1; iNdEx >= 0; iNdEx-- { { @@ -4784,6 +4860,39 @@ func (m *TopicIdAndBlockHeight) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TopicIdAndEpochNonce) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TopicIdAndEpochNonce) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TopicIdAndEpochNonce) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Nonce != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Nonce)) + i-- + dAtA[i] = 0x10 + } + if m.TopicId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.TopicId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *BlockHeightAndTopicIds) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6759,6 +6868,12 @@ func (m *GenesisState) Size() (n int) { n += 2 + l + sovGenesis(uint64(l)) } } + if len(m.TopicLastEpochNonces) > 0 { + for _, e := range m.TopicLastEpochNonces { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } return n } @@ -6809,6 +6924,21 @@ func (m *TopicIdAndBlockHeight) Size() (n int) { return n } +func (m *TopicIdAndEpochNonce) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.TopicId != 0 { + n += 1 + sovGenesis(uint64(m.TopicId)) + } + if m.Nonce != 0 { + n += 1 + sovGenesis(uint64(m.Nonce)) + } + return n +} + func (m *BlockHeightAndTopicIds) Size() (n int) { if m == nil { return 0 @@ -10906,6 +11036,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 102: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopicLastEpochNonces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TopicLastEpochNonces = append(m.TopicLastEpochNonces, &TopicIdAndEpochNonce{}) + if err := m.TopicLastEpochNonces[len(m.TopicLastEpochNonces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) @@ -11221,6 +11385,94 @@ func (m *TopicIdAndBlockHeight) Unmarshal(dAtA []byte) error { } return nil } +func (m *TopicIdAndEpochNonce) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TopicIdAndEpochNonce: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TopicIdAndEpochNonce: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TopicId", wireType) + } + m.TopicId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TopicId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Nonce", wireType) + } + m.Nonce = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Nonce |= NonceV2(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *BlockHeightAndTopicIds) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/emissions/types/keys.go b/x/emissions/types/keys.go index be1567232..b0fa53e06 100644 --- a/x/emissions/types/keys.go +++ b/x/emissions/types/keys.go @@ -135,4 +135,6 @@ var ( EpochsKey = collections.NewPrefix(109) EpochsByStateKeyPrefix = collections.NewPrefix(110) EpochsByStateAndTopicKeyPrefix = collections.NewPrefix(111) + // TopicLastEpochNonceKey stores the last allocated NonceV2 per topic for epoch sequencing. + TopicLastEpochNonceKey = collections.NewPrefix(112) ) From 35530f6a144461424427f470e73b862902d4b6b5 Mon Sep 17 00:00:00 2001 From: zale144 Date: Thu, 20 Aug 2026 20:26:34 +0200 Subject: [PATCH 2/2] fix buf format/lint and golangci issues on the epoch nonce PR Format v10 protos, ignore EpochState prefix rules (INIT is a real zero state), and clear gosec/exhaustruct/forcetypeassert/ineffassign/staticcheck findings so CI lint can pass. Co-authored-by: Cursor --- fsm/fsm_test.go | 27 ++++++++++------- x/emissions/keeper/epoch.go | 8 ----- x/emissions/keeper/epoch_nonce_test.go | 4 +-- x/emissions/keeper/keeper.go | 1 + x/emissions/proto/buf.yaml | 2 ++ x/emissions/proto/emissions/v10/epoch.proto | 29 ++++++++++++------- x/emissions/proto/emissions/v10/genesis.proto | 5 +++- x/emissions/proto/emissions/v10/tasks.proto | 5 +++- x/emissions/types/epoch.go | 6 +++- x/emissions/types/nonce.go | 3 +- 10 files changed, 56 insertions(+), 34 deletions(-) diff --git a/fsm/fsm_test.go b/fsm/fsm_test.go index 5a554b8db..b78f0183c 100644 --- a/fsm/fsm_test.go +++ b/fsm/fsm_test.go @@ -1,6 +1,7 @@ package fsm_test import ( + "context" "testing" "github.com/allora-network/allora-chain/fsm" @@ -28,7 +29,11 @@ func (f *testFSM) CurrentState() fsm.State { } func (f *testFSM) Advance(to fsm.State) { - f.state = to.(testState) + state, ok := to.(testState) + if !ok { + panic("test FSM advanced to a non-testState") + } + f.state = state } func TestNewEngine(t *testing.T) { @@ -191,23 +196,25 @@ func TestConsume(t *testing.T) { expectState: testState("final"), }, { - name: "transition from final state", - fromState: testState("final"), - symbol: testSymbol("whatever"), - expectErr: true, + name: "transition from final state", + fromState: testState("final"), + symbol: testSymbol("whatever"), + expectErr: true, + expectState: nil, }, { - name: "unknown symbol", - fromState: testState("init"), - symbol: testSymbol("whatever"), - expectErr: true, + name: "unknown symbol", + fromState: testState("init"), + symbol: testSymbol("whatever"), + expectErr: true, + expectState: nil, }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { mFSM := testFSM{state: tc.fromState} - err := eng.Consume(nil, &mFSM, tc.symbol) + err := eng.Consume(context.TODO(), &mFSM, tc.symbol) if tc.expectErr { require.Error(t, err) } else { diff --git a/x/emissions/keeper/epoch.go b/x/emissions/keeper/epoch.go index 91b81a087..880ea6351 100644 --- a/x/emissions/keeper/epoch.go +++ b/x/emissions/keeper/epoch.go @@ -173,14 +173,6 @@ func (k *Keeper) completeEpoch(ctx context.Context, epoch types.Epoch) error { } func (k *Keeper) cancelEpoch(ctx context.Context, epoch types.Epoch) error { - if epoch.State == types.EpochState_WORKER_SUBMISSION { - // TODO: emit closing worker window evt - } else if epoch.State == types.EpochState_REPUTER_SUBMISSION { - // TODO: emit closing reputer window evt - } - - // TODO: prune epoch data - return k.unscheduleEpochLifecycle(ctx, epoch) } diff --git a/x/emissions/keeper/epoch_nonce_test.go b/x/emissions/keeper/epoch_nonce_test.go index 0ffdfe561..230729c96 100644 --- a/x/emissions/keeper/epoch_nonce_test.go +++ b/x/emissions/keeper/epoch_nonce_test.go @@ -51,11 +51,11 @@ func (s *KeeperTestSuite) TestTopicLastEpochNonceGenesisRoundTrip() { topicA := uint64(7) topicB := uint64(9) - nonceA, err := k.AllocateNextEpochNonce(ctx, topicA) + _, err := k.AllocateNextEpochNonce(ctx, topicA) s.Require().NoError(err) _, err = k.AllocateNextEpochNonce(ctx, topicA) s.Require().NoError(err) - nonceA, err = k.AllocateNextEpochNonce(ctx, topicA) + nonceA, err := k.AllocateNextEpochNonce(ctx, topicA) s.Require().NoError(err) nonceB, err := k.AllocateNextEpochNonce(ctx, topicB) diff --git a/x/emissions/keeper/keeper.go b/x/emissions/keeper/keeper.go index 394fc1dc8..266824611 100644 --- a/x/emissions/keeper/keeper.go +++ b/x/emissions/keeper/keeper.go @@ -179,6 +179,7 @@ func NewKeeper( regretsKeeper: rk, weightsKeeper: wgk, whitelistsKeeper: wlk, + epochFSMEngine: nil, // wired by setupEpochFSMEngine after schema build rewardCurrentBlockEmission: collections.NewItem(sb, types.RewardCurrentBlockEmissionKey, "reward_current_block_emission", sdk.IntValue), countInfererInclusionsInTopicActiveSet: collections.NewMap(sb, types.CountInfererInclusionsInTopicKey, "count_inferer_inclusions_in_topic", collections.PairKeyCodec(collections.Uint64Key, collections.StringKey), collections.Uint64Value), countForecasterInclusionsInTopicActiveSet: collections.NewMap(sb, types.CountForecasterInclusionsInTopicKey, "count_forecaster_inclusions_in_topic", collections.PairKeyCodec(collections.Uint64Key, collections.StringKey), collections.Uint64Value), diff --git a/x/emissions/proto/buf.yaml b/x/emissions/proto/buf.yaml index 7e3564a27..06c623b69 100644 --- a/x/emissions/proto/buf.yaml +++ b/x/emissions/proto/buf.yaml @@ -25,8 +25,10 @@ lint: - emissions/v3/query.proto ENUM_VALUE_PREFIX: - emissions/v3/events.proto + - emissions/v10/epoch.proto ENUM_ZERO_VALUE_SUFFIX: - emissions/v3/events.proto + - emissions/v10/epoch.proto RPC_REQUEST_STANDARD_NAME: - emissions/v3/tx.proto - emissions/v3/query.proto diff --git a/x/emissions/proto/emissions/v10/epoch.proto b/x/emissions/proto/emissions/v10/epoch.proto index 0b093d718..7c43f29d2 100644 --- a/x/emissions/proto/emissions/v10/epoch.proto +++ b/x/emissions/proto/emissions/v10/epoch.proto @@ -8,7 +8,10 @@ option go_package = "github.com/allora-network/allora-chain/x/emissions/types"; message Epoch { // The epoch identifier, aka nonce. Uniqueness is only guaranteed per topic. - uint64 nonce = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "NonceV2"]; + uint64 nonce = 1 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "NonceV2" + ]; // The topic this epoch belongs to uint64 topic_id = 2; @@ -31,19 +34,25 @@ message Epoch { } enum EpochState { - INIT = 0; - WORKER_SUBMISSION = 1; - WAITING_GROUND_TRUTH = 2; - REPUTER_SUBMISSION = 3; - PENDING_COMPLETION = 4; - COMPLETED = 5; - CANCELLED = 6; + INIT = 0; + WORKER_SUBMISSION = 1; + WAITING_GROUND_TRUTH = 2; + REPUTER_SUBMISSION = 3; + PENDING_COMPLETION = 4; + COMPLETED = 5; + CANCELLED = 6; } message Window { // The window opening time, in unix timestamp - google.protobuf.Timestamp open_at = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + google.protobuf.Timestamp open_at = 1 [ + (gogoproto.nullable) = false, + (gogoproto.stdtime) = true + ]; // The window closing time, in unix timestamp - google.protobuf.Timestamp close_at = 2 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + google.protobuf.Timestamp close_at = 2 [ + (gogoproto.nullable) = false, + (gogoproto.stdtime) = true + ]; } diff --git a/x/emissions/proto/emissions/v10/genesis.proto b/x/emissions/proto/emissions/v10/genesis.proto index 637dcb76a..38ee08392 100644 --- a/x/emissions/proto/emissions/v10/genesis.proto +++ b/x/emissions/proto/emissions/v10/genesis.proto @@ -318,7 +318,10 @@ message TopicIdAndBlockHeight { message TopicIdAndEpochNonce { uint64 topic_id = 1; // Last allocated epoch nonce for the topic (NonceV2 encoded as uint64). - uint64 nonce = 2 [(gogoproto.nullable) = false, (gogoproto.customtype) = "NonceV2"]; + uint64 nonce = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "NonceV2" + ]; } message BlockHeightAndTopicIds { diff --git a/x/emissions/proto/emissions/v10/tasks.proto b/x/emissions/proto/emissions/v10/tasks.proto index 38a320fba..2658471b9 100644 --- a/x/emissions/proto/emissions/v10/tasks.proto +++ b/x/emissions/proto/emissions/v10/tasks.proto @@ -10,5 +10,8 @@ message EpochTransitionTaskArgs { uint64 topic_id = 2; // The epoch identifier, aka nonce. - uint64 nonce = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "NonceV2"]; + uint64 nonce = 1 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "NonceV2" + ]; } diff --git a/x/emissions/types/epoch.go b/x/emissions/types/epoch.go index e474c83e4..807a38337 100644 --- a/x/emissions/types/epoch.go +++ b/x/emissions/types/epoch.go @@ -16,7 +16,11 @@ func (e *Epoch) CurrentState() fsm.State { } func (e *Epoch) Advance(to fsm.State) { - e.State = to.(EpochState) + state, ok := to.(EpochState) + if !ok { + panic("epoch FSM advanced to a non-EpochState") + } + e.State = state } func (e *Epoch) Key() collections.Pair[TopicId, NonceV2] { diff --git a/x/emissions/types/nonce.go b/x/emissions/types/nonce.go index b2fa8b3f2..c36e02886 100644 --- a/x/emissions/types/nonce.go +++ b/x/emissions/types/nonce.go @@ -44,7 +44,8 @@ func (n NonceV2) NextNonce() NonceV2 { // Version returns the version of the nonce. func (n NonceV2) Version() uint8 { - return uint8(n >> 56) + // Version occupies the high 8 bits; the shift result always fits in uint8. + return uint8((uint64(n) >> 56) & 0xFF) //nolint:gosec // G115: high 8 bits of a uint64 } // Payload returns the payload of the nonce.