diff --git a/api/cosmos/staking/v1beta1/staking.pulsar.go b/api/cosmos/staking/v1beta1/staking.pulsar.go index 7e027f3b670a..d847ae0f5b01 100644 --- a/api/cosmos/staking/v1beta1/staking.pulsar.go +++ b/api/cosmos/staking/v1beta1/staking.pulsar.go @@ -592,6 +592,632 @@ func (x *fastReflection_HistoricalInfo) ProtoMethods() *protoiface.Methods { } } +var ( + md_ConsPubKeyRotationHistory protoreflect.MessageDescriptor + fd_ConsPubKeyRotationHistory_operator_address protoreflect.FieldDescriptor + fd_ConsPubKeyRotationHistory_old_cons_pubkey protoreflect.FieldDescriptor + fd_ConsPubKeyRotationHistory_new_cons_pubkey protoreflect.FieldDescriptor + fd_ConsPubKeyRotationHistory_rotated_height protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_staking_proto_init() + md_ConsPubKeyRotationHistory = File_cosmos_staking_v1beta1_staking_proto.Messages().ByName("ConsPubKeyRotationHistory") + fd_ConsPubKeyRotationHistory_operator_address = md_ConsPubKeyRotationHistory.Fields().ByName("operator_address") + fd_ConsPubKeyRotationHistory_old_cons_pubkey = md_ConsPubKeyRotationHistory.Fields().ByName("old_cons_pubkey") + fd_ConsPubKeyRotationHistory_new_cons_pubkey = md_ConsPubKeyRotationHistory.Fields().ByName("new_cons_pubkey") + fd_ConsPubKeyRotationHistory_rotated_height = md_ConsPubKeyRotationHistory.Fields().ByName("rotated_height") +} + +var _ protoreflect.Message = (*fastReflection_ConsPubKeyRotationHistory)(nil) + +type fastReflection_ConsPubKeyRotationHistory ConsPubKeyRotationHistory + +func (x *ConsPubKeyRotationHistory) ProtoReflect() protoreflect.Message { + return (*fastReflection_ConsPubKeyRotationHistory)(x) +} + +func (x *ConsPubKeyRotationHistory) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[1] + 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_ConsPubKeyRotationHistory_messageType fastReflection_ConsPubKeyRotationHistory_messageType +var _ protoreflect.MessageType = fastReflection_ConsPubKeyRotationHistory_messageType{} + +type fastReflection_ConsPubKeyRotationHistory_messageType struct{} + +func (x fastReflection_ConsPubKeyRotationHistory_messageType) Zero() protoreflect.Message { + return (*fastReflection_ConsPubKeyRotationHistory)(nil) +} +func (x fastReflection_ConsPubKeyRotationHistory_messageType) New() protoreflect.Message { + return new(fastReflection_ConsPubKeyRotationHistory) +} +func (x fastReflection_ConsPubKeyRotationHistory_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ConsPubKeyRotationHistory +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ConsPubKeyRotationHistory) Descriptor() protoreflect.MessageDescriptor { + return md_ConsPubKeyRotationHistory +} + +// 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_ConsPubKeyRotationHistory) Type() protoreflect.MessageType { + return _fastReflection_ConsPubKeyRotationHistory_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ConsPubKeyRotationHistory) New() protoreflect.Message { + return new(fastReflection_ConsPubKeyRotationHistory) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ConsPubKeyRotationHistory) Interface() protoreflect.ProtoMessage { + return (*ConsPubKeyRotationHistory)(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_ConsPubKeyRotationHistory) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.OperatorAddress != "" { + value := protoreflect.ValueOfString(x.OperatorAddress) + if !f(fd_ConsPubKeyRotationHistory_operator_address, value) { + return + } + } + if x.OldConsPubkey != nil { + value := protoreflect.ValueOfMessage(x.OldConsPubkey.ProtoReflect()) + if !f(fd_ConsPubKeyRotationHistory_old_cons_pubkey, value) { + return + } + } + if x.NewConsPubkey != nil { + value := protoreflect.ValueOfMessage(x.NewConsPubkey.ProtoReflect()) + if !f(fd_ConsPubKeyRotationHistory_new_cons_pubkey, value) { + return + } + } + if x.RotatedHeight != int64(0) { + value := protoreflect.ValueOfInt64(x.RotatedHeight) + if !f(fd_ConsPubKeyRotationHistory_rotated_height, 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_ConsPubKeyRotationHistory) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.operator_address": + return x.OperatorAddress != "" + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey": + return x.OldConsPubkey != nil + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey": + return x.NewConsPubkey != nil + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.rotated_height": + return x.RotatedHeight != int64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.ConsPubKeyRotationHistory")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.ConsPubKeyRotationHistory 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_ConsPubKeyRotationHistory) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.operator_address": + x.OperatorAddress = "" + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey": + x.OldConsPubkey = nil + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey": + x.NewConsPubkey = nil + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.rotated_height": + x.RotatedHeight = int64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.ConsPubKeyRotationHistory")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.ConsPubKeyRotationHistory 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_ConsPubKeyRotationHistory) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.operator_address": + value := x.OperatorAddress + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey": + value := x.OldConsPubkey + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey": + value := x.NewConsPubkey + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.rotated_height": + value := x.RotatedHeight + return protoreflect.ValueOfInt64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.ConsPubKeyRotationHistory")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.ConsPubKeyRotationHistory 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_ConsPubKeyRotationHistory) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.operator_address": + x.OperatorAddress = value.Interface().(string) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey": + x.OldConsPubkey = value.Message().Interface().(*anypb.Any) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey": + x.NewConsPubkey = value.Message().Interface().(*anypb.Any) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.rotated_height": + x.RotatedHeight = value.Int() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.ConsPubKeyRotationHistory")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.ConsPubKeyRotationHistory 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_ConsPubKeyRotationHistory) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey": + if x.OldConsPubkey == nil { + x.OldConsPubkey = new(anypb.Any) + } + return protoreflect.ValueOfMessage(x.OldConsPubkey.ProtoReflect()) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey": + if x.NewConsPubkey == nil { + x.NewConsPubkey = new(anypb.Any) + } + return protoreflect.ValueOfMessage(x.NewConsPubkey.ProtoReflect()) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.operator_address": + panic(fmt.Errorf("field operator_address of message cosmos.staking.v1beta1.ConsPubKeyRotationHistory is not mutable")) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.rotated_height": + panic(fmt.Errorf("field rotated_height of message cosmos.staking.v1beta1.ConsPubKeyRotationHistory is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.ConsPubKeyRotationHistory")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.ConsPubKeyRotationHistory 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_ConsPubKeyRotationHistory) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.operator_address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey": + m := new(anypb.Any) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey": + m := new(anypb.Any) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.staking.v1beta1.ConsPubKeyRotationHistory.rotated_height": + return protoreflect.ValueOfInt64(int64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.ConsPubKeyRotationHistory")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.ConsPubKeyRotationHistory 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_ConsPubKeyRotationHistory) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.ConsPubKeyRotationHistory", 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_ConsPubKeyRotationHistory) 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_ConsPubKeyRotationHistory) 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_ConsPubKeyRotationHistory) 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_ConsPubKeyRotationHistory) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ConsPubKeyRotationHistory) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.OperatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.OldConsPubkey != nil { + l = options.Size(x.OldConsPubkey) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.NewConsPubkey != nil { + l = options.Size(x.NewConsPubkey) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.RotatedHeight != 0 { + n += 1 + runtime.Sov(uint64(x.RotatedHeight)) + } + 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().(*ConsPubKeyRotationHistory) + 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.RotatedHeight != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.RotatedHeight)) + i-- + dAtA[i] = 0x20 + } + if x.NewConsPubkey != nil { + encoded, err := options.Marshal(x.NewConsPubkey) + 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] = 0x1a + } + if x.OldConsPubkey != nil { + encoded, err := options.Marshal(x.OldConsPubkey) + 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] = 0x12 + } + if len(x.OperatorAddress) > 0 { + i -= len(x.OperatorAddress) + copy(dAtA[i:], x.OperatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OperatorAddress))) + i-- + dAtA[i] = 0xa + } + 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().(*ConsPubKeyRotationHistory) + 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: ConsPubKeyRotationHistory: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ConsPubKeyRotationHistory: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OperatorAddress", wireType) + } + var stringLen 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++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + 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.OperatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OldConsPubkey", 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 + } + if x.OldConsPubkey == nil { + x.OldConsPubkey = &anypb.Any{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.OldConsPubkey); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NewConsPubkey", 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 + } + if x.NewConsPubkey == nil { + x.NewConsPubkey = &anypb.Any{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.NewConsPubkey); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RotatedHeight", wireType) + } + x.RotatedHeight = 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.RotatedHeight |= int64(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 ( md_CommissionRates protoreflect.MessageDescriptor fd_CommissionRates_rate protoreflect.FieldDescriptor @@ -616,7 +1242,7 @@ func (x *CommissionRates) ProtoReflect() protoreflect.Message { } func (x *CommissionRates) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[1] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1162,7 +1788,7 @@ func (x *Commission) ProtoReflect() protoreflect.Message { } func (x *Commission) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[2] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1682,7 +2308,7 @@ func (x *Description) ProtoReflect() protoreflect.Message { } func (x *Description) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[3] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2370,7 +2996,7 @@ func (x *Validator) ProtoReflect() protoreflect.Message { } func (x *Validator) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[4] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3474,7 +4100,7 @@ func (x *ValAddresses) ProtoReflect() protoreflect.Message { } func (x *ValAddresses) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[5] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3910,7 +4536,7 @@ func (x *DVPair) ProtoReflect() protoreflect.Message { } func (x *DVPair) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[6] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4443,7 +5069,7 @@ func (x *DVPairs) ProtoReflect() protoreflect.Message { } func (x *DVPairs) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[7] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4890,7 +5516,7 @@ func (x *DVVTriplet) ProtoReflect() protoreflect.Message { } func (x *DVVTriplet) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[8] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5485,7 +6111,7 @@ func (x *DVVTriplets) ProtoReflect() protoreflect.Message { } func (x *DVVTriplets) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[9] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5932,7 +6558,7 @@ func (x *Delegation) ProtoReflect() protoreflect.Message { } func (x *Delegation) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[10] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6531,7 +7157,7 @@ func (x *UnbondingDelegation) ProtoReflect() protoreflect.Message { } func (x *UnbondingDelegation) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[11] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7104,7 +7730,7 @@ func (x *UnbondingDelegationEntry) ProtoReflect() protoreflect.Message { } func (x *UnbondingDelegationEntry) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[12] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7715,7 +8341,7 @@ func (x *RedelegationEntry) ProtoReflect() protoreflect.Message { } func (x *RedelegationEntry) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[13] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8377,7 +9003,7 @@ func (x *Redelegation) ProtoReflect() protoreflect.Message { } func (x *Redelegation) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[14] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8987,13 +9613,15 @@ func (x *fastReflection_Redelegation) ProtoMethods() *protoiface.Methods { } var ( - md_Params protoreflect.MessageDescriptor - fd_Params_unbonding_time protoreflect.FieldDescriptor - fd_Params_max_validators protoreflect.FieldDescriptor - fd_Params_max_entries protoreflect.FieldDescriptor - fd_Params_historical_entries protoreflect.FieldDescriptor - fd_Params_bond_denom protoreflect.FieldDescriptor - fd_Params_min_commission_rate protoreflect.FieldDescriptor + md_Params protoreflect.MessageDescriptor + fd_Params_unbonding_time protoreflect.FieldDescriptor + fd_Params_max_validators protoreflect.FieldDescriptor + fd_Params_max_entries protoreflect.FieldDescriptor + fd_Params_historical_entries protoreflect.FieldDescriptor + fd_Params_bond_denom protoreflect.FieldDescriptor + fd_Params_min_commission_rate protoreflect.FieldDescriptor + fd_Params_max_cons_pub_key_rotations protoreflect.FieldDescriptor + fd_Params_cons_pubkey_rotation_fee protoreflect.FieldDescriptor ) func init() { @@ -9005,6 +9633,8 @@ func init() { fd_Params_historical_entries = md_Params.Fields().ByName("historical_entries") fd_Params_bond_denom = md_Params.Fields().ByName("bond_denom") fd_Params_min_commission_rate = md_Params.Fields().ByName("min_commission_rate") + fd_Params_max_cons_pub_key_rotations = md_Params.Fields().ByName("max_cons_pub_key_rotations") + fd_Params_cons_pubkey_rotation_fee = md_Params.Fields().ByName("cons_pubkey_rotation_fee") } var _ protoreflect.Message = (*fastReflection_Params)(nil) @@ -9016,7 +9646,7 @@ func (x *Params) ProtoReflect() protoreflect.Message { } func (x *Params) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[15] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9108,6 +9738,18 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.MaxConsPubKeyRotations != uint64(0) { + value := protoreflect.ValueOfUint64(x.MaxConsPubKeyRotations) + if !f(fd_Params_max_cons_pub_key_rotations, value) { + return + } + } + if x.ConsPubkeyRotationFee != nil { + value := protoreflect.ValueOfMessage(x.ConsPubkeyRotationFee.ProtoReflect()) + if !f(fd_Params_cons_pubkey_rotation_fee, value) { + return + } + } } // Has reports whether a field is populated. @@ -9135,6 +9777,10 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return x.BondDenom != "" case "cosmos.staking.v1beta1.Params.min_commission_rate": return x.MinCommissionRate != "" + case "cosmos.staking.v1beta1.Params.max_cons_pub_key_rotations": + return x.MaxConsPubKeyRotations != uint64(0) + case "cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee": + return x.ConsPubkeyRotationFee != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9163,6 +9809,10 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.BondDenom = "" case "cosmos.staking.v1beta1.Params.min_commission_rate": x.MinCommissionRate = "" + case "cosmos.staking.v1beta1.Params.max_cons_pub_key_rotations": + x.MaxConsPubKeyRotations = uint64(0) + case "cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee": + x.ConsPubkeyRotationFee = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9197,6 +9847,12 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "cosmos.staking.v1beta1.Params.min_commission_rate": value := x.MinCommissionRate return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Params.max_cons_pub_key_rotations": + value := x.MaxConsPubKeyRotations + return protoreflect.ValueOfUint64(value) + case "cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee": + value := x.ConsPubkeyRotationFee + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9229,6 +9885,10 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.BondDenom = value.Interface().(string) case "cosmos.staking.v1beta1.Params.min_commission_rate": x.MinCommissionRate = value.Interface().(string) + case "cosmos.staking.v1beta1.Params.max_cons_pub_key_rotations": + x.MaxConsPubKeyRotations = value.Uint() + case "cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee": + x.ConsPubkeyRotationFee = value.Message().Interface().(*v1beta1.Coin) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9254,6 +9914,11 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore x.UnbondingTime = new(durationpb.Duration) } return protoreflect.ValueOfMessage(x.UnbondingTime.ProtoReflect()) + case "cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee": + if x.ConsPubkeyRotationFee == nil { + x.ConsPubkeyRotationFee = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.ConsPubkeyRotationFee.ProtoReflect()) case "cosmos.staking.v1beta1.Params.max_validators": panic(fmt.Errorf("field max_validators of message cosmos.staking.v1beta1.Params is not mutable")) case "cosmos.staking.v1beta1.Params.max_entries": @@ -9264,6 +9929,8 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore panic(fmt.Errorf("field bond_denom of message cosmos.staking.v1beta1.Params is not mutable")) case "cosmos.staking.v1beta1.Params.min_commission_rate": panic(fmt.Errorf("field min_commission_rate of message cosmos.staking.v1beta1.Params is not mutable")) + case "cosmos.staking.v1beta1.Params.max_cons_pub_key_rotations": + panic(fmt.Errorf("field max_cons_pub_key_rotations of message cosmos.staking.v1beta1.Params is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9290,6 +9957,11 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfString("") case "cosmos.staking.v1beta1.Params.min_commission_rate": return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Params.max_cons_pub_key_rotations": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9380,6 +10052,13 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.MaxConsPubKeyRotations != 0 { + n += 1 + runtime.Sov(uint64(x.MaxConsPubKeyRotations)) + } + if x.ConsPubkeyRotationFee != nil { + l = options.Size(x.ConsPubkeyRotationFee) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -9409,6 +10088,25 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.ConsPubkeyRotationFee != nil { + encoded, err := options.Marshal(x.ConsPubkeyRotationFee) + 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] = 0x42 + } + if x.MaxConsPubKeyRotations != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.MaxConsPubKeyRotations)) + i-- + dAtA[i] = 0x38 + } if len(x.MinCommissionRate) > 0 { i -= len(x.MinCommissionRate) copy(dAtA[i:], x.MinCommissionRate) @@ -9624,13 +10322,64 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.BondDenom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: + x.BondDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinCommissionRate", wireType) + } + var stringLen 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++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + 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.MinCommissionRate = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxConsPubKeyRotations", wireType) + } + x.MaxConsPubKeyRotations = 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.MaxConsPubKeyRotations |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinCommissionRate", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ConsPubkeyRotationFee", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -9640,23 +10389,27 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + intStringLen + 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.MinCommissionRate = string(dAtA[iNdEx:postIndex]) + if x.ConsPubkeyRotationFee == nil { + x.ConsPubkeyRotationFee = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ConsPubkeyRotationFee); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } iNdEx = postIndex default: iNdEx = preIndex @@ -9715,7 +10468,7 @@ func (x *DelegationResponse) ProtoReflect() protoreflect.Message { } func (x *DelegationResponse) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[16] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10229,7 +10982,7 @@ func (x *RedelegationEntryResponse) ProtoReflect() protoreflect.Message { } func (x *RedelegationEntryResponse) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[17] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10779,7 +11532,7 @@ func (x *RedelegationResponse) ProtoReflect() protoreflect.Message { } func (x *RedelegationResponse) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[18] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11301,7 +12054,7 @@ func (x *Pool) ProtoReflect() protoreflect.Message { } func (x *Pool) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[19] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11880,6 +12633,65 @@ func (x *HistoricalInfo) GetValset() []*Validator { return nil } +type ConsPubKeyRotationHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperatorAddress string `protobuf:"bytes,1,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` + OldConsPubkey *anypb.Any `protobuf:"bytes,2,opt,name=old_cons_pubkey,json=oldConsPubkey,proto3" json:"old_cons_pubkey,omitempty"` + NewConsPubkey *anypb.Any `protobuf:"bytes,3,opt,name=new_cons_pubkey,json=newConsPubkey,proto3" json:"new_cons_pubkey,omitempty"` + RotatedHeight int64 `protobuf:"varint,4,opt,name=rotated_height,json=rotatedHeight,proto3" json:"rotated_height,omitempty"` +} + +func (x *ConsPubKeyRotationHistory) Reset() { + *x = ConsPubKeyRotationHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConsPubKeyRotationHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsPubKeyRotationHistory) ProtoMessage() {} + +// Deprecated: Use ConsPubKeyRotationHistory.ProtoReflect.Descriptor instead. +func (*ConsPubKeyRotationHistory) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{1} +} + +func (x *ConsPubKeyRotationHistory) GetOperatorAddress() string { + if x != nil { + return x.OperatorAddress + } + return "" +} + +func (x *ConsPubKeyRotationHistory) GetOldConsPubkey() *anypb.Any { + if x != nil { + return x.OldConsPubkey + } + return nil +} + +func (x *ConsPubKeyRotationHistory) GetNewConsPubkey() *anypb.Any { + if x != nil { + return x.NewConsPubkey + } + return nil +} + +func (x *ConsPubKeyRotationHistory) GetRotatedHeight() int64 { + if x != nil { + return x.RotatedHeight + } + return 0 +} + // CommissionRates defines the initial commission rates to be used for creating // a validator. type CommissionRates struct { @@ -11898,7 +12710,7 @@ type CommissionRates struct { func (x *CommissionRates) Reset() { *x = CommissionRates{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[1] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11912,7 +12724,7 @@ func (*CommissionRates) ProtoMessage() {} // Deprecated: Use CommissionRates.ProtoReflect.Descriptor instead. func (*CommissionRates) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{1} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{2} } func (x *CommissionRates) GetRate() string { @@ -11951,7 +12763,7 @@ type Commission struct { func (x *Commission) Reset() { *x = Commission{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[2] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11965,7 +12777,7 @@ func (*Commission) ProtoMessage() {} // Deprecated: Use Commission.ProtoReflect.Descriptor instead. func (*Commission) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{2} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{3} } func (x *Commission) GetCommissionRates() *CommissionRates { @@ -12003,7 +12815,7 @@ type Description struct { func (x *Description) Reset() { *x = Description{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[3] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12017,7 +12829,7 @@ func (*Description) ProtoMessage() {} // Deprecated: Use Description.ProtoReflect.Descriptor instead. func (*Description) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{3} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{4} } func (x *Description) GetMoniker() string { @@ -12097,7 +12909,7 @@ type Validator struct { func (x *Validator) Reset() { *x = Validator{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[4] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12111,7 +12923,7 @@ func (*Validator) ProtoMessage() {} // Deprecated: Use Validator.ProtoReflect.Descriptor instead. func (*Validator) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{4} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{5} } func (x *Validator) GetOperatorAddress() string { @@ -12203,7 +13015,7 @@ type ValAddresses struct { func (x *ValAddresses) Reset() { *x = ValAddresses{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[5] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12217,7 +13029,7 @@ func (*ValAddresses) ProtoMessage() {} // Deprecated: Use ValAddresses.ProtoReflect.Descriptor instead. func (*ValAddresses) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{5} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{6} } func (x *ValAddresses) GetAddresses() []string { @@ -12242,7 +13054,7 @@ type DVPair struct { func (x *DVPair) Reset() { *x = DVPair{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[6] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12256,7 +13068,7 @@ func (*DVPair) ProtoMessage() {} // Deprecated: Use DVPair.ProtoReflect.Descriptor instead. func (*DVPair) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{6} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{7} } func (x *DVPair) GetDelegatorAddress() string { @@ -12285,7 +13097,7 @@ type DVPairs struct { func (x *DVPairs) Reset() { *x = DVPairs{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[7] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12299,7 +13111,7 @@ func (*DVPairs) ProtoMessage() {} // Deprecated: Use DVPairs.ProtoReflect.Descriptor instead. func (*DVPairs) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{7} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{8} } func (x *DVPairs) GetPairs() []*DVPair { @@ -12326,7 +13138,7 @@ type DVVTriplet struct { func (x *DVVTriplet) Reset() { *x = DVVTriplet{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[8] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12340,7 +13152,7 @@ func (*DVVTriplet) ProtoMessage() {} // Deprecated: Use DVVTriplet.ProtoReflect.Descriptor instead. func (*DVVTriplet) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{8} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{9} } func (x *DVVTriplet) GetDelegatorAddress() string { @@ -12376,7 +13188,7 @@ type DVVTriplets struct { func (x *DVVTriplets) Reset() { *x = DVVTriplets{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[9] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12390,7 +13202,7 @@ func (*DVVTriplets) ProtoMessage() {} // Deprecated: Use DVVTriplets.ProtoReflect.Descriptor instead. func (*DVVTriplets) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{9} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{10} } func (x *DVVTriplets) GetTriplets() []*DVVTriplet { @@ -12419,7 +13231,7 @@ type Delegation struct { func (x *Delegation) Reset() { *x = Delegation{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[10] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12433,7 +13245,7 @@ func (*Delegation) ProtoMessage() {} // Deprecated: Use Delegation.ProtoReflect.Descriptor instead. func (*Delegation) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{10} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{11} } func (x *Delegation) GetDelegatorAddress() string { @@ -12475,7 +13287,7 @@ type UnbondingDelegation struct { func (x *UnbondingDelegation) Reset() { *x = UnbondingDelegation{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[11] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12489,7 +13301,7 @@ func (*UnbondingDelegation) ProtoMessage() {} // Deprecated: Use UnbondingDelegation.ProtoReflect.Descriptor instead. func (*UnbondingDelegation) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{11} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{12} } func (x *UnbondingDelegation) GetDelegatorAddress() string { @@ -12532,7 +13344,7 @@ type UnbondingDelegationEntry struct { func (x *UnbondingDelegationEntry) Reset() { *x = UnbondingDelegationEntry{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[12] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12546,7 +13358,7 @@ func (*UnbondingDelegationEntry) ProtoMessage() {} // Deprecated: Use UnbondingDelegationEntry.ProtoReflect.Descriptor instead. func (*UnbondingDelegationEntry) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{12} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{13} } func (x *UnbondingDelegationEntry) GetCreationHeight() int64 { @@ -12596,7 +13408,7 @@ type RedelegationEntry struct { func (x *RedelegationEntry) Reset() { *x = RedelegationEntry{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[13] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12610,7 +13422,7 @@ func (*RedelegationEntry) ProtoMessage() {} // Deprecated: Use RedelegationEntry.ProtoReflect.Descriptor instead. func (*RedelegationEntry) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{13} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{14} } func (x *RedelegationEntry) GetCreationHeight() int64 { @@ -12661,7 +13473,7 @@ type Redelegation struct { func (x *Redelegation) Reset() { *x = Redelegation{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[14] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12675,7 +13487,7 @@ func (*Redelegation) ProtoMessage() {} // Deprecated: Use Redelegation.ProtoReflect.Descriptor instead. func (*Redelegation) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{14} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{15} } func (x *Redelegation) GetDelegatorAddress() string { @@ -12724,12 +13536,16 @@ type Params struct { BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` // min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators MinCommissionRate string `protobuf:"bytes,6,opt,name=min_commission_rate,json=minCommissionRate,proto3" json:"min_commission_rate,omitempty"` + // max_cons_pub_key_rotations is maximum number of consensus pubkey rotations + MaxConsPubKeyRotations uint64 `protobuf:"varint,7,opt,name=max_cons_pub_key_rotations,json=maxConsPubKeyRotations,proto3" json:"max_cons_pub_key_rotations,omitempty"` + // cons_pubkey_rotation_fee is fee to be spent when rotating validator's consensus pubkey + ConsPubkeyRotationFee *v1beta1.Coin `protobuf:"bytes,8,opt,name=cons_pubkey_rotation_fee,json=consPubkeyRotationFee,proto3" json:"cons_pubkey_rotation_fee,omitempty"` } func (x *Params) Reset() { *x = Params{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[15] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12743,7 +13559,7 @@ func (*Params) ProtoMessage() {} // Deprecated: Use Params.ProtoReflect.Descriptor instead. func (*Params) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{15} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{16} } func (x *Params) GetUnbondingTime() *durationpb.Duration { @@ -12788,6 +13604,20 @@ func (x *Params) GetMinCommissionRate() string { return "" } +func (x *Params) GetMaxConsPubKeyRotations() uint64 { + if x != nil { + return x.MaxConsPubKeyRotations + } + return 0 +} + +func (x *Params) GetConsPubkeyRotationFee() *v1beta1.Coin { + if x != nil { + return x.ConsPubkeyRotationFee + } + return nil +} + // DelegationResponse is equivalent to Delegation except that it contains a // balance in addition to shares which is more suitable for client responses. type DelegationResponse struct { @@ -12802,7 +13632,7 @@ type DelegationResponse struct { func (x *DelegationResponse) Reset() { *x = DelegationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[16] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12816,7 +13646,7 @@ func (*DelegationResponse) ProtoMessage() {} // Deprecated: Use DelegationResponse.ProtoReflect.Descriptor instead. func (*DelegationResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{16} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{17} } func (x *DelegationResponse) GetDelegation() *Delegation { @@ -12848,7 +13678,7 @@ type RedelegationEntryResponse struct { func (x *RedelegationEntryResponse) Reset() { *x = RedelegationEntryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[17] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12862,7 +13692,7 @@ func (*RedelegationEntryResponse) ProtoMessage() {} // Deprecated: Use RedelegationEntryResponse.ProtoReflect.Descriptor instead. func (*RedelegationEntryResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{17} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{18} } func (x *RedelegationEntryResponse) GetRedelegationEntry() *RedelegationEntry { @@ -12894,7 +13724,7 @@ type RedelegationResponse struct { func (x *RedelegationResponse) Reset() { *x = RedelegationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[18] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12908,7 +13738,7 @@ func (*RedelegationResponse) ProtoMessage() {} // Deprecated: Use RedelegationResponse.ProtoReflect.Descriptor instead. func (*RedelegationResponse) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{18} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{19} } func (x *RedelegationResponse) GetRedelegation() *Redelegation { @@ -12939,7 +13769,7 @@ type Pool struct { func (x *Pool) Reset() { *x = Pool{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[19] + mi := &file_cosmos_staking_v1beta1_staking_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12953,7 +13783,7 @@ func (*Pool) ProtoMessage() {} // Deprecated: Use Pool.ProtoReflect.Descriptor instead. func (*Pool) Descriptor() ([]byte, []int) { - return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{19} + return file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP(), []int{20} } func (x *Pool) GetNotBondedTokens() string { @@ -12998,160 +13828,163 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x73, 0x65, 0x74, 0x22, 0xac, 0x02, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x04, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x61, 0x6c, 0x73, 0x65, 0x74, 0x22, 0xb7, 0x02, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, + 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, + 0x79, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x12, 0x56, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, + 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x6f, + 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x6f, 0x74, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, + 0xac, 0x02, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, + 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, + 0x04, 0x72, 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x64, + 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x04, 0x72, 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x08, 0x6d, - 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xbb, + 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, + 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x73, + 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0xd0, 0xde, 0x1f, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, + 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xac, 0x01, 0x0a, + 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x06, 0x0a, 0x09, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x10, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x59, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, + 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, + 0x73, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x54, 0x0a, + 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, - 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x07, 0x6d, 0x61, 0x78, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, + 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, + 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, - 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x6d, 0x61, 0x78, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, - 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xbb, 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x61, 0x74, 0x65, 0x73, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0xd0, 0xde, 0x1f, 0x01, - 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, - 0x1f, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, - 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, - 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, - 0x01, 0x22, 0xc9, 0x06, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x43, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x59, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, - 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0f, - 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x54, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, - 0x74, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, - 0x63, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xc8, 0xde, - 0x1f, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4b, 0x0a, 0x0e, 0x75, 0x6e, - 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, - 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x6c, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, - 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, - 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x11, 0x6d, 0x69, - 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, - 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x50, 0x0a, - 0x0c, 0x56, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, - 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0x80, 0xdc, 0x20, 0x01, 0x22, - 0xa4, 0x01, 0x0a, 0x06, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0f, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x62, + 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x4b, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, + 0x1f, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x13, 0x6d, + 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, + 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, + 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x50, 0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, + 0x08, 0x98, 0xa0, 0x1f, 0x00, 0x80, 0xdc, 0x20, 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x06, 0x44, 0x56, + 0x50, 0x61, 0x69, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, + 0x22, 0x45, 0x0a, 0x07, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x70, + 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, + 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0a, 0x44, 0x56, 0x56, 0x54, + 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, + 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, - 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x45, 0x0a, 0x07, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, - 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x50, 0x61, 0x69, 0x72, - 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x22, 0xfd, 0x01, - 0x0a, 0x0a, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x11, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, - 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, - 0x0b, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x08, - 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, - 0x65, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, - 0x74, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, - 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x54, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, - 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, - 0xa0, 0x1f, 0x00, 0x22, 0x83, 0x02, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, + 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, + 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, 0x0b, 0x44, 0x56, 0x56, 0x54, 0x72, + 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x44, 0x56, 0x56, 0x54, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x08, 0x74, 0x72, 0x69, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xfe, 0x01, 0x0a, + 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, @@ -13160,100 +13993,126 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x65, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xde, - 0x1f, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, - 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xdb, 0x02, 0x0a, 0x18, 0x55, 0x6e, + 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x54, 0x0a, 0x06, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, + 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x3a, + 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x83, 0x02, + 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x45, 0x0a, 0x11, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x4d, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0e, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x65, - 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, - 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x08, 0x98, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xd9, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, - 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4d, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, - 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, - 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, - 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x07, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, + 0xa0, 0x1f, 0x00, 0x22, 0xdb, 0x02, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4d, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, + 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, + 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x56, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x44, 0x73, 0x74, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, - 0xa0, 0x1f, 0x01, 0x22, 0xca, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, - 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x3a, 0x0c, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, - 0x22, 0xf2, 0x02, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x75, - 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, - 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0d, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x2d, 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x7c, 0x0a, - 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xc8, 0xde, 0x1f, 0x00, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, + 0x01, 0x22, 0xd9, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x4d, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, + 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x65, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, + 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, + 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x1a, 0x79, 0x61, - 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, + 0x44, 0x73, 0x74, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xca, 0x02, + 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, + 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x49, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x0c, 0x88, 0xa0, + 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x88, 0x04, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, + 0x1f, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, + 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, + 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, + 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x7c, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x1a, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, + 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x22, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x43, 0x6f, + 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x58, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, @@ -13348,62 +14207,66 @@ func file_cosmos_staking_v1beta1_staking_proto_rawDescGZIP() []byte { } var file_cosmos_staking_v1beta1_staking_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_cosmos_staking_v1beta1_staking_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_cosmos_staking_v1beta1_staking_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_cosmos_staking_v1beta1_staking_proto_goTypes = []interface{}{ (BondStatus)(0), // 0: cosmos.staking.v1beta1.BondStatus (*HistoricalInfo)(nil), // 1: cosmos.staking.v1beta1.HistoricalInfo - (*CommissionRates)(nil), // 2: cosmos.staking.v1beta1.CommissionRates - (*Commission)(nil), // 3: cosmos.staking.v1beta1.Commission - (*Description)(nil), // 4: cosmos.staking.v1beta1.Description - (*Validator)(nil), // 5: cosmos.staking.v1beta1.Validator - (*ValAddresses)(nil), // 6: cosmos.staking.v1beta1.ValAddresses - (*DVPair)(nil), // 7: cosmos.staking.v1beta1.DVPair - (*DVPairs)(nil), // 8: cosmos.staking.v1beta1.DVPairs - (*DVVTriplet)(nil), // 9: cosmos.staking.v1beta1.DVVTriplet - (*DVVTriplets)(nil), // 10: cosmos.staking.v1beta1.DVVTriplets - (*Delegation)(nil), // 11: cosmos.staking.v1beta1.Delegation - (*UnbondingDelegation)(nil), // 12: cosmos.staking.v1beta1.UnbondingDelegation - (*UnbondingDelegationEntry)(nil), // 13: cosmos.staking.v1beta1.UnbondingDelegationEntry - (*RedelegationEntry)(nil), // 14: cosmos.staking.v1beta1.RedelegationEntry - (*Redelegation)(nil), // 15: cosmos.staking.v1beta1.Redelegation - (*Params)(nil), // 16: cosmos.staking.v1beta1.Params - (*DelegationResponse)(nil), // 17: cosmos.staking.v1beta1.DelegationResponse - (*RedelegationEntryResponse)(nil), // 18: cosmos.staking.v1beta1.RedelegationEntryResponse - (*RedelegationResponse)(nil), // 19: cosmos.staking.v1beta1.RedelegationResponse - (*Pool)(nil), // 20: cosmos.staking.v1beta1.Pool - (*types.Header)(nil), // 21: tendermint.types.Header - (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*ConsPubKeyRotationHistory)(nil), // 2: cosmos.staking.v1beta1.ConsPubKeyRotationHistory + (*CommissionRates)(nil), // 3: cosmos.staking.v1beta1.CommissionRates + (*Commission)(nil), // 4: cosmos.staking.v1beta1.Commission + (*Description)(nil), // 5: cosmos.staking.v1beta1.Description + (*Validator)(nil), // 6: cosmos.staking.v1beta1.Validator + (*ValAddresses)(nil), // 7: cosmos.staking.v1beta1.ValAddresses + (*DVPair)(nil), // 8: cosmos.staking.v1beta1.DVPair + (*DVPairs)(nil), // 9: cosmos.staking.v1beta1.DVPairs + (*DVVTriplet)(nil), // 10: cosmos.staking.v1beta1.DVVTriplet + (*DVVTriplets)(nil), // 11: cosmos.staking.v1beta1.DVVTriplets + (*Delegation)(nil), // 12: cosmos.staking.v1beta1.Delegation + (*UnbondingDelegation)(nil), // 13: cosmos.staking.v1beta1.UnbondingDelegation + (*UnbondingDelegationEntry)(nil), // 14: cosmos.staking.v1beta1.UnbondingDelegationEntry + (*RedelegationEntry)(nil), // 15: cosmos.staking.v1beta1.RedelegationEntry + (*Redelegation)(nil), // 16: cosmos.staking.v1beta1.Redelegation + (*Params)(nil), // 17: cosmos.staking.v1beta1.Params + (*DelegationResponse)(nil), // 18: cosmos.staking.v1beta1.DelegationResponse + (*RedelegationEntryResponse)(nil), // 19: cosmos.staking.v1beta1.RedelegationEntryResponse + (*RedelegationResponse)(nil), // 20: cosmos.staking.v1beta1.RedelegationResponse + (*Pool)(nil), // 21: cosmos.staking.v1beta1.Pool + (*types.Header)(nil), // 22: tendermint.types.Header (*anypb.Any)(nil), // 23: google.protobuf.Any - (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*v1beta1.Coin)(nil), // 25: cosmos.base.v1beta1.Coin + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 25: google.protobuf.Duration + (*v1beta1.Coin)(nil), // 26: cosmos.base.v1beta1.Coin } var file_cosmos_staking_v1beta1_staking_proto_depIdxs = []int32{ - 21, // 0: cosmos.staking.v1beta1.HistoricalInfo.header:type_name -> tendermint.types.Header - 5, // 1: cosmos.staking.v1beta1.HistoricalInfo.valset:type_name -> cosmos.staking.v1beta1.Validator - 2, // 2: cosmos.staking.v1beta1.Commission.commission_rates:type_name -> cosmos.staking.v1beta1.CommissionRates - 22, // 3: cosmos.staking.v1beta1.Commission.update_time:type_name -> google.protobuf.Timestamp - 23, // 4: cosmos.staking.v1beta1.Validator.consensus_pubkey:type_name -> google.protobuf.Any - 0, // 5: cosmos.staking.v1beta1.Validator.status:type_name -> cosmos.staking.v1beta1.BondStatus - 4, // 6: cosmos.staking.v1beta1.Validator.description:type_name -> cosmos.staking.v1beta1.Description - 22, // 7: cosmos.staking.v1beta1.Validator.unbonding_time:type_name -> google.protobuf.Timestamp - 3, // 8: cosmos.staking.v1beta1.Validator.commission:type_name -> cosmos.staking.v1beta1.Commission - 7, // 9: cosmos.staking.v1beta1.DVPairs.pairs:type_name -> cosmos.staking.v1beta1.DVPair - 9, // 10: cosmos.staking.v1beta1.DVVTriplets.triplets:type_name -> cosmos.staking.v1beta1.DVVTriplet - 13, // 11: cosmos.staking.v1beta1.UnbondingDelegation.entries:type_name -> cosmos.staking.v1beta1.UnbondingDelegationEntry - 22, // 12: cosmos.staking.v1beta1.UnbondingDelegationEntry.completion_time:type_name -> google.protobuf.Timestamp - 22, // 13: cosmos.staking.v1beta1.RedelegationEntry.completion_time:type_name -> google.protobuf.Timestamp - 14, // 14: cosmos.staking.v1beta1.Redelegation.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntry - 24, // 15: cosmos.staking.v1beta1.Params.unbonding_time:type_name -> google.protobuf.Duration - 11, // 16: cosmos.staking.v1beta1.DelegationResponse.delegation:type_name -> cosmos.staking.v1beta1.Delegation - 25, // 17: cosmos.staking.v1beta1.DelegationResponse.balance:type_name -> cosmos.base.v1beta1.Coin - 14, // 18: cosmos.staking.v1beta1.RedelegationEntryResponse.redelegation_entry:type_name -> cosmos.staking.v1beta1.RedelegationEntry - 15, // 19: cosmos.staking.v1beta1.RedelegationResponse.redelegation:type_name -> cosmos.staking.v1beta1.Redelegation - 18, // 20: cosmos.staking.v1beta1.RedelegationResponse.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntryResponse - 21, // [21:21] is the sub-list for method output_type - 21, // [21:21] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 22, // 0: cosmos.staking.v1beta1.HistoricalInfo.header:type_name -> tendermint.types.Header + 6, // 1: cosmos.staking.v1beta1.HistoricalInfo.valset:type_name -> cosmos.staking.v1beta1.Validator + 23, // 2: cosmos.staking.v1beta1.ConsPubKeyRotationHistory.old_cons_pubkey:type_name -> google.protobuf.Any + 23, // 3: cosmos.staking.v1beta1.ConsPubKeyRotationHistory.new_cons_pubkey:type_name -> google.protobuf.Any + 3, // 4: cosmos.staking.v1beta1.Commission.commission_rates:type_name -> cosmos.staking.v1beta1.CommissionRates + 24, // 5: cosmos.staking.v1beta1.Commission.update_time:type_name -> google.protobuf.Timestamp + 23, // 6: cosmos.staking.v1beta1.Validator.consensus_pubkey:type_name -> google.protobuf.Any + 0, // 7: cosmos.staking.v1beta1.Validator.status:type_name -> cosmos.staking.v1beta1.BondStatus + 5, // 8: cosmos.staking.v1beta1.Validator.description:type_name -> cosmos.staking.v1beta1.Description + 24, // 9: cosmos.staking.v1beta1.Validator.unbonding_time:type_name -> google.protobuf.Timestamp + 4, // 10: cosmos.staking.v1beta1.Validator.commission:type_name -> cosmos.staking.v1beta1.Commission + 8, // 11: cosmos.staking.v1beta1.DVPairs.pairs:type_name -> cosmos.staking.v1beta1.DVPair + 10, // 12: cosmos.staking.v1beta1.DVVTriplets.triplets:type_name -> cosmos.staking.v1beta1.DVVTriplet + 14, // 13: cosmos.staking.v1beta1.UnbondingDelegation.entries:type_name -> cosmos.staking.v1beta1.UnbondingDelegationEntry + 24, // 14: cosmos.staking.v1beta1.UnbondingDelegationEntry.completion_time:type_name -> google.protobuf.Timestamp + 24, // 15: cosmos.staking.v1beta1.RedelegationEntry.completion_time:type_name -> google.protobuf.Timestamp + 15, // 16: cosmos.staking.v1beta1.Redelegation.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntry + 25, // 17: cosmos.staking.v1beta1.Params.unbonding_time:type_name -> google.protobuf.Duration + 26, // 18: cosmos.staking.v1beta1.Params.cons_pubkey_rotation_fee:type_name -> cosmos.base.v1beta1.Coin + 12, // 19: cosmos.staking.v1beta1.DelegationResponse.delegation:type_name -> cosmos.staking.v1beta1.Delegation + 26, // 20: cosmos.staking.v1beta1.DelegationResponse.balance:type_name -> cosmos.base.v1beta1.Coin + 15, // 21: cosmos.staking.v1beta1.RedelegationEntryResponse.redelegation_entry:type_name -> cosmos.staking.v1beta1.RedelegationEntry + 16, // 22: cosmos.staking.v1beta1.RedelegationResponse.redelegation:type_name -> cosmos.staking.v1beta1.Redelegation + 19, // 23: cosmos.staking.v1beta1.RedelegationResponse.entries:type_name -> cosmos.staking.v1beta1.RedelegationEntryResponse + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_cosmos_staking_v1beta1_staking_proto_init() } @@ -13425,7 +14288,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommissionRates); i { + switch v := v.(*ConsPubKeyRotationHistory); i { case 0: return &v.state case 1: @@ -13437,7 +14300,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Commission); i { + switch v := v.(*CommissionRates); i { case 0: return &v.state case 1: @@ -13449,7 +14312,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Description); i { + switch v := v.(*Commission); i { case 0: return &v.state case 1: @@ -13461,7 +14324,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Validator); i { + switch v := v.(*Description); i { case 0: return &v.state case 1: @@ -13473,7 +14336,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValAddresses); i { + switch v := v.(*Validator); i { case 0: return &v.state case 1: @@ -13485,7 +14348,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DVPair); i { + switch v := v.(*ValAddresses); i { case 0: return &v.state case 1: @@ -13497,7 +14360,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DVPairs); i { + switch v := v.(*DVPair); i { case 0: return &v.state case 1: @@ -13509,7 +14372,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DVVTriplet); i { + switch v := v.(*DVPairs); i { case 0: return &v.state case 1: @@ -13521,7 +14384,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DVVTriplets); i { + switch v := v.(*DVVTriplet); i { case 0: return &v.state case 1: @@ -13533,7 +14396,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Delegation); i { + switch v := v.(*DVVTriplets); i { case 0: return &v.state case 1: @@ -13545,7 +14408,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnbondingDelegation); i { + switch v := v.(*Delegation); i { case 0: return &v.state case 1: @@ -13557,7 +14420,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnbondingDelegationEntry); i { + switch v := v.(*UnbondingDelegation); i { case 0: return &v.state case 1: @@ -13569,7 +14432,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedelegationEntry); i { + switch v := v.(*UnbondingDelegationEntry); i { case 0: return &v.state case 1: @@ -13581,7 +14444,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Redelegation); i { + switch v := v.(*RedelegationEntry); i { case 0: return &v.state case 1: @@ -13593,7 +14456,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Params); i { + switch v := v.(*Redelegation); i { case 0: return &v.state case 1: @@ -13605,7 +14468,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelegationResponse); i { + switch v := v.(*Params); i { case 0: return &v.state case 1: @@ -13617,7 +14480,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedelegationEntryResponse); i { + switch v := v.(*DelegationResponse); i { case 0: return &v.state case 1: @@ -13629,7 +14492,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RedelegationResponse); i { + switch v := v.(*RedelegationEntryResponse); i { case 0: return &v.state case 1: @@ -13641,6 +14504,18 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { } } file_cosmos_staking_v1beta1_staking_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedelegationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_staking_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Pool); i { case 0: return &v.state @@ -13659,7 +14534,7 @@ func file_cosmos_staking_v1beta1_staking_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_staking_v1beta1_staking_proto_rawDesc, NumEnums: 1, - NumMessages: 20, + NumMessages: 21, NumExtensions: 0, NumServices: 0, }, diff --git a/api/cosmos/staking/v1beta1/tx.pulsar.go b/api/cosmos/staking/v1beta1/tx.pulsar.go index a2ff599dec41..6a9388fa1579 100644 --- a/api/cosmos/staking/v1beta1/tx.pulsar.go +++ b/api/cosmos/staking/v1beta1/tx.pulsar.go @@ -6167,6 +6167,925 @@ func (x *fastReflection_MsgCancelUnbondingDelegationResponse) ProtoMethods() *pr } } +var ( + md_MsgRotateConsPubKey protoreflect.MessageDescriptor + fd_MsgRotateConsPubKey_sender protoreflect.FieldDescriptor + fd_MsgRotateConsPubKey_validator_address protoreflect.FieldDescriptor + fd_MsgRotateConsPubKey_new_pub_key protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgRotateConsPubKey = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgRotateConsPubKey") + fd_MsgRotateConsPubKey_sender = md_MsgRotateConsPubKey.Fields().ByName("sender") + fd_MsgRotateConsPubKey_validator_address = md_MsgRotateConsPubKey.Fields().ByName("validator_address") + fd_MsgRotateConsPubKey_new_pub_key = md_MsgRotateConsPubKey.Fields().ByName("new_pub_key") +} + +var _ protoreflect.Message = (*fastReflection_MsgRotateConsPubKey)(nil) + +type fastReflection_MsgRotateConsPubKey MsgRotateConsPubKey + +func (x *MsgRotateConsPubKey) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRotateConsPubKey)(x) +} + +func (x *MsgRotateConsPubKey) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[12] + 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_MsgRotateConsPubKey_messageType fastReflection_MsgRotateConsPubKey_messageType +var _ protoreflect.MessageType = fastReflection_MsgRotateConsPubKey_messageType{} + +type fastReflection_MsgRotateConsPubKey_messageType struct{} + +func (x fastReflection_MsgRotateConsPubKey_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRotateConsPubKey)(nil) +} +func (x fastReflection_MsgRotateConsPubKey_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRotateConsPubKey) +} +func (x fastReflection_MsgRotateConsPubKey_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRotateConsPubKey +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRotateConsPubKey) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRotateConsPubKey +} + +// 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_MsgRotateConsPubKey) Type() protoreflect.MessageType { + return _fastReflection_MsgRotateConsPubKey_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRotateConsPubKey) New() protoreflect.Message { + return new(fastReflection_MsgRotateConsPubKey) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRotateConsPubKey) Interface() protoreflect.ProtoMessage { + return (*MsgRotateConsPubKey)(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_MsgRotateConsPubKey) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Sender != "" { + value := protoreflect.ValueOfString(x.Sender) + if !f(fd_MsgRotateConsPubKey_sender, value) { + return + } + } + if x.ValidatorAddress != "" { + value := protoreflect.ValueOfString(x.ValidatorAddress) + if !f(fd_MsgRotateConsPubKey_validator_address, value) { + return + } + } + if x.NewPubKey != nil { + value := protoreflect.ValueOfMessage(x.NewPubKey.ProtoReflect()) + if !f(fd_MsgRotateConsPubKey_new_pub_key, 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_MsgRotateConsPubKey) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.sender": + return x.Sender != "" + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.validator_address": + return x.ValidatorAddress != "" + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key": + return x.NewPubKey != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKey")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKey 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_MsgRotateConsPubKey) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.sender": + x.Sender = "" + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.validator_address": + x.ValidatorAddress = "" + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key": + x.NewPubKey = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKey")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKey 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_MsgRotateConsPubKey) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.sender": + value := x.Sender + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.validator_address": + value := x.ValidatorAddress + return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key": + value := x.NewPubKey + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKey")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKey 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_MsgRotateConsPubKey) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.sender": + x.Sender = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.validator_address": + x.ValidatorAddress = value.Interface().(string) + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key": + x.NewPubKey = value.Message().Interface().(*anypb.Any) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKey")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKey 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_MsgRotateConsPubKey) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key": + if x.NewPubKey == nil { + x.NewPubKey = new(anypb.Any) + } + return protoreflect.ValueOfMessage(x.NewPubKey.ProtoReflect()) + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.sender": + panic(fmt.Errorf("field sender of message cosmos.staking.v1beta1.MsgRotateConsPubKey is not mutable")) + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.validator_address": + panic(fmt.Errorf("field validator_address of message cosmos.staking.v1beta1.MsgRotateConsPubKey is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKey")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKey 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_MsgRotateConsPubKey) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.sender": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.validator_address": + return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key": + m := new(anypb.Any) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKey")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKey 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_MsgRotateConsPubKey) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgRotateConsPubKey", 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_MsgRotateConsPubKey) 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_MsgRotateConsPubKey) 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_MsgRotateConsPubKey) 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_MsgRotateConsPubKey) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRotateConsPubKey) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Sender) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ValidatorAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.NewPubKey != nil { + l = options.Size(x.NewPubKey) + n += 1 + l + runtime.Sov(uint64(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().(*MsgRotateConsPubKey) + 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.NewPubKey != nil { + encoded, err := options.Marshal(x.NewPubKey) + 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] = 0x1a + } + if len(x.ValidatorAddress) > 0 { + i -= len(x.ValidatorAddress) + copy(dAtA[i:], x.ValidatorAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(x.Sender) > 0 { + i -= len(x.Sender) + copy(dAtA[i:], x.Sender) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sender))) + i-- + dAtA[i] = 0xa + } + 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().(*MsgRotateConsPubKey) + 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: MsgRotateConsPubKey: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRotateConsPubKey: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen 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++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + 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.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen 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++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + 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.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NewPubKey", 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 + } + if x.NewPubKey == nil { + x.NewPubKey = &anypb.Any{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.NewPubKey); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + 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 ( + md_MsgRotateConsPubKeyResponse protoreflect.MessageDescriptor +) + +func init() { + file_cosmos_staking_v1beta1_tx_proto_init() + md_MsgRotateConsPubKeyResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgRotateConsPubKeyResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgRotateConsPubKeyResponse)(nil) + +type fastReflection_MsgRotateConsPubKeyResponse MsgRotateConsPubKeyResponse + +func (x *MsgRotateConsPubKeyResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRotateConsPubKeyResponse)(x) +} + +func (x *MsgRotateConsPubKeyResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[13] + 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_MsgRotateConsPubKeyResponse_messageType fastReflection_MsgRotateConsPubKeyResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgRotateConsPubKeyResponse_messageType{} + +type fastReflection_MsgRotateConsPubKeyResponse_messageType struct{} + +func (x fastReflection_MsgRotateConsPubKeyResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRotateConsPubKeyResponse)(nil) +} +func (x fastReflection_MsgRotateConsPubKeyResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRotateConsPubKeyResponse) +} +func (x fastReflection_MsgRotateConsPubKeyResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRotateConsPubKeyResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRotateConsPubKeyResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRotateConsPubKeyResponse +} + +// 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_MsgRotateConsPubKeyResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgRotateConsPubKeyResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRotateConsPubKeyResponse) New() protoreflect.Message { + return new(fastReflection_MsgRotateConsPubKeyResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRotateConsPubKeyResponse) Interface() protoreflect.ProtoMessage { + return (*MsgRotateConsPubKeyResponse)(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_MsgRotateConsPubKeyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// 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_MsgRotateConsPubKeyResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse 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_MsgRotateConsPubKeyResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse 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_MsgRotateConsPubKeyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse 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_MsgRotateConsPubKeyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse 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_MsgRotateConsPubKeyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse 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_MsgRotateConsPubKeyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse")) + } + panic(fmt.Errorf("message cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse 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_MsgRotateConsPubKeyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse", 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_MsgRotateConsPubKeyResponse) 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_MsgRotateConsPubKeyResponse) 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_MsgRotateConsPubKeyResponse) 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_MsgRotateConsPubKeyResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRotateConsPubKeyResponse) + 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.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().(*MsgRotateConsPubKeyResponse) + 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 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().(*MsgRotateConsPubKeyResponse) + 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: MsgRotateConsPubKeyResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRotateConsPubKeyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + 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, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -6741,6 +7660,83 @@ func (*MsgCancelUnbondingDelegationResponse) Descriptor() ([]byte, []int) { return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{11} } +type MsgRotateConsPubKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + NewPubKey *anypb.Any `protobuf:"bytes,3,opt,name=new_pub_key,json=newPubKey,proto3" json:"new_pub_key,omitempty"` +} + +func (x *MsgRotateConsPubKey) Reset() { + *x = MsgRotateConsPubKey{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRotateConsPubKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRotateConsPubKey) ProtoMessage() {} + +// Deprecated: Use MsgRotateConsPubKey.ProtoReflect.Descriptor instead. +func (*MsgRotateConsPubKey) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{12} +} + +func (x *MsgRotateConsPubKey) GetSender() string { + if x != nil { + return x.Sender + } + return "" +} + +func (x *MsgRotateConsPubKey) GetValidatorAddress() string { + if x != nil { + return x.ValidatorAddress + } + return "" +} + +func (x *MsgRotateConsPubKey) GetNewPubKey() *anypb.Any { + if x != nil { + return x.NewPubKey + } + return nil +} + +type MsgRotateConsPubKeyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgRotateConsPubKeyResponse) Reset() { + *x = MsgRotateConsPubKeyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_staking_v1beta1_tx_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRotateConsPubKeyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRotateConsPubKeyResponse) ProtoMessage() {} + +// Deprecated: Use MsgRotateConsPubKeyResponse.ProtoReflect.Descriptor instead. +func (*MsgRotateConsPubKeyResponse) Descriptor() ([]byte, []int) { + return file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP(), []int{13} +} + var File_cosmos_staking_v1beta1_tx_proto protoreflect.FileDescriptor var file_cosmos_staking_v1beta1_tx_proto_rawDesc = []byte{ @@ -6916,7 +7912,23 @@ var file_cosmos_staking_v1beta1_tx_proto_rawDesc = []byte{ 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x32, 0xac, 0x05, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x72, 0x65, + 0x65, 0x22, 0xde, 0x01, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x50, 0x75, 0x62, 0x4b, + 0x65, 0x79, 0x22, 0x1d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x32, 0xa2, 0x06, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, @@ -6959,21 +7971,28 @@ var file_cosmos_staking_v1beta1_tx_proto_rawDesc = []byte{ 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x42, 0xd7, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, - 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, - 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x12, 0x74, 0x0a, 0x10, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, + 0x62, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, + 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, + 0x79, 0x1a, 0x33, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x6f, + 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xd7, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, + 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, + 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6988,7 +8007,7 @@ func file_cosmos_staking_v1beta1_tx_proto_rawDescGZIP() []byte { return file_cosmos_staking_v1beta1_tx_proto_rawDescData } -var file_cosmos_staking_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_cosmos_staking_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_cosmos_staking_v1beta1_tx_proto_goTypes = []interface{}{ (*MsgCreateValidator)(nil), // 0: cosmos.staking.v1beta1.MsgCreateValidator (*MsgCreateValidatorResponse)(nil), // 1: cosmos.staking.v1beta1.MsgCreateValidatorResponse @@ -7002,41 +8021,46 @@ var file_cosmos_staking_v1beta1_tx_proto_goTypes = []interface{}{ (*MsgUndelegateResponse)(nil), // 9: cosmos.staking.v1beta1.MsgUndelegateResponse (*MsgCancelUnbondingDelegation)(nil), // 10: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation (*MsgCancelUnbondingDelegationResponse)(nil), // 11: cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse - (*Description)(nil), // 12: cosmos.staking.v1beta1.Description - (*CommissionRates)(nil), // 13: cosmos.staking.v1beta1.CommissionRates - (*anypb.Any)(nil), // 14: google.protobuf.Any - (*v1beta1.Coin)(nil), // 15: cosmos.base.v1beta1.Coin - (*timestamppb.Timestamp)(nil), // 16: google.protobuf.Timestamp + (*MsgRotateConsPubKey)(nil), // 12: cosmos.staking.v1beta1.MsgRotateConsPubKey + (*MsgRotateConsPubKeyResponse)(nil), // 13: cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse + (*Description)(nil), // 14: cosmos.staking.v1beta1.Description + (*CommissionRates)(nil), // 15: cosmos.staking.v1beta1.CommissionRates + (*anypb.Any)(nil), // 16: google.protobuf.Any + (*v1beta1.Coin)(nil), // 17: cosmos.base.v1beta1.Coin + (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp } var file_cosmos_staking_v1beta1_tx_proto_depIdxs = []int32{ - 12, // 0: cosmos.staking.v1beta1.MsgCreateValidator.description:type_name -> cosmos.staking.v1beta1.Description - 13, // 1: cosmos.staking.v1beta1.MsgCreateValidator.commission:type_name -> cosmos.staking.v1beta1.CommissionRates - 14, // 2: cosmos.staking.v1beta1.MsgCreateValidator.pubkey:type_name -> google.protobuf.Any - 15, // 3: cosmos.staking.v1beta1.MsgCreateValidator.value:type_name -> cosmos.base.v1beta1.Coin - 12, // 4: cosmos.staking.v1beta1.MsgEditValidator.description:type_name -> cosmos.staking.v1beta1.Description - 15, // 5: cosmos.staking.v1beta1.MsgDelegate.amount:type_name -> cosmos.base.v1beta1.Coin - 15, // 6: cosmos.staking.v1beta1.MsgBeginRedelegate.amount:type_name -> cosmos.base.v1beta1.Coin - 16, // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse.completion_time:type_name -> google.protobuf.Timestamp - 15, // 8: cosmos.staking.v1beta1.MsgUndelegate.amount:type_name -> cosmos.base.v1beta1.Coin - 16, // 9: cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time:type_name -> google.protobuf.Timestamp - 15, // 10: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation.amount:type_name -> cosmos.base.v1beta1.Coin - 0, // 11: cosmos.staking.v1beta1.Msg.CreateValidator:input_type -> cosmos.staking.v1beta1.MsgCreateValidator - 2, // 12: cosmos.staking.v1beta1.Msg.EditValidator:input_type -> cosmos.staking.v1beta1.MsgEditValidator - 4, // 13: cosmos.staking.v1beta1.Msg.Delegate:input_type -> cosmos.staking.v1beta1.MsgDelegate - 6, // 14: cosmos.staking.v1beta1.Msg.BeginRedelegate:input_type -> cosmos.staking.v1beta1.MsgBeginRedelegate - 8, // 15: cosmos.staking.v1beta1.Msg.Undelegate:input_type -> cosmos.staking.v1beta1.MsgUndelegate - 10, // 16: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:input_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegation - 1, // 17: cosmos.staking.v1beta1.Msg.CreateValidator:output_type -> cosmos.staking.v1beta1.MsgCreateValidatorResponse - 3, // 18: cosmos.staking.v1beta1.Msg.EditValidator:output_type -> cosmos.staking.v1beta1.MsgEditValidatorResponse - 5, // 19: cosmos.staking.v1beta1.Msg.Delegate:output_type -> cosmos.staking.v1beta1.MsgDelegateResponse - 7, // 20: cosmos.staking.v1beta1.Msg.BeginRedelegate:output_type -> cosmos.staking.v1beta1.MsgBeginRedelegateResponse - 9, // 21: cosmos.staking.v1beta1.Msg.Undelegate:output_type -> cosmos.staking.v1beta1.MsgUndelegateResponse - 11, // 22: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:output_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse - 17, // [17:23] is the sub-list for method output_type - 11, // [11:17] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 14, // 0: cosmos.staking.v1beta1.MsgCreateValidator.description:type_name -> cosmos.staking.v1beta1.Description + 15, // 1: cosmos.staking.v1beta1.MsgCreateValidator.commission:type_name -> cosmos.staking.v1beta1.CommissionRates + 16, // 2: cosmos.staking.v1beta1.MsgCreateValidator.pubkey:type_name -> google.protobuf.Any + 17, // 3: cosmos.staking.v1beta1.MsgCreateValidator.value:type_name -> cosmos.base.v1beta1.Coin + 14, // 4: cosmos.staking.v1beta1.MsgEditValidator.description:type_name -> cosmos.staking.v1beta1.Description + 17, // 5: cosmos.staking.v1beta1.MsgDelegate.amount:type_name -> cosmos.base.v1beta1.Coin + 17, // 6: cosmos.staking.v1beta1.MsgBeginRedelegate.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse.completion_time:type_name -> google.protobuf.Timestamp + 17, // 8: cosmos.staking.v1beta1.MsgUndelegate.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 9: cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time:type_name -> google.protobuf.Timestamp + 17, // 10: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation.amount:type_name -> cosmos.base.v1beta1.Coin + 16, // 11: cosmos.staking.v1beta1.MsgRotateConsPubKey.new_pub_key:type_name -> google.protobuf.Any + 0, // 12: cosmos.staking.v1beta1.Msg.CreateValidator:input_type -> cosmos.staking.v1beta1.MsgCreateValidator + 2, // 13: cosmos.staking.v1beta1.Msg.EditValidator:input_type -> cosmos.staking.v1beta1.MsgEditValidator + 4, // 14: cosmos.staking.v1beta1.Msg.Delegate:input_type -> cosmos.staking.v1beta1.MsgDelegate + 6, // 15: cosmos.staking.v1beta1.Msg.BeginRedelegate:input_type -> cosmos.staking.v1beta1.MsgBeginRedelegate + 8, // 16: cosmos.staking.v1beta1.Msg.Undelegate:input_type -> cosmos.staking.v1beta1.MsgUndelegate + 10, // 17: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:input_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegation + 12, // 18: cosmos.staking.v1beta1.Msg.RotateConsPubKey:input_type -> cosmos.staking.v1beta1.MsgRotateConsPubKey + 1, // 19: cosmos.staking.v1beta1.Msg.CreateValidator:output_type -> cosmos.staking.v1beta1.MsgCreateValidatorResponse + 3, // 20: cosmos.staking.v1beta1.Msg.EditValidator:output_type -> cosmos.staking.v1beta1.MsgEditValidatorResponse + 5, // 21: cosmos.staking.v1beta1.Msg.Delegate:output_type -> cosmos.staking.v1beta1.MsgDelegateResponse + 7, // 22: cosmos.staking.v1beta1.Msg.BeginRedelegate:output_type -> cosmos.staking.v1beta1.MsgBeginRedelegateResponse + 9, // 23: cosmos.staking.v1beta1.Msg.Undelegate:output_type -> cosmos.staking.v1beta1.MsgUndelegateResponse + 11, // 24: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:output_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse + 13, // 25: cosmos.staking.v1beta1.Msg.RotateConsPubKey:output_type -> cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse + 19, // [19:26] is the sub-list for method output_type + 12, // [12:19] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_cosmos_staking_v1beta1_tx_proto_init() } @@ -7190,6 +8214,30 @@ func file_cosmos_staking_v1beta1_tx_proto_init() { return nil } } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRotateConsPubKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_staking_v1beta1_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRotateConsPubKeyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -7197,7 +8245,7 @@ func file_cosmos_staking_v1beta1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cosmos_staking_v1beta1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 14, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cosmos/staking/v1beta1/tx_grpc.pb.go b/api/cosmos/staking/v1beta1/tx_grpc.pb.go index e9361597b88e..c0d31b554217 100644 --- a/api/cosmos/staking/v1beta1/tx_grpc.pb.go +++ b/api/cosmos/staking/v1beta1/tx_grpc.pb.go @@ -40,6 +40,7 @@ type MsgClient interface { // // Since: cosmos-sdk 0.46 CancelUnbondingDelegation(ctx context.Context, in *MsgCancelUnbondingDelegation, opts ...grpc.CallOption) (*MsgCancelUnbondingDelegationResponse, error) + RotateConsPubKey(ctx context.Context, in *MsgRotateConsPubKey, opts ...grpc.CallOption) (*MsgRotateConsPubKeyResponse, error) } type msgClient struct { @@ -104,6 +105,15 @@ func (c *msgClient) CancelUnbondingDelegation(ctx context.Context, in *MsgCancel return out, nil } +func (c *msgClient) RotateConsPubKey(ctx context.Context, in *MsgRotateConsPubKey, opts ...grpc.CallOption) (*MsgRotateConsPubKeyResponse, error) { + out := new(MsgRotateConsPubKeyResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/RotateConsPubKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -126,6 +136,7 @@ type MsgServer interface { // // Since: cosmos-sdk 0.46 CancelUnbondingDelegation(context.Context, *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) + RotateConsPubKey(context.Context, *MsgRotateConsPubKey) (*MsgRotateConsPubKeyResponse, error) mustEmbedUnimplementedMsgServer() } @@ -151,6 +162,9 @@ func (UnimplementedMsgServer) Undelegate(context.Context, *MsgUndelegate) (*MsgU func (UnimplementedMsgServer) CancelUnbondingDelegation(context.Context, *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CancelUnbondingDelegation not implemented") } +func (UnimplementedMsgServer) RotateConsPubKey(context.Context, *MsgRotateConsPubKey) (*MsgRotateConsPubKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RotateConsPubKey not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -272,6 +286,24 @@ func _Msg_CancelUnbondingDelegation_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Msg_RotateConsPubKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRotateConsPubKey) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RotateConsPubKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/RotateConsPubKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RotateConsPubKey(ctx, req.(*MsgRotateConsPubKey)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -303,6 +335,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "CancelUnbondingDelegation", Handler: _Msg_CancelUnbondingDelegation_Handler, }, + { + MethodName: "RotateConsPubKey", + Handler: _Msg_RotateConsPubKey_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/staking/v1beta1/tx.proto", diff --git a/proto/cosmos/staking/v1beta1/staking.proto b/proto/cosmos/staking/v1beta1/staking.proto index 6dc965feab47..9c6f47bc3f52 100644 --- a/proto/cosmos/staking/v1beta1/staking.proto +++ b/proto/cosmos/staking/v1beta1/staking.proto @@ -21,6 +21,13 @@ message HistoricalInfo { repeated Validator valset = 2 [(gogoproto.nullable) = false]; } +message ConsPubKeyRotationHistory { + string operator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + google.protobuf.Any old_cons_pubkey = 2 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; + google.protobuf.Any new_cons_pubkey = 3 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; + int64 rotated_height = 4; +} + // CommissionRates defines the initial commission rates to be used for creating // a validator. message CommissionRates { @@ -303,6 +310,10 @@ message Params { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; + // max_cons_pub_key_rotations is maximum number of consensus pubkey rotations + uint64 max_cons_pub_key_rotations = 7; + // cons_pubkey_rotation_fee is fee to be spent when rotating validator's consensus pubkey + cosmos.base.v1beta1.Coin cons_pubkey_rotation_fee = 8 [(gogoproto.nullable) = false]; } // DelegationResponse is equivalent to Delegation except that it contains a diff --git a/proto/cosmos/staking/v1beta1/tx.proto b/proto/cosmos/staking/v1beta1/tx.proto index ca8f76df19dc..843c31aa34ab 100644 --- a/proto/cosmos/staking/v1beta1/tx.proto +++ b/proto/cosmos/staking/v1beta1/tx.proto @@ -38,6 +38,8 @@ service Msg { // // Since: cosmos-sdk 0.46 rpc CancelUnbondingDelegation(MsgCancelUnbondingDelegation) returns (MsgCancelUnbondingDelegationResponse); + + rpc RotateConsPubKey(MsgRotateConsPubKey) returns (MsgRotateConsPubKeyResponse); } // MsgCreateValidator defines a SDK message for creating a new validator. @@ -151,10 +153,10 @@ message MsgCancelUnbondingDelegation{ option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; - string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - // amount is always less than or equal to unbonding delegation entry balance - cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false]; + string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // amount is always less than or equal to unbonding delegation entry balance + cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false]; // creation_height is the height which the unbonding took place. int64 creation_height = 4; } @@ -162,4 +164,12 @@ message MsgCancelUnbondingDelegation{ // MsgCancelUnbondingDelegationResponse // // Since: cosmos-sdk 0.46 -message MsgCancelUnbondingDelegationResponse{} +message MsgCancelUnbondingDelegationResponse {} + +message MsgRotateConsPubKey { + string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + google.protobuf.Any new_pub_key = 3 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; +} + +message MsgRotateConsPubKeyResponse {} diff --git a/startnode.sh b/startnode.sh new file mode 100644 index 000000000000..65d0bb1307f9 --- /dev/null +++ b/startnode.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +rm -rf $HOME/.simd + +set -o errexit -o nounset + +simd init --chain-id test test --home=$HOME/.simd +simd keys add validator --keyring-backend="test" --home=$HOME/.simd +simd add-genesis-account $(simd keys show validator -a --keyring-backend="test" --home=$HOME/.simd) 100000000000000stake --home=$HOME/.simd +simd gentx validator 100000000stake --keyring-backend="test" --chain-id test --home=$HOME/.simd +simd collect-gentxs --home=$HOME/.simd + +# Start node +simd start --pruning=nothing --home=$HOME/.simd --mode=validator + +# simd tx staking rotate-cons-pubkey --home=$HOME/.simd --chain-id=test --keyring-backend=test --from=validator --pubkey='{"@type":"/cosmos.crypto.ed25519.PubKey","key":"/bjz9vxsyxzyTiGjG289dBn/4G4Bu6U1pI1dL17MbIY="}' -y --broadcast-mode=block diff --git a/validator/node_key.json b/validator/node_key.json new file mode 100644 index 000000000000..59a6ec763435 --- /dev/null +++ b/validator/node_key.json @@ -0,0 +1 @@ +{"id":"fa8cc8ac4f99accdb0c8a7b6245cbe1aa4721425","priv_key":{"type":"tendermint/PrivKeyEd25519","value":"Gzrgsin0NNXi8aeE5mmPs7agxIli3IBkRRCMRZMANlZEQFv/5HW36SrNyz+VKYODqq2PijruXiEPPLpJUpAPgw=="}} \ No newline at end of file diff --git a/validator/priv_validator_key.json b/validator/priv_validator_key.json new file mode 100644 index 000000000000..34e47f573391 --- /dev/null +++ b/validator/priv_validator_key.json @@ -0,0 +1,11 @@ +{ + "address": "51CCD98D491829A4F0C9DA2DC38030BC72954FEA", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/bjz9vxsyxzyTiGjG289dBn/4G4Bu6U1pI1dL17MbIY=" + }, + "priv_key": { + "type": "tendermint/PrivKeyEd25519", + "value": "aGpgq75JHCIEBYCTFKULAijfu8YT8E5gLZQRI/upAf79uPP2/GzLHPJOIaMbbz10Gf/gbgG7pTWkjV0vXsxshg==" + } +} diff --git a/validator/pubKey.json b/validator/pubKey.json new file mode 100644 index 000000000000..454ac747d7f6 --- /dev/null +++ b/validator/pubKey.json @@ -0,0 +1 @@ +{"@type":"/cosmos.crypto.ed25519.PubKey","key":"/bjz9vxsyxzyTiGjG289dBn/4G4Bu6U1pI1dL17MbIY="} \ No newline at end of file diff --git a/x/distribution/keeper/hooks.go b/x/distribution/keeper/hooks.go index 0c66d44e33e7..61d8e265f7dc 100644 --- a/x/distribution/keeper/hooks.go +++ b/x/distribution/keeper/hooks.go @@ -1,6 +1,7 @@ package keeper import ( + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/distribution/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -109,6 +110,13 @@ func (h Hooks) BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, f return nil } +func (h Hooks) AfterConsensusPubKeyUpdate(ctx sdk.Context, oldPubKey cryptotypes.PubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error { + feePool := h.k.GetFeePool(ctx) + feePool.CommunityPool = feePool.CommunityPool.Add(sdk.NewDecCoinsFromCoins(rotationFee)...) + h.k.SetFeePool(ctx, feePool) + return nil +} + func (h Hooks) BeforeValidatorModified(_ sdk.Context, _ sdk.ValAddress) error { return nil } func (h Hooks) AfterValidatorBonded(_ sdk.Context, _ sdk.ConsAddress, _ sdk.ValAddress) error { return nil diff --git a/x/slashing/keeper/hooks.go b/x/slashing/keeper/hooks.go index 09d1afe02fac..e77334d0a8f6 100644 --- a/x/slashing/keeper/hooks.go +++ b/x/slashing/keeper/hooks.go @@ -5,6 +5,7 @@ import ( "github.com/tendermint/tendermint/crypto" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/slashing/types" ) @@ -88,3 +89,6 @@ func (h Hooks) AfterDelegationModified(_ sdk.Context, _ sdk.AccAddress, _ sdk.Va return nil } func (h Hooks) BeforeValidatorSlashed(_ sdk.Context, _ sdk.ValAddress, _ sdk.Dec) error { return nil } +func (h Hooks) AfterConsensusPubKeyUpdate(ctx sdk.Context, oldPubKey cryptotypes.PubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error { + return h.k.PerformConsensusPubKeyUpdate(ctx, oldPubKey, newPubKey) +} diff --git a/x/slashing/keeper/signing_info.go b/x/slashing/keeper/signing_info.go index ed15ae3e4ff3..52297c478942 100644 --- a/x/slashing/keeper/signing_info.go +++ b/x/slashing/keeper/signing_info.go @@ -5,6 +5,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/slashing/types" ) @@ -37,6 +38,12 @@ func (k Keeper) SetValidatorSigningInfo(ctx sdk.Context, address sdk.ConsAddress store.Set(types.ValidatorSigningInfoKey(address), bz) } +// RemoveValidatorSigningInfo removes the validator signing info from a consensus address key +func (k Keeper) RemoveValidatorSigningInfo(ctx sdk.Context, address sdk.ConsAddress) { + store := ctx.KVStore(k.storeKey) + store.Delete(types.ValidatorSigningInfoKey(address)) +} + // IterateValidatorSigningInfos iterates over the stored ValidatorSigningInfo func (k Keeper) IterateValidatorSigningInfos(ctx sdk.Context, handler func(address sdk.ConsAddress, info types.ValidatorSigningInfo) (stop bool)) { @@ -156,3 +163,25 @@ func (k Keeper) clearValidatorMissedBlockBitArray(ctx sdk.Context, address sdk.C store.Delete(iter.Key()) } } + +func (k Keeper) PerformConsensusPubKeyUpdate(ctx sdk.Context, oldPubKey cryptotypes.PubKey, newPubKey cryptotypes.PubKey) error { + // Connect new consensus address with PubKey + k.AddPubkey(ctx, newPubKey) + + // Migrate ValidatorSigningInfo from oldPubKey to newPubKey + signingInfo, found := k.GetValidatorSigningInfo(ctx, sdk.ConsAddress(oldPubKey.Address())) + if !found { + return nil + } + // k.RemoveValidatorSigningInfo(ctx, sdk.ConsAddress(oldPubKey.Address())) + k.SetValidatorSigningInfo(ctx, sdk.ConsAddress(newPubKey.Address()), signingInfo) + + // Migrate ValidatorMissedBlockBitArray from oldPubKey to newPubKey + missedBlocks := k.GetValidatorMissedBlocks(ctx, sdk.ConsAddress(oldPubKey.Address())) + k.clearValidatorMissedBlockBitArray(ctx, sdk.ConsAddress(oldPubKey.Address())) + for _, missed := range missedBlocks { + k.SetValidatorMissedBlockBitArray(ctx, sdk.ConsAddress(newPubKey.Address()), missed.Index, missed.Missed) + } + + return nil +} diff --git a/x/slashing/keeper/signing_info_test.go b/x/slashing/keeper/signing_info_test.go index cee32a0d54c4..5e3680da05f2 100644 --- a/x/slashing/keeper/signing_info_test.go +++ b/x/slashing/keeper/signing_info_test.go @@ -94,3 +94,44 @@ func TestJailUntil(t *testing.T) { require.True(t, ok) require.Equal(t, time.Unix(253402300799, 0).UTC(), info.JailedUntil) } + +func TestPerformConsensusPubKeyUpdate(t *testing.T) { + app := simapp.Setup(t, false) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) + + pks := simapp.CreateTestPubKeys(2) + simapp.AddTestAddrsFromPubKeys(app, ctx, pks, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) + + oldConsAddr := sdk.ConsAddress(pks[0].Address()) + newConsAddr := sdk.ConsAddress(pks[1].Address()) + newInfo := types.NewValidatorSigningInfo( + sdk.ConsAddress(oldConsAddr), + int64(4), + int64(3), + time.Unix(2, 0).UTC(), + false, + int64(10), + ) + app.SlashingKeeper.SetValidatorSigningInfo(ctx, oldConsAddr, newInfo) + app.SlashingKeeper.SetValidatorMissedBlockBitArray(ctx, oldConsAddr, 10, true) + err := app.SlashingKeeper.PerformConsensusPubKeyUpdate(ctx, pks[0], pks[1]) + require.NoError(t, err) + + // check pubkey relation is set properly + savedPubKey, err := app.SlashingKeeper.GetPubkey(ctx, newConsAddr.Bytes()) + require.NoError(t, err) + require.Equal(t, savedPubKey, pks[1]) + + // check validator SigningInfo is set properly to new consensus pubkey + signingInfo, found := app.SlashingKeeper.GetValidatorSigningInfo(ctx, newConsAddr) + require.True(t, found) + require.Equal(t, signingInfo, newInfo) + + // check missed blocks array is removed on old consensus pubkey + missedBlocks := app.SlashingKeeper.GetValidatorMissedBlocks(ctx, oldConsAddr) + require.Len(t, missedBlocks, 0) + + // check missed blocks are set correctly for new pubkey + missedBlocks = app.SlashingKeeper.GetValidatorMissedBlocks(ctx, newConsAddr) + require.Len(t, missedBlocks, 1) +} diff --git a/x/staking/client/cli/tx.go b/x/staking/client/cli/tx.go index 6a9d5393120f..7402ba9be42f 100644 --- a/x/staking/client/cli/tx.go +++ b/x/staking/client/cli/tx.go @@ -42,6 +42,7 @@ func NewTxCmd() *cobra.Command { stakingTxCmd.AddCommand( NewCreateValidatorCmd(), NewEditValidatorCmd(), + NewRotateConsensusKeyCmd(), NewDelegateCmd(), NewRedelegateCmd(), NewUnbondCmd(), @@ -145,6 +146,37 @@ func NewEditValidatorCmd() *cobra.Command { return cmd } +func NewRotateConsensusKeyCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "rotate-cons-pubkey", + Short: "rotate validator consensus pub key", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + txf := tx.NewFactoryCLI(clientCtx, cmd.Flags()). + WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) + txf, msg, err := newBuildRotateConsPubKeyMsg(clientCtx, txf, cmd.Flags()) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + cmd.Flags().AddFlagSet(FlagSetPublicKey()) + + flags.AddTxFlagsToCmd(cmd) + + _ = cmd.MarkFlagRequired(flags.FlagFrom) + _ = cmd.MarkFlagRequired(FlagPubKey) + + return cmd +} + func NewDelegateCmd() *cobra.Command { bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() @@ -401,6 +433,32 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl return txf, msg, nil } +func newBuildRotateConsPubKeyMsg(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) (tx.Factory, *types.MsgRotateConsPubKey, error) { + + valAddr := clientCtx.GetFromAddress() + pkStr, err := fs.GetString(FlagPubKey) + if err != nil { + return txf, nil, err + } + + var pk cryptotypes.PubKey + if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(pkStr), &pk); err != nil { + return txf, nil, err + } + + msg, err := types.NewMsgRotateConsPubKey( + valAddr, sdk.ValAddress(valAddr), pk, + ) + if err != nil { + return txf, nil, err + } + if err := msg.ValidateBasic(); err != nil { + return txf, nil, err + } + + return txf, msg, nil +} + // Return the flagset, particular flags, and a description of defaults // this is anticipated to be used with the gen-tx func CreateValidatorMsgFlagSet(ipDefault string) (fs *flag.FlagSet, defaultsDesc string) { diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index 879808868eb9..db34f684c213 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -1547,3 +1547,19 @@ func (s *IntegrationTestSuite) TestEditValidatorMoniker() { require.NoError(val.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), &result)) require.Equal(result.GetMoniker(), moniker) } + +func (s *IntegrationTestSuite) TestRotateConsensusKey() { + val := s.network.Validators[0] + require := s.Require() + + txCmd := cli.NewRotateConsensusKeyCmd() + _, err := clitestutil.ExecTestCLICmd(val.ClientCtx, txCmd, []string{ + val.ValAddress.String(), + fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", cli.FlagPubKey, `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"/bjz9vxsyxzyTiGjG289dBn/4G4Bu6U1pI1dL17MbIY="}`), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + }) + require.NoError(err) +} diff --git a/x/staking/keeper/cons_pubkey.go b/x/staking/keeper/cons_pubkey.go new file mode 100644 index 000000000000..f831114bbb96 --- /dev/null +++ b/x/staking/keeper/cons_pubkey.go @@ -0,0 +1,42 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +func (k Keeper) SetConsPubKeyRotationHistory(ctx sdk.Context, history types.ConsPubKeyRotationHistory) { + store := ctx.KVStore(k.storeKey) + key := types.GetValidatorConsPubKeyRotationHistoryKey(history) + historyBytes := types.MustMarshalConsPubKeyRotationHistory(k.cdc, history) + store.Set(key, historyBytes) + + key = types.GetBlockConsPubKeyRotationHistoryKey(history) + store.Set(key, historyBytes) +} + +func (k Keeper) GetValidatorConsPubKeyRotationHistory(ctx sdk.Context, operatorAddress sdk.ValAddress) (historyObjects []types.ConsPubKeyRotationHistory) { + store := ctx.KVStore(k.storeKey) + + iterator := sdk.KVStorePrefixIterator(store, types.GetValdiatorConsPubKeyRotationHistoryPrefix(operatorAddress.String())) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + history := types.MustUnmarshalConsPubKeyRotationHistory(k.cdc, iterator.Value()) + historyObjects = append(historyObjects, history) + } + return +} + +func (k Keeper) GetBlockConsPubKeyRotationHistory(ctx sdk.Context, height int64) (historyObjects []types.ConsPubKeyRotationHistory) { + store := ctx.KVStore(k.storeKey) + + iterator := sdk.KVStorePrefixIterator(store, types.GetBlockConsPubKeyRotationHistoryPrefix(height)) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + history := types.MustUnmarshalConsPubKeyRotationHistory(k.cdc, iterator.Value()) + historyObjects = append(historyObjects, history) + } + return +} diff --git a/x/staking/keeper/cons_pubkey_test.go b/x/staking/keeper/cons_pubkey_test.go new file mode 100644 index 000000000000..cccfb62e0fdb --- /dev/null +++ b/x/staking/keeper/cons_pubkey_test.go @@ -0,0 +1,56 @@ +package keeper_test + +import ( + "testing" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/stretchr/testify/require" +) + +func TestConsPubKeyRotationHistory(t *testing.T) { + app, ctx, _ := bootstrapGenesisTest(t, 10) + + validators := app.StakingKeeper.GetAllValidators(ctx) + require.Len(t, validators, 1) + + validator := validators[0] + valAddr, err := sdk.ValAddressFromBech32(validator.OperatorAddress) + require.NoError(t, err) + + historyObjects := app.StakingKeeper.GetValidatorConsPubKeyRotationHistory(ctx, valAddr) + require.Len(t, historyObjects, 0) + + newConsPub, err := codectypes.NewAnyWithValue(PKs[1]) + require.NoError(t, err) + + newConsPub2, err := codectypes.NewAnyWithValue(PKs[2]) + require.NoError(t, err) + + app.StakingKeeper.SetConsPubKeyRotationHistory(ctx, types.ConsPubKeyRotationHistory{ + OperatorAddress: valAddr.String(), + OldConsPubkey: validator.ConsensusPubkey, + NewConsPubkey: newConsPub, + RotatedHeight: ctx.BlockHeight(), + }) + + historyObjects = app.StakingKeeper.GetValidatorConsPubKeyRotationHistory(ctx, valAddr) + require.Len(t, historyObjects, 1) + + historyObjects = app.StakingKeeper.GetBlockConsPubKeyRotationHistory(ctx, ctx.BlockHeight()) + require.Len(t, historyObjects, 1) + + app.StakingKeeper.SetConsPubKeyRotationHistory(ctx, types.ConsPubKeyRotationHistory{ + OperatorAddress: valAddr.String(), + OldConsPubkey: newConsPub, + NewConsPubkey: newConsPub2, + RotatedHeight: ctx.BlockHeight() + 1, + }) + + historyObjects = app.StakingKeeper.GetValidatorConsPubKeyRotationHistory(ctx, valAddr) + require.Len(t, historyObjects, 2) + + historyObjects = app.StakingKeeper.GetBlockConsPubKeyRotationHistory(ctx, ctx.BlockHeight()) + require.Len(t, historyObjects, 1) +} diff --git a/x/staking/keeper/hooks.go b/x/staking/keeper/hooks.go index 91375c9e3881..700efa310aee 100644 --- a/x/staking/keeper/hooks.go +++ b/x/staking/keeper/hooks.go @@ -1,6 +1,7 @@ package keeper import ( + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -87,3 +88,10 @@ func (k Keeper) BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, } return nil } + +func (k Keeper) AfterConsensusPubKeyUpdate(ctx sdk.Context, oldPubKey cryptotypes.PubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error { + if k.hooks != nil { + return k.hooks.AfterConsensusPubKeyUpdate(ctx, oldPubKey, newPubKey, rotationFee) + } + return nil +} diff --git a/x/staking/keeper/hooks_test.go b/x/staking/keeper/hooks_test.go new file mode 100644 index 000000000000..60b445fb84af --- /dev/null +++ b/x/staking/keeper/hooks_test.go @@ -0,0 +1,27 @@ +package keeper_test + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" +) + +func TestHookAfterConsensusPubKeyUpdate(t *testing.T) { + app, ctx, _ := bootstrapGenesisTest(t, 10) + + oldCommunityPoolCoins := app.DistrKeeper.GetFeePoolCommunityCoins(ctx) + + rotationFee := sdk.NewInt64Coin("stake", 1000000) + err := app.StakingKeeper.AfterConsensusPubKeyUpdate(ctx, PKs[0], PKs[1], rotationFee) + require.NoError(t, err) + + // Check community pool is added after this + newCommunityPoolCoins := app.DistrKeeper.GetFeePoolCommunityCoins(ctx) + require.Equal(t, newCommunityPoolCoins, oldCommunityPoolCoins.Add(sdk.NewDecCoinsFromCoins(rotationFee)...)) + + // Check slashing hook is called correctly + savedPubKey, err := app.SlashingKeeper.GetPubkey(ctx, PKs[1].Address().Bytes()) + require.NoError(t, err) + require.Equal(t, savedPubKey, PKs[1]) +} diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 3e4ad4417d1b..c55d7ebff89b 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -15,6 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -492,3 +493,86 @@ func (k msgServer) CancelUnbondingDelegation(goCtx context.Context, msg *types.M return &types.MsgCancelUnbondingDelegationResponse{}, nil } + +// RotateConsPubKey defines a method for rotating consensus pubkey for a validator +func (k msgServer) RotateConsPubKey(goCtx context.Context, msg *types.MsgRotateConsPubKey) (*types.MsgRotateConsPubKeyResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Implementation is based on this ADR + // https://docs.cosmos.network/master/architecture/adr-016-validator-consensus-key-rotation.html + + pk, ok := msg.NewPubKey.GetCachedValue().(cryptotypes.PubKey) + if !ok { + return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "Expecting cryptotypes.PubKey, got %T", pk) + } + + consAddr := sdk.ConsAddress(pk.Address()) + + // checks if NewPubKey is not duplicated on ValidatorsByConsAddr + validator := k.Keeper.ValidatorByConsAddr(ctx, consAddr) + if validator != nil { + return nil, types.ErrConsensusPubKeyAlreadyUsedForAValidator + } + + maxConsPubKeyRotations := k.MaxConsPubKeyRotations(ctx) + valAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddress) + if err != nil { + return nil, err + } + + // checks if the validator is does not exceed parameter MaxConsPubKeyRotations by iterating ConsPubKeyRotationHistory + historyObjects := k.GetValidatorConsPubKeyRotationHistory(ctx, valAddr) + if len(historyObjects) >= int(maxConsPubKeyRotations) { + return nil, types.ErrExceedingMaxConsPubKeyRotations + } + + // checks if the signing account has enough balance to pay KeyRotationFee + // pays KeyRotationFee to community fund + rotationFee := k.ConsPubKeyRotationFee(ctx) + sender, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return nil, err + } + + err = k.Keeper.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, distrtypes.ModuleName, sdk.Coins{rotationFee}) + if err != nil { + return nil, err + } + + validator, found := k.Keeper.GetValidator(ctx, valAddr) + if !found { + return nil, types.ErrNoValidatorFound + } + + if sdk.AccAddress(validator.GetOperator()).String() != msg.Sender { + return nil, sdkerrors.ErrorInvalidSigner + } + + // deletes old ValidatorByConsAddr + // err = k.DeleteValidatorByConsAddr(ctx, validator) + // if err != nil { + // return nil, err + // } + + // overwrites NewPubKey in validator.ConsPubKey + val, ok := validator.(types.Validator) + if !ok { + return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "Expecting types.Validator, got %T", validator) + } + + // SetValidatorByConsAddr for NewPubKey + oldConsensusPubKey := val.ConsensusPubkey + val.ConsensusPubkey = msg.NewPubKey + k.SetValidatorByConsAddr(ctx, val) + k.SetValidator(ctx, val) + + // Add ConsPubKeyRotationHistory for tracking rotation + k.SetConsPubKeyRotationHistory(ctx, types.ConsPubKeyRotationHistory{ + OperatorAddress: validator.GetOperator().String(), + OldConsPubkey: oldConsensusPubKey, + NewConsPubkey: msg.NewPubKey, + RotatedHeight: ctx.BlockHeight(), + }) + + return &types.MsgRotateConsPubKeyResponse{}, nil +} diff --git a/x/staking/keeper/msg_server_test.go b/x/staking/keeper/msg_server_test.go index 44538be4d4ae..2b8434eabaeb 100644 --- a/x/staking/keeper/msg_server_test.go +++ b/x/staking/keeper/msg_server_test.go @@ -4,10 +4,13 @@ import ( "testing" "time" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/simapp" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank/testutil" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/staking/keeper" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" @@ -144,3 +147,101 @@ func TestCancelUnbondingDelegation(t *testing.T) { }) } } + +func TestRotateConsPubKey(t *testing.T) { + // setup the app + app := simapp.Setup(t, false) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) + msgServer := keeper.NewMsgServerImpl(app.StakingKeeper) + + valTokens := sdk.TokensFromConsensusPower(1, sdk.DefaultPowerReduction) + addrs := simapp.AddTestAddrsIncremental(app, ctx, 2, valTokens) + valAddrs := simapp.ConvertAddrsToValAddrs(addrs) + + val1 := teststaking.NewValidator(t, valAddrs[0], PKs[0]) + app.StakingKeeper.SetValidator(ctx, val1) + + testCases := []struct { + Name string + Pass bool + sender sdk.AccAddress + validator sdk.ValAddress + newPubKey cryptotypes.PubKey + rotationLimit uint64 + }{ + { + Name: "not existing validator check", + sender: addrs[0], + validator: valAddrs[1], + newPubKey: PKs[1], + rotationLimit: 10, + Pass: false, + }, + { + Name: "not validator owner check", + sender: addrs[1], + validator: val1.GetOperator(), + newPubKey: PKs[1], + rotationLimit: 10, + Pass: false, + }, + { + Name: "consensus pubkey rotation limit check", + sender: addrs[0], + validator: val1.GetOperator(), + newPubKey: PKs[1], + rotationLimit: 0, + Pass: false, + }, + { + Name: "successful consensus pubkey rotation", + sender: addrs[0], + validator: val1.GetOperator(), + newPubKey: PKs[1], + rotationLimit: 10, + Pass: true, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.Name, func(t *testing.T) { + params := app.StakingKeeper.GetParams(ctx) + params.ConsPubkeyRotationFee = sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000) + params.MaxConsPubKeyRotations = testCase.rotationLimit + app.StakingKeeper.SetParams(ctx, params) + + oldDistrBalance := app.BankKeeper.GetBalance(ctx, app.AccountKeeper.GetModuleAddress(distrtypes.ModuleName), sdk.DefaultBondDenom) + msg, err := types.NewMsgRotateConsPubKey( + testCase.sender, + testCase.validator, + testCase.newPubKey, + ) + require.NoError(t, err) + + _, err = msgServer.RotateConsPubKey(ctx, msg) + if testCase.Pass { + require.NoError(t, err) + + // rotation fee payment from sender to distrtypes + newDistrBalance := app.BankKeeper.GetBalance(ctx, app.AccountKeeper.GetModuleAddress(distrtypes.ModuleName), sdk.DefaultBondDenom) + require.Equal(t, newDistrBalance, oldDistrBalance.Add(params.ConsPubkeyRotationFee)) + + // validator consensus pubkey update check + validator, found := app.StakingKeeper.GetValidator(ctx, testCase.validator) + require.True(t, found) + + consAddr, err := validator.GetConsAddr() + require.NoError(t, err) + require.Equal(t, consAddr.String(), sdk.ConsAddress(testCase.newPubKey.Address()).String()) + + // consensus rotation history set check + historyObjects := app.StakingKeeper.GetValidatorConsPubKeyRotationHistory(ctx, testCase.validator) + require.Len(t, historyObjects, 1) + historyObjects = app.StakingKeeper.GetBlockConsPubKeyRotationHistory(ctx, ctx.BlockHeight()) + require.Len(t, historyObjects, 1) + } else { + require.Error(t, err) + } + }) + } +} diff --git a/x/staking/keeper/params.go b/x/staking/keeper/params.go index 498576fea53f..37734b5d8b19 100644 --- a/x/staking/keeper/params.go +++ b/x/staking/keeper/params.go @@ -53,6 +53,17 @@ func (k Keeper) MinCommissionRate(ctx sdk.Context) (res sdk.Dec) { return } +// MaxConsPubKeyRotations - Maximum consensus pubkey rotations +func (k Keeper) MaxConsPubKeyRotations(ctx sdk.Context) (res uint64) { + k.paramstore.Get(ctx, types.KeyMaxConsPubKeyRotations, &res) + return +} + +func (k Keeper) ConsPubKeyRotationFee(ctx sdk.Context) (res sdk.Coin) { + k.paramstore.Get(ctx, types.KeyConsPubKeyRotationFee, &res) + return +} + // Get all parameters as types.Params func (k Keeper) GetParams(ctx sdk.Context) types.Params { return types.NewParams( @@ -62,6 +73,8 @@ func (k Keeper) GetParams(ctx sdk.Context) types.Params { k.HistoricalEntries(ctx), k.BondDenom(ctx), k.MinCommissionRate(ctx), + k.MaxConsPubKeyRotations(ctx), + k.ConsPubKeyRotationFee(ctx), ) } diff --git a/x/staking/keeper/val_state_change.go b/x/staking/keeper/val_state_change.go index 7392936f5421..0123e8d6d0f0 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -8,6 +8,8 @@ import ( gogotypes "github.com/gogo/protobuf/types" abci "github.com/tendermint/tendermint/abci/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -202,6 +204,45 @@ func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) (updates []ab updates = append(updates, validator.ABCIValidatorUpdateZero()) } + rotationFee := k.ConsPubKeyRotationFee(ctx) + // ApplyAndReturnValidatorSetUpdates checks if there is ConsPubKeyRotationHistory + // with ConsPubKeyRotationHistory.RotatedHeight == ctx.BlockHeight() and if so, generates 2 ValidatorUpdate, + // one for a remove validator and one for create new validator + // TODO: consider the case, validator's voting power and consensus pubkey both values are + // changed on this block + historyObjects := k.GetBlockConsPubKeyRotationHistory(ctx, ctx.BlockHeight()) + for _, history := range historyObjects { + valAddr, err := sdk.ValAddressFromBech32(history.OperatorAddress) + if err != nil { + return nil, err + } + + validator := k.mustGetValidator(ctx, valAddr) + + oldPk := history.OldConsPubkey.GetCachedValue().(cryptotypes.PubKey) + oldTmPk, err := cryptocodec.ToTmProtoPublicKey(oldPk) + + newPk := history.NewConsPubkey.GetCachedValue().(cryptotypes.PubKey) + newTmPk, err := cryptocodec.ToTmProtoPublicKey(newPk) + + updates = append(updates, abci.ValidatorUpdate{ + PubKey: oldTmPk, + Power: 0, + }) + updates = append(updates, abci.ValidatorUpdate{ + PubKey: newTmPk, + Power: validator.ConsensusPower(powerReduction), + }) + + err = k.AfterConsensusPubKeyUpdate(ctx, oldPk, newPk, rotationFee) + if err != nil { + return nil, err + } + } + + // TODO: at previousVotes Iteration logic of AllocateTokens, previousVote using OldConsPubKey + // match up with ConsPubKeyRotationHistory, and replace validator for token allocation + // Update the pools based on the recent updates in the validator set: // - The tokens from the non-bonded candidates that enter the new validator set need to be transferred // to the Bonded pool. diff --git a/x/staking/keeper/validator.go b/x/staking/keeper/validator.go index 8539cbe0ec8a..924725607a8f 100644 --- a/x/staking/keeper/validator.go +++ b/x/staking/keeper/validator.go @@ -71,6 +71,17 @@ func (k Keeper) SetValidatorByConsAddr(ctx sdk.Context, validator types.Validato return nil } +// validator index +func (k Keeper) DeleteValidatorByConsAddr(ctx sdk.Context, validator types.ValidatorI) error { + consPk, err := validator.GetConsAddr() + if err != nil { + return err + } + store := ctx.KVStore(k.storeKey) + store.Delete(types.GetValidatorByConsAddrKey(consPk)) + return nil +} + // validator index func (k Keeper) SetValidatorByPowerIndex(ctx sdk.Context, validator types.Validator) { // jailed validators are not kept in the power index diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index 585897ca7929..68ca4881c914 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -1111,6 +1111,46 @@ func TestUpdateValidatorCommission(t *testing.T) { } } +func TestValidatorConsPubKeyUpdate(t *testing.T) { + powers := []int64{10, 20} + app, ctx, addrs, valAddrs, validators := initValidators(t, 1000, 20, powers) + msgServer := keeper.NewMsgServerImpl(app.StakingKeeper) + + validators[0] = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validators[0], false) + validators[1] = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validators[1], false) + applyValidatorSetUpdates(t, ctx, app.StakingKeeper, 2) + + params := app.StakingKeeper.GetParams(ctx) + params.ConsPubkeyRotationFee = sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000) + app.StakingKeeper.SetParams(ctx, params) + + msg, err := types.NewMsgRotateConsPubKey( + addrs[0], + valAddrs[0], + PKs[1], + ) + require.NoError(t, err) + + _, err = msgServer.RotateConsPubKey(ctx, msg) + require.NoError(t, err) + + updates := applyValidatorSetUpdates(t, ctx, app.StakingKeeper, 2) + + originalPubKey, err := validators[0].TmConsPublicKey() + require.NoError(t, err) + + validator, found := app.StakingKeeper.GetValidator(ctx, valAddrs[0]) + require.True(t, found) + + newPubKey, err := validator.TmConsPublicKey() + require.NoError(t, err) + + require.Equal(t, int64(0), updates[0].Power) + require.Equal(t, originalPubKey, updates[0].PubKey) + require.Equal(t, int64(10), updates[1].Power) + require.Equal(t, newPubKey, updates[1].PubKey) +} + func applyValidatorSetUpdates(t *testing.T, ctx sdk.Context, k keeper.Keeper, expectedUpdatesLen int) []abci.ValidatorUpdate { updates, err := k.ApplyAndReturnValidatorSetUpdates(ctx) require.NoError(t, err) diff --git a/x/staking/simulation/genesis.go b/x/staking/simulation/genesis.go index afd393c1c778..d4c3a875a2b2 100644 --- a/x/staking/simulation/genesis.go +++ b/x/staking/simulation/genesis.go @@ -64,7 +64,7 @@ func RandomizedGenState(simState *module.SimulationState) { // NOTE: the slashing module need to be defined after the staking module on the // NewSimulationManager constructor for this to work simState.UnbondTime = unbondTime - params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, sdk.DefaultBondDenom, minCommissionRate) + params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, sdk.DefaultBondDenom, minCommissionRate, 0, sdk.Coin{}) // validators & delegations var ( diff --git a/x/staking/spec/08_params.md b/x/staking/spec/08_params.md index e4a56ab3fac2..05cc1f1e2fad 100644 --- a/x/staking/spec/08_params.md +++ b/x/staking/spec/08_params.md @@ -6,11 +6,13 @@ order: 8 The staking module contains the following parameters: -| Key | Type | Example | -|-------------------|------------------|------------------------| -| UnbondingTime | string (time ns) | "259200000000000" | -| MaxValidators | uint16 | 100 | -| KeyMaxEntries | uint16 | 7 | -| HistoricalEntries | uint16 | 3 | -| BondDenom | string | "stake" | -| MinCommissionRate | string | "0.000000000000000000" | +| Key | Type | Example | +| ---------------------- | ---------------- | ---------------------- | +| UnbondingTime | string (time ns) | "259200000000000" | +| MaxValidators | uint16 | 100 | +| KeyMaxEntries | uint16 | 7 | +| HistoricalEntries | uint16 | 3 | +| BondDenom | string | "stake" | +| MinCommissionRate | string | "0.000000000000000000" | +| MaxConsPubKeyRotations | uint64 | 10 | +| ConsPubKeyRotationFee | string | "1000000uatom" | diff --git a/x/staking/types/codec.go b/x/staking/types/codec.go index 558f2eb038ad..df58db029251 100644 --- a/x/staking/types/codec.go +++ b/x/staking/types/codec.go @@ -20,6 +20,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { legacy.RegisterAminoMsg(cdc, &MsgUndelegate{}, "cosmos-sdk/MsgUndelegate") legacy.RegisterAminoMsg(cdc, &MsgBeginRedelegate{}, "cosmos-sdk/MsgBeginRedelegate") legacy.RegisterAminoMsg(cdc, &MsgCancelUnbondingDelegation{}, "cosmos-sdk/MsgCancelUnbondingDelegation") + legacy.RegisterAminoMsg(cdc, &MsgRotateConsPubKey{}, "cosmos-sdk/MsgRotateConsPubKey") cdc.RegisterInterface((*isStakeAuthorization_Validators)(nil), nil) cdc.RegisterConcrete(&StakeAuthorization_AllowList{}, "cosmos-sdk/StakeAuthorization/AllowList", nil) @@ -36,6 +37,7 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &MsgUndelegate{}, &MsgBeginRedelegate{}, &MsgCancelUnbondingDelegation{}, + &MsgRotateConsPubKey{}, ) registry.RegisterImplementations( (*authz.Authorization)(nil), diff --git a/x/staking/types/errors.go b/x/staking/types/errors.go index a9a6e43e35b6..d5df09c2f1ff 100644 --- a/x/staking/types/errors.go +++ b/x/staking/types/errors.go @@ -11,43 +11,45 @@ import ( // // REF: https://github.com/cosmos/cosmos-sdk/issues/5450 var ( - ErrEmptyValidatorAddr = sdkerrors.Register(ModuleName, 2, "empty validator address") - ErrNoValidatorFound = sdkerrors.Register(ModuleName, 3, "validator does not exist") - ErrValidatorOwnerExists = sdkerrors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address") - ErrValidatorPubKeyExists = sdkerrors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey") - ErrValidatorPubKeyTypeNotSupported = sdkerrors.Register(ModuleName, 6, "validator pubkey type is not supported") - ErrValidatorJailed = sdkerrors.Register(ModuleName, 7, "validator for this address is currently jailed") - ErrBadRemoveValidator = sdkerrors.Register(ModuleName, 8, "failed to remove validator") - ErrCommissionNegative = sdkerrors.Register(ModuleName, 9, "commission must be positive") - ErrCommissionHuge = sdkerrors.Register(ModuleName, 10, "commission cannot be more than 100%") - ErrCommissionGTMaxRate = sdkerrors.Register(ModuleName, 11, "commission cannot be more than the max rate") - ErrCommissionUpdateTime = sdkerrors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h") - ErrCommissionChangeRateNegative = sdkerrors.Register(ModuleName, 13, "commission change rate must be positive") - ErrCommissionChangeRateGTMaxRate = sdkerrors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate") - ErrCommissionGTMaxChangeRate = sdkerrors.Register(ModuleName, 15, "commission cannot be changed more than max change rate") - ErrSelfDelegationBelowMinimum = sdkerrors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation") - ErrMinSelfDelegationDecreased = sdkerrors.Register(ModuleName, 17, "minimum self delegation cannot be decrease") - ErrEmptyDelegatorAddr = sdkerrors.Register(ModuleName, 18, "empty delegator address") - ErrNoDelegation = sdkerrors.Register(ModuleName, 19, "no delegation for (address, validator) tuple") - ErrBadDelegatorAddr = sdkerrors.Register(ModuleName, 20, "delegator does not exist with address") - ErrNoDelegatorForAddress = sdkerrors.Register(ModuleName, 21, "delegator does not contain delegation") - ErrInsufficientShares = sdkerrors.Register(ModuleName, 22, "insufficient delegation shares") - ErrDelegationValidatorEmpty = sdkerrors.Register(ModuleName, 23, "cannot delegate to an empty validator") - ErrNotEnoughDelegationShares = sdkerrors.Register(ModuleName, 24, "not enough delegation shares") - ErrNotMature = sdkerrors.Register(ModuleName, 25, "entry not mature") - ErrNoUnbondingDelegation = sdkerrors.Register(ModuleName, 26, "no unbonding delegation found") - ErrMaxUnbondingDelegationEntries = sdkerrors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple") - ErrNoRedelegation = sdkerrors.Register(ModuleName, 28, "no redelegation found") - ErrSelfRedelegation = sdkerrors.Register(ModuleName, 29, "cannot redelegate to the same validator") - ErrTinyRedelegationAmount = sdkerrors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)") - ErrBadRedelegationDst = sdkerrors.Register(ModuleName, 31, "redelegation destination validator not found") - ErrTransitiveRedelegation = sdkerrors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation") - ErrMaxRedelegationEntries = sdkerrors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple") - ErrDelegatorShareExRateInvalid = sdkerrors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate") - ErrBothShareMsgsGiven = sdkerrors.Register(ModuleName, 35, "both shares amount and shares percent provided") - ErrNeitherShareMsgsGiven = sdkerrors.Register(ModuleName, 36, "neither shares amount nor shares percent provided") - ErrInvalidHistoricalInfo = sdkerrors.Register(ModuleName, 37, "invalid historical info") - ErrNoHistoricalInfo = sdkerrors.Register(ModuleName, 38, "no historical info found") - ErrEmptyValidatorPubKey = sdkerrors.Register(ModuleName, 39, "empty validator public key") - ErrCommissionLTMinRate = sdkerrors.Register(ModuleName, 40, "commission cannot be less than min rate") + ErrEmptyValidatorAddr = sdkerrors.Register(ModuleName, 2, "empty validator address") + ErrNoValidatorFound = sdkerrors.Register(ModuleName, 3, "validator does not exist") + ErrValidatorOwnerExists = sdkerrors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address") + ErrValidatorPubKeyExists = sdkerrors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey") + ErrValidatorPubKeyTypeNotSupported = sdkerrors.Register(ModuleName, 6, "validator pubkey type is not supported") + ErrValidatorJailed = sdkerrors.Register(ModuleName, 7, "validator for this address is currently jailed") + ErrBadRemoveValidator = sdkerrors.Register(ModuleName, 8, "failed to remove validator") + ErrCommissionNegative = sdkerrors.Register(ModuleName, 9, "commission must be positive") + ErrCommissionHuge = sdkerrors.Register(ModuleName, 10, "commission cannot be more than 100%") + ErrCommissionGTMaxRate = sdkerrors.Register(ModuleName, 11, "commission cannot be more than the max rate") + ErrCommissionUpdateTime = sdkerrors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h") + ErrCommissionChangeRateNegative = sdkerrors.Register(ModuleName, 13, "commission change rate must be positive") + ErrCommissionChangeRateGTMaxRate = sdkerrors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate") + ErrCommissionGTMaxChangeRate = sdkerrors.Register(ModuleName, 15, "commission cannot be changed more than max change rate") + ErrSelfDelegationBelowMinimum = sdkerrors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation") + ErrMinSelfDelegationDecreased = sdkerrors.Register(ModuleName, 17, "minimum self delegation cannot be decrease") + ErrEmptyDelegatorAddr = sdkerrors.Register(ModuleName, 18, "empty delegator address") + ErrNoDelegation = sdkerrors.Register(ModuleName, 19, "no delegation for (address, validator) tuple") + ErrBadDelegatorAddr = sdkerrors.Register(ModuleName, 20, "delegator does not exist with address") + ErrNoDelegatorForAddress = sdkerrors.Register(ModuleName, 21, "delegator does not contain delegation") + ErrInsufficientShares = sdkerrors.Register(ModuleName, 22, "insufficient delegation shares") + ErrDelegationValidatorEmpty = sdkerrors.Register(ModuleName, 23, "cannot delegate to an empty validator") + ErrNotEnoughDelegationShares = sdkerrors.Register(ModuleName, 24, "not enough delegation shares") + ErrNotMature = sdkerrors.Register(ModuleName, 25, "entry not mature") + ErrNoUnbondingDelegation = sdkerrors.Register(ModuleName, 26, "no unbonding delegation found") + ErrMaxUnbondingDelegationEntries = sdkerrors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple") + ErrNoRedelegation = sdkerrors.Register(ModuleName, 28, "no redelegation found") + ErrSelfRedelegation = sdkerrors.Register(ModuleName, 29, "cannot redelegate to the same validator") + ErrTinyRedelegationAmount = sdkerrors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)") + ErrBadRedelegationDst = sdkerrors.Register(ModuleName, 31, "redelegation destination validator not found") + ErrTransitiveRedelegation = sdkerrors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation") + ErrMaxRedelegationEntries = sdkerrors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple") + ErrDelegatorShareExRateInvalid = sdkerrors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate") + ErrBothShareMsgsGiven = sdkerrors.Register(ModuleName, 35, "both shares amount and shares percent provided") + ErrNeitherShareMsgsGiven = sdkerrors.Register(ModuleName, 36, "neither shares amount nor shares percent provided") + ErrInvalidHistoricalInfo = sdkerrors.Register(ModuleName, 37, "invalid historical info") + ErrNoHistoricalInfo = sdkerrors.Register(ModuleName, 38, "no historical info found") + ErrEmptyValidatorPubKey = sdkerrors.Register(ModuleName, 39, "empty validator public key") + ErrCommissionLTMinRate = sdkerrors.Register(ModuleName, 40, "commission cannot be less than min rate") + ErrConsensusPubKeyAlreadyUsedForAValidator = sdkerrors.Register(ModuleName, 41, "consensus pubkey is already used for a validator") + ErrExceedingMaxConsPubKeyRotations = sdkerrors.Register(ModuleName, 42, "exceeding maximum consensus pubkey rotations") ) diff --git a/x/staking/types/expected_keepers.go b/x/staking/types/expected_keepers.go index 785a969f36e4..b79a3324251b 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -1,6 +1,7 @@ package types import ( + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) @@ -32,6 +33,7 @@ type BankKeeper interface { GetSupply(ctx sdk.Context, denom string) sdk.Coin + SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error SendCoinsFromModuleToModule(ctx sdk.Context, senderPool, recipientPool string, amt sdk.Coins) error UndelegateCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error DelegateCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error @@ -101,4 +103,5 @@ type StakingHooks interface { BeforeDelegationRemoved(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is removed AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec) error + AfterConsensusPubKeyUpdate(ctx sdk.Context, oldPubKey cryptotypes.PubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error } diff --git a/x/staking/types/historical_info.go b/x/staking/types/historical_info.go index 447a559bda7b..4903063ce1f5 100644 --- a/x/staking/types/historical_info.go +++ b/x/staking/types/historical_info.go @@ -8,6 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) @@ -80,3 +81,41 @@ func (hi HistoricalInfo) UnpackInterfaces(c codectypes.AnyUnpacker) error { } return nil } + +func MustUnmarshalConsPubKeyRotationHistory(cdc codec.BinaryCodec, value []byte) ConsPubKeyRotationHistory { + hi, err := UnmarshalConsPubKeyRotationHistory(cdc, value) + if err != nil { + panic(err) + } + + return hi +} + +func UnmarshalConsPubKeyRotationHistory(cdc codec.BinaryCodec, value []byte) (hi ConsPubKeyRotationHistory, err error) { + err = cdc.Unmarshal(value, &hi) + return hi, err +} + +func MustMarshalConsPubKeyRotationHistory(cdc codec.BinaryCodec, history ConsPubKeyRotationHistory) []byte { + hi, err := MarshalConsPubKeyRotationHistory(cdc, history) + if err != nil { + panic(err) + } + + return hi +} + +func MarshalConsPubKeyRotationHistory(cdc codec.BinaryCodec, hi ConsPubKeyRotationHistory) ([]byte, error) { + return cdc.Marshal(&hi) +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (hi ConsPubKeyRotationHistory) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + var oldPubKey cryptotypes.PubKey + err := unpacker.UnpackAny(hi.OldConsPubkey, &oldPubKey) + if err != nil { + return err + } + var newPubKey cryptotypes.PubKey + return unpacker.UnpackAny(hi.NewConsPubkey, &newPubKey) +} diff --git a/x/staking/types/hooks.go b/x/staking/types/hooks.go index 33838bcaa030..5fa968f62ef8 100644 --- a/x/staking/types/hooks.go +++ b/x/staking/types/hooks.go @@ -1,6 +1,7 @@ package types import ( + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -94,3 +95,11 @@ func (h MultiStakingHooks) BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.V } return nil } +func (h MultiStakingHooks) AfterConsensusPubKeyUpdate(ctx sdk.Context, oldPubKey cryptotypes.PubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error { + for i := range h { + if err := h[i].AfterConsensusPubKeyUpdate(ctx, oldPubKey, newPubKey, rotationFee); err != nil { + return err + } + } + return nil +} diff --git a/x/staking/types/keys.go b/x/staking/types/keys.go index 74d73bf19c7e..b81f0d9192fc 100644 --- a/x/staking/types/keys.go +++ b/x/staking/types/keys.go @@ -48,6 +48,9 @@ var ( ValidatorQueueKey = []byte{0x43} // prefix for the timestamps in validator queue HistoricalInfoKey = []byte{0x50} // prefix for the historical info + + ValidatorConsPubKeyRotationHistoryKey = []byte{0x60} // prefix for consPubkey rotation history by validator + BlockConsPubKeyRotationHistoryKey = []byte{0x61} // prefix for consPubkey rotation history by height ) // GetValidatorKey creates the key for the validator with address @@ -347,3 +350,28 @@ func GetREDsByDelToValDstIndexKey(delAddr sdk.AccAddress, valDstAddr sdk.ValAddr func GetHistoricalInfoKey(height int64) []byte { return append(HistoricalInfoKey, []byte(strconv.FormatInt(height, 10))...) } + +func GetValidatorConsPubKeyRotationHistoryKey(history ConsPubKeyRotationHistory) []byte { + return append(append( + ValidatorConsPubKeyRotationHistoryKey, + []byte(history.OperatorAddress)...), + sdk.Uint64ToBigEndian(uint64(history.RotatedHeight))...) +} + +func GetBlockConsPubKeyRotationHistoryKey(history ConsPubKeyRotationHistory) []byte { + return append(append( + BlockConsPubKeyRotationHistoryKey, + sdk.Uint64ToBigEndian(uint64(history.RotatedHeight))...), + []byte(history.OperatorAddress)...) +} + +func GetValdiatorConsPubKeyRotationHistoryPrefix(operatorAddress string) []byte { + return append( + ValidatorConsPubKeyRotationHistoryKey, + []byte(operatorAddress)...) +} +func GetBlockConsPubKeyRotationHistoryPrefix(height int64) []byte { + return append( + BlockConsPubKeyRotationHistoryKey, + sdk.Uint64ToBigEndian(uint64(height))...) +} diff --git a/x/staking/types/msg.go b/x/staking/types/msg.go index a1ae89d15751..a8be4af06526 100644 --- a/x/staking/types/msg.go +++ b/x/staking/types/msg.go @@ -392,3 +392,54 @@ func (msg MsgCancelUnbondingDelegation) ValidateBasic() error { return nil } + +// NewMsgRotateConsPubKey creates a new MsgRotateConsPubKey instance. +func NewMsgRotateConsPubKey(sender sdk.AccAddress, valAddr sdk.ValAddress, pubKey cryptotypes.PubKey) (*MsgRotateConsPubKey, error) { + var pkAny *codectypes.Any + if pubKey != nil { + var err error + if pkAny, err = codectypes.NewAnyWithValue(pubKey); err != nil { + return nil, err + } + } + return &MsgRotateConsPubKey{ + Sender: sender.String(), + ValidatorAddress: valAddr.String(), + NewPubKey: pkAny, + }, nil +} + +// Route implements the sdk.Msg interface. +func (msg MsgRotateConsPubKey) Route() string { return RouterKey } + +// Type implements the sdk.Msg interface. +func (msg MsgRotateConsPubKey) Type() string { return TypeMsgCancelUnbondingDelegation } + +// GetSigners implements the sdk.Msg interface. +func (msg MsgRotateConsPubKey) GetSigners() []sdk.AccAddress { + sender, _ := sdk.AccAddressFromBech32(msg.Sender) + return []sdk.AccAddress{sender} +} + +// GetSignBytes implements the sdk.Msg interface. +func (msg MsgRotateConsPubKey) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// ValidateBasic implements the sdk.Msg interface. +func (msg MsgRotateConsPubKey) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return sdkerrors.ErrInvalidAddress.Wrapf("invalid sender address: %s", err) + } + if _, err := sdk.ValAddressFromBech32(msg.ValidatorAddress); err != nil { + return sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err) + } + + return nil +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (msg MsgRotateConsPubKey) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + var pubKey cryptotypes.PubKey + return unpacker.UnpackAny(msg.NewPubKey, &pubKey) +} diff --git a/x/staking/types/params.go b/x/staking/types/params.go index cb9def63e00e..9fc74fa7c525 100644 --- a/x/staking/types/params.go +++ b/x/staking/types/params.go @@ -34,16 +34,20 @@ const ( var ( // DefaultMinCommissionRate is set to 0% - DefaultMinCommissionRate = sdk.ZeroDec() + DefaultMinCommissionRate = sdk.ZeroDec() + DefaultMaxConsPubKeyRotations = uint64(10) + DefaultConsPubKeyRotationFee = sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000000) ) var ( - KeyUnbondingTime = []byte("UnbondingTime") - KeyMaxValidators = []byte("MaxValidators") - KeyMaxEntries = []byte("MaxEntries") - KeyBondDenom = []byte("BondDenom") - KeyHistoricalEntries = []byte("HistoricalEntries") - KeyMinCommissionRate = []byte("MinCommissionRate") + KeyUnbondingTime = []byte("UnbondingTime") + KeyMaxValidators = []byte("MaxValidators") + KeyMaxEntries = []byte("MaxEntries") + KeyBondDenom = []byte("BondDenom") + KeyHistoricalEntries = []byte("HistoricalEntries") + KeyMinCommissionRate = []byte("MinCommissionRate") + KeyMaxConsPubKeyRotations = []byte("MaxConsPubKeyRotations") + KeyConsPubKeyRotationFee = []byte("ConsPubKeyRotationFee") ) var _ paramtypes.ParamSet = (*Params)(nil) @@ -54,14 +58,16 @@ func ParamKeyTable() paramtypes.KeyTable { } // NewParams creates a new Params instance -func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string, minCommissionRate sdk.Dec) Params { +func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string, minCommissionRate sdk.Dec, maxConsPubKeyRotations uint64, consPubKeyRotationFee sdk.Coin) Params { return Params{ - UnbondingTime: unbondingTime, - MaxValidators: maxValidators, - MaxEntries: maxEntries, - HistoricalEntries: historicalEntries, - BondDenom: bondDenom, - MinCommissionRate: minCommissionRate, + UnbondingTime: unbondingTime, + MaxValidators: maxValidators, + MaxEntries: maxEntries, + HistoricalEntries: historicalEntries, + BondDenom: bondDenom, + MinCommissionRate: minCommissionRate, + MaxConsPubKeyRotations: maxConsPubKeyRotations, + ConsPubkeyRotationFee: consPubKeyRotationFee, } } @@ -74,6 +80,8 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { paramtypes.NewParamSetPair(KeyHistoricalEntries, &p.HistoricalEntries, validateHistoricalEntries), paramtypes.NewParamSetPair(KeyBondDenom, &p.BondDenom, validateBondDenom), paramtypes.NewParamSetPair(KeyMinCommissionRate, &p.MinCommissionRate, validateMinCommissionRate), + paramtypes.NewParamSetPair(KeyMaxConsPubKeyRotations, &p.MaxConsPubKeyRotations, validateMaxConsPubKeyRotations), + paramtypes.NewParamSetPair(KeyConsPubKeyRotationFee, &p.ConsPubkeyRotationFee, validateConsPubKeyRotationFee), } } @@ -86,6 +94,8 @@ func DefaultParams() Params { DefaultHistoricalEntries, sdk.DefaultBondDenom, DefaultMinCommissionRate, + DefaultMaxConsPubKeyRotations, + DefaultConsPubKeyRotationFee, ) } @@ -137,6 +147,14 @@ func (p Params) Validate() error { return err } + if err := validateMaxConsPubKeyRotations(p.MaxConsPubKeyRotations); err != nil { + return err + } + + if err := validateConsPubKeyRotationFee(p.ConsPubkeyRotationFee); err != nil { + return err + } + return nil } @@ -233,3 +251,21 @@ func validateMinCommissionRate(i interface{}) error { return nil } + +func validateMaxConsPubKeyRotations(i interface{}) error { + _, ok := i.(uint64) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + return nil +} + +func validateConsPubKeyRotationFee(i interface{}) error { + _, ok := i.(sdk.Coin) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + return nil +} diff --git a/x/staking/types/params_test.go b/x/staking/types/params_test.go index ead0266759b5..3ec056036756 100644 --- a/x/staking/types/params_test.go +++ b/x/staking/types/params_test.go @@ -29,10 +29,19 @@ func Test_validateParams(t *testing.T) { // default params have no error require.NoError(t, params.Validate()) + // check MaxConsPubKeyRotations + params.MaxConsPubKeyRotations = 0 + require.NoError(t, params.Validate()) + + // check ConsPubkeyRotationFee + params.ConsPubkeyRotationFee = sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000000) + require.NoError(t, params.Validate()) + // validate mincommision params.MinCommissionRate = sdk.NewDec(-1) require.Error(t, params.Validate()) params.MinCommissionRate = sdk.NewDec(2) require.Error(t, params.Validate()) + } diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 8dbfa99ae59f..26fb2c076fd3 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -132,6 +132,74 @@ func (m *HistoricalInfo) GetValset() []Validator { return nil } +type ConsPubKeyRotationHistory struct { + OperatorAddress string `protobuf:"bytes,1,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` + OldConsPubkey *types1.Any `protobuf:"bytes,2,opt,name=old_cons_pubkey,json=oldConsPubkey,proto3" json:"old_cons_pubkey,omitempty"` + NewConsPubkey *types1.Any `protobuf:"bytes,3,opt,name=new_cons_pubkey,json=newConsPubkey,proto3" json:"new_cons_pubkey,omitempty"` + RotatedHeight int64 `protobuf:"varint,4,opt,name=rotated_height,json=rotatedHeight,proto3" json:"rotated_height,omitempty"` +} + +func (m *ConsPubKeyRotationHistory) Reset() { *m = ConsPubKeyRotationHistory{} } +func (m *ConsPubKeyRotationHistory) String() string { return proto.CompactTextString(m) } +func (*ConsPubKeyRotationHistory) ProtoMessage() {} +func (*ConsPubKeyRotationHistory) Descriptor() ([]byte, []int) { + return fileDescriptor_64c30c6cf92913c9, []int{1} +} +func (m *ConsPubKeyRotationHistory) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConsPubKeyRotationHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConsPubKeyRotationHistory.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 *ConsPubKeyRotationHistory) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConsPubKeyRotationHistory.Merge(m, src) +} +func (m *ConsPubKeyRotationHistory) XXX_Size() int { + return m.Size() +} +func (m *ConsPubKeyRotationHistory) XXX_DiscardUnknown() { + xxx_messageInfo_ConsPubKeyRotationHistory.DiscardUnknown(m) +} + +var xxx_messageInfo_ConsPubKeyRotationHistory proto.InternalMessageInfo + +func (m *ConsPubKeyRotationHistory) GetOperatorAddress() string { + if m != nil { + return m.OperatorAddress + } + return "" +} + +func (m *ConsPubKeyRotationHistory) GetOldConsPubkey() *types1.Any { + if m != nil { + return m.OldConsPubkey + } + return nil +} + +func (m *ConsPubKeyRotationHistory) GetNewConsPubkey() *types1.Any { + if m != nil { + return m.NewConsPubkey + } + return nil +} + +func (m *ConsPubKeyRotationHistory) GetRotatedHeight() int64 { + if m != nil { + return m.RotatedHeight + } + return 0 +} + // CommissionRates defines the initial commission rates to be used for creating // a validator. type CommissionRates struct { @@ -146,7 +214,7 @@ type CommissionRates struct { func (m *CommissionRates) Reset() { *m = CommissionRates{} } func (*CommissionRates) ProtoMessage() {} func (*CommissionRates) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{1} + return fileDescriptor_64c30c6cf92913c9, []int{2} } func (m *CommissionRates) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -186,7 +254,7 @@ type Commission struct { func (m *Commission) Reset() { *m = Commission{} } func (*Commission) ProtoMessage() {} func (*Commission) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{2} + return fileDescriptor_64c30c6cf92913c9, []int{3} } func (m *Commission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -239,7 +307,7 @@ type Description struct { func (m *Description) Reset() { *m = Description{} } func (*Description) ProtoMessage() {} func (*Description) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{3} + return fileDescriptor_64c30c6cf92913c9, []int{4} } func (m *Description) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -341,7 +409,7 @@ type Validator struct { func (m *Validator) Reset() { *m = Validator{} } func (*Validator) ProtoMessage() {} func (*Validator) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{4} + return fileDescriptor_64c30c6cf92913c9, []int{5} } func (m *Validator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -378,7 +446,7 @@ type ValAddresses struct { func (m *ValAddresses) Reset() { *m = ValAddresses{} } func (*ValAddresses) ProtoMessage() {} func (*ValAddresses) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{5} + return fileDescriptor_64c30c6cf92913c9, []int{6} } func (m *ValAddresses) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -425,7 +493,7 @@ type DVPair struct { func (m *DVPair) Reset() { *m = DVPair{} } func (*DVPair) ProtoMessage() {} func (*DVPair) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{6} + return fileDescriptor_64c30c6cf92913c9, []int{7} } func (m *DVPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -463,7 +531,7 @@ func (m *DVPairs) Reset() { *m = DVPairs{} } func (m *DVPairs) String() string { return proto.CompactTextString(m) } func (*DVPairs) ProtoMessage() {} func (*DVPairs) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{7} + return fileDescriptor_64c30c6cf92913c9, []int{8} } func (m *DVPairs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -512,7 +580,7 @@ type DVVTriplet struct { func (m *DVVTriplet) Reset() { *m = DVVTriplet{} } func (*DVVTriplet) ProtoMessage() {} func (*DVVTriplet) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{8} + return fileDescriptor_64c30c6cf92913c9, []int{9} } func (m *DVVTriplet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -550,7 +618,7 @@ func (m *DVVTriplets) Reset() { *m = DVVTriplets{} } func (m *DVVTriplets) String() string { return proto.CompactTextString(m) } func (*DVVTriplets) ProtoMessage() {} func (*DVVTriplets) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{9} + return fileDescriptor_64c30c6cf92913c9, []int{10} } func (m *DVVTriplets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -601,7 +669,7 @@ type Delegation struct { func (m *Delegation) Reset() { *m = Delegation{} } func (*Delegation) ProtoMessage() {} func (*Delegation) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{10} + return fileDescriptor_64c30c6cf92913c9, []int{11} } func (m *Delegation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -644,7 +712,7 @@ type UnbondingDelegation struct { func (m *UnbondingDelegation) Reset() { *m = UnbondingDelegation{} } func (*UnbondingDelegation) ProtoMessage() {} func (*UnbondingDelegation) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{11} + return fileDescriptor_64c30c6cf92913c9, []int{12} } func (m *UnbondingDelegation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -688,7 +756,7 @@ type UnbondingDelegationEntry struct { func (m *UnbondingDelegationEntry) Reset() { *m = UnbondingDelegationEntry{} } func (*UnbondingDelegationEntry) ProtoMessage() {} func (*UnbondingDelegationEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{12} + return fileDescriptor_64c30c6cf92913c9, []int{13} } func (m *UnbondingDelegationEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -746,7 +814,7 @@ type RedelegationEntry struct { func (m *RedelegationEntry) Reset() { *m = RedelegationEntry{} } func (*RedelegationEntry) ProtoMessage() {} func (*RedelegationEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{13} + return fileDescriptor_64c30c6cf92913c9, []int{14} } func (m *RedelegationEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -805,7 +873,7 @@ type Redelegation struct { func (m *Redelegation) Reset() { *m = Redelegation{} } func (*Redelegation) ProtoMessage() {} func (*Redelegation) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{14} + return fileDescriptor_64c30c6cf92913c9, []int{15} } func (m *Redelegation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -848,12 +916,16 @@ type Params struct { BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` // min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators MinCommissionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,6,opt,name=min_commission_rate,json=minCommissionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_commission_rate" yaml:"min_commission_rate"` + // max_cons_pub_key_rotations is maximum number of consensus pubkey rotations + MaxConsPubKeyRotations uint64 `protobuf:"varint,7,opt,name=max_cons_pub_key_rotations,json=maxConsPubKeyRotations,proto3" json:"max_cons_pub_key_rotations,omitempty"` + // cons_pubkey_rotation_fee is fee to be spent when rotating validator's consensus pubkey + ConsPubkeyRotationFee types2.Coin `protobuf:"bytes,8,opt,name=cons_pubkey_rotation_fee,json=consPubkeyRotationFee,proto3" json:"cons_pubkey_rotation_fee"` } func (m *Params) Reset() { *m = Params{} } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{15} + return fileDescriptor_64c30c6cf92913c9, []int{16} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -917,6 +989,20 @@ func (m *Params) GetBondDenom() string { return "" } +func (m *Params) GetMaxConsPubKeyRotations() uint64 { + if m != nil { + return m.MaxConsPubKeyRotations + } + return 0 +} + +func (m *Params) GetConsPubkeyRotationFee() types2.Coin { + if m != nil { + return m.ConsPubkeyRotationFee + } + return types2.Coin{} +} + // DelegationResponse is equivalent to Delegation except that it contains a // balance in addition to shares which is more suitable for client responses. type DelegationResponse struct { @@ -927,7 +1013,7 @@ type DelegationResponse struct { func (m *DelegationResponse) Reset() { *m = DelegationResponse{} } func (*DelegationResponse) ProtoMessage() {} func (*DelegationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{16} + return fileDescriptor_64c30c6cf92913c9, []int{17} } func (m *DelegationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -982,7 +1068,7 @@ func (m *RedelegationEntryResponse) Reset() { *m = RedelegationEntryResp func (m *RedelegationEntryResponse) String() string { return proto.CompactTextString(m) } func (*RedelegationEntryResponse) ProtoMessage() {} func (*RedelegationEntryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{17} + return fileDescriptor_64c30c6cf92913c9, []int{18} } func (m *RedelegationEntryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1030,7 +1116,7 @@ func (m *RedelegationResponse) Reset() { *m = RedelegationResponse{} } func (m *RedelegationResponse) String() string { return proto.CompactTextString(m) } func (*RedelegationResponse) ProtoMessage() {} func (*RedelegationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{18} + return fileDescriptor_64c30c6cf92913c9, []int{19} } func (m *RedelegationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1084,7 +1170,7 @@ func (m *Pool) Reset() { *m = Pool{} } func (m *Pool) String() string { return proto.CompactTextString(m) } func (*Pool) ProtoMessage() {} func (*Pool) Descriptor() ([]byte, []int) { - return fileDescriptor_64c30c6cf92913c9, []int{19} + return fileDescriptor_64c30c6cf92913c9, []int{20} } func (m *Pool) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1116,6 +1202,7 @@ var xxx_messageInfo_Pool proto.InternalMessageInfo func init() { proto.RegisterEnum("cosmos.staking.v1beta1.BondStatus", BondStatus_name, BondStatus_value) proto.RegisterType((*HistoricalInfo)(nil), "cosmos.staking.v1beta1.HistoricalInfo") + proto.RegisterType((*ConsPubKeyRotationHistory)(nil), "cosmos.staking.v1beta1.ConsPubKeyRotationHistory") proto.RegisterType((*CommissionRates)(nil), "cosmos.staking.v1beta1.CommissionRates") proto.RegisterType((*Commission)(nil), "cosmos.staking.v1beta1.Commission") proto.RegisterType((*Description)(nil), "cosmos.staking.v1beta1.Description") @@ -1142,112 +1229,119 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 1669 bytes of a gzipped FileDescriptorProto + // 1792 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4d, 0x6c, 0x1b, 0xc7, - 0x15, 0xe6, 0x52, 0x0c, 0x45, 0x3d, 0x4a, 0xa2, 0x34, 0x56, 0x52, 0x9a, 0x68, 0x49, 0x96, 0x4d, - 0x13, 0xa7, 0x88, 0xa9, 0x5a, 0x05, 0x02, 0x54, 0x28, 0x50, 0x98, 0x22, 0x53, 0xab, 0x4e, 0x5c, - 0x86, 0x94, 0x55, 0xf4, 0x07, 0x5d, 0x0c, 0x77, 0x47, 0xd4, 0x54, 0xbb, 0xb3, 0xc4, 0xce, 0xd0, - 0x15, 0x81, 0x16, 0x28, 0xd0, 0x4b, 0xea, 0x53, 0x8e, 0xb9, 0x18, 0x30, 0x90, 0x1e, 0x73, 0x0c, - 0x7a, 0xe9, 0xa1, 0xd7, 0x34, 0x27, 0x23, 0xa7, 0xa6, 0x2d, 0xd4, 0xc2, 0xbe, 0x14, 0x3d, 0x15, - 0xb9, 0xb7, 0x28, 0xe6, 0x67, 0x7f, 0x4c, 0x8a, 0x8a, 0x14, 0xa8, 0x40, 0x00, 0x5f, 0xec, 0x9d, - 0x99, 0xf7, 0xbe, 0x79, 0xef, 0x7b, 0x3f, 0x7a, 0x43, 0x78, 0xd1, 0x09, 0xb8, 0x1f, 0xf0, 0x4d, - 0x2e, 0xf0, 0x11, 0x65, 0xc3, 0xcd, 0x7b, 0x37, 0x06, 0x44, 0xe0, 0x1b, 0xd1, 0xba, 0x39, 0x0a, - 0x03, 0x11, 0xa0, 0x17, 0xb4, 0x54, 0x33, 0xda, 0x35, 0x52, 0x95, 0x8d, 0x61, 0x30, 0x0c, 0x94, - 0xc8, 0xa6, 0xfc, 0xd2, 0xd2, 0x95, 0xab, 0xc3, 0x20, 0x18, 0x7a, 0x64, 0x53, 0xad, 0x06, 0xe3, - 0x83, 0x4d, 0xcc, 0x26, 0xe6, 0xa8, 0x3a, 0x7d, 0xe4, 0x8e, 0x43, 0x2c, 0x68, 0xc0, 0xcc, 0x79, - 0x6d, 0xfa, 0x5c, 0x50, 0x9f, 0x70, 0x81, 0xfd, 0x51, 0x84, 0xad, 0x2d, 0xb1, 0xf5, 0xa5, 0xc6, - 0x2c, 0x83, 0x6d, 0x5c, 0x19, 0x60, 0x4e, 0x62, 0x3f, 0x9c, 0x80, 0x46, 0xd8, 0x5f, 0x16, 0x84, - 0xb9, 0x24, 0xf4, 0x29, 0x13, 0x9b, 0x62, 0x32, 0x22, 0x5c, 0xff, 0xab, 0x4f, 0x1b, 0xbf, 0xb5, - 0x60, 0xf5, 0x16, 0xe5, 0x22, 0x08, 0xa9, 0x83, 0xbd, 0x5d, 0x76, 0x10, 0xa0, 0xd7, 0x20, 0x7f, - 0x48, 0xb0, 0x4b, 0xc2, 0xb2, 0x55, 0xb7, 0xae, 0x15, 0xb7, 0xca, 0xcd, 0x04, 0xa1, 0xa9, 0x75, - 0x6f, 0xa9, 0xf3, 0x56, 0xee, 0xc3, 0x93, 0x5a, 0xa6, 0x67, 0xa4, 0xd1, 0x77, 0x21, 0x7f, 0x0f, - 0x7b, 0x9c, 0x88, 0x72, 0xb6, 0xbe, 0x70, 0xad, 0xb8, 0xf5, 0xd5, 0xe6, 0xe9, 0xf4, 0x35, 0xf7, - 0xb1, 0x47, 0x5d, 0x2c, 0x82, 0x18, 0x40, 0xab, 0x35, 0xde, 0xcf, 0x42, 0x69, 0x27, 0xf0, 0x7d, - 0xca, 0x39, 0x0d, 0x58, 0x0f, 0x0b, 0xc2, 0x51, 0x17, 0x72, 0x21, 0x16, 0x44, 0x99, 0xb2, 0xd4, - 0xfa, 0x8e, 0x94, 0xff, 0xcb, 0x49, 0xed, 0xa5, 0x21, 0x15, 0x87, 0xe3, 0x41, 0xd3, 0x09, 0x7c, - 0x43, 0x86, 0xf9, 0xef, 0x3a, 0x77, 0x8f, 0x8c, 0x7f, 0x6d, 0xe2, 0x7c, 0xfc, 0xc1, 0x75, 0x30, - 0x36, 0xb4, 0x89, 0xd3, 0x53, 0x48, 0xe8, 0x87, 0x50, 0xf0, 0xf1, 0xb1, 0xad, 0x50, 0xb3, 0x97, - 0x80, 0xba, 0xe8, 0xe3, 0x63, 0x69, 0x2b, 0x72, 0xa1, 0x24, 0x81, 0x9d, 0x43, 0xcc, 0x86, 0x44, - 0xe3, 0x2f, 0x5c, 0x02, 0xfe, 0x8a, 0x8f, 0x8f, 0x77, 0x14, 0xa6, 0xbc, 0x65, 0xbb, 0xf0, 0xee, - 0xc3, 0x5a, 0xe6, 0x9f, 0x0f, 0x6b, 0x56, 0xe3, 0x0f, 0x16, 0x40, 0x42, 0x17, 0xfa, 0x29, 0xac, - 0x39, 0xf1, 0x4a, 0x5d, 0xcf, 0x4d, 0x00, 0x5f, 0x9e, 0x17, 0x88, 0x29, 0xb2, 0x5b, 0x05, 0x69, - 0xe8, 0xa3, 0x93, 0x9a, 0xd5, 0x2b, 0x39, 0x53, 0x71, 0xe8, 0x40, 0x71, 0x3c, 0x72, 0xb1, 0x20, - 0xb6, 0x4c, 0x4d, 0x45, 0x5c, 0x71, 0xab, 0xd2, 0xd4, 0x79, 0xdb, 0x8c, 0xf2, 0xb6, 0xb9, 0x17, - 0xe5, 0xad, 0xc6, 0x7a, 0xe7, 0xef, 0x35, 0xab, 0x07, 0x5a, 0x51, 0x1e, 0xa5, 0xac, 0x7f, 0xdf, - 0x82, 0x62, 0x9b, 0x70, 0x27, 0xa4, 0x23, 0x59, 0x08, 0xa8, 0x0c, 0x8b, 0x7e, 0xc0, 0xe8, 0x91, - 0x49, 0xbb, 0xa5, 0x5e, 0xb4, 0x44, 0x15, 0x28, 0x50, 0x97, 0x30, 0x41, 0xc5, 0x44, 0x07, 0xac, - 0x17, 0xaf, 0xa5, 0xd6, 0x2f, 0xc8, 0x80, 0xd3, 0x88, 0xeb, 0x5e, 0xb4, 0x44, 0xaf, 0xc0, 0x1a, - 0x27, 0xce, 0x38, 0xa4, 0x62, 0x62, 0x3b, 0x01, 0x13, 0xd8, 0x11, 0xe5, 0x9c, 0x12, 0x29, 0x45, - 0xfb, 0x3b, 0x7a, 0x5b, 0x82, 0xb8, 0x44, 0x60, 0xea, 0xf1, 0xf2, 0x73, 0x1a, 0xc4, 0x2c, 0x53, - 0xe6, 0xfe, 0x29, 0x0f, 0x4b, 0x71, 0xde, 0xa2, 0x1d, 0x58, 0x0b, 0x46, 0x24, 0x94, 0xdf, 0x36, - 0x76, 0xdd, 0x90, 0x70, 0x6e, 0x32, 0xb4, 0xfc, 0xf1, 0x07, 0xd7, 0x37, 0x0c, 0xdd, 0x37, 0xf5, - 0x49, 0x5f, 0x84, 0x94, 0x0d, 0x7b, 0xa5, 0x48, 0xc3, 0x6c, 0xa3, 0x1f, 0xc9, 0x80, 0x31, 0x4e, - 0x18, 0x1f, 0x73, 0x7b, 0x34, 0x1e, 0x1c, 0x91, 0x89, 0xe1, 0x75, 0x63, 0x86, 0xd7, 0x9b, 0x6c, - 0xd2, 0x2a, 0x7f, 0x94, 0x40, 0x3b, 0xe1, 0x64, 0x24, 0x82, 0x66, 0x77, 0x3c, 0xb8, 0x4d, 0x26, - 0x32, 0x5a, 0x06, 0xa7, 0xab, 0x60, 0xd0, 0x0b, 0x90, 0xff, 0x39, 0xa6, 0x1e, 0x71, 0x15, 0x2b, - 0x85, 0x9e, 0x59, 0xa1, 0x6d, 0xc8, 0x73, 0x81, 0xc5, 0x98, 0x2b, 0x2a, 0x56, 0xb7, 0x1a, 0xf3, - 0x32, 0xa3, 0x15, 0x30, 0xb7, 0xaf, 0x24, 0x7b, 0x46, 0x03, 0xed, 0x41, 0x5e, 0x04, 0x47, 0x84, - 0x19, 0x92, 0x2e, 0x94, 0xd5, 0xbb, 0x4c, 0xa4, 0xb2, 0x7a, 0x97, 0x89, 0x9e, 0xc1, 0x42, 0x43, - 0x58, 0x73, 0x89, 0x47, 0x86, 0x8a, 0x4a, 0x7e, 0x88, 0x43, 0xc2, 0xcb, 0xf9, 0x4b, 0xa8, 0x9a, - 0x52, 0x8c, 0xda, 0x57, 0xa0, 0xe8, 0x36, 0x14, 0xdd, 0x24, 0xdd, 0xca, 0x8b, 0x8a, 0xe8, 0xaf, - 0xcd, 0xf3, 0x3f, 0x95, 0x99, 0xa6, 0x49, 0xa5, 0xb5, 0x65, 0x72, 0x8d, 0xd9, 0x20, 0x60, 0x2e, - 0x65, 0x43, 0xfb, 0x90, 0xd0, 0xe1, 0xa1, 0x28, 0x17, 0xea, 0xd6, 0xb5, 0x85, 0x5e, 0x29, 0xde, - 0xbf, 0xa5, 0xb6, 0xd1, 0x6d, 0x58, 0x4d, 0x44, 0x55, 0xed, 0x2c, 0x5d, 0xa0, 0x76, 0x56, 0x62, - 0x5d, 0x79, 0x8a, 0x6e, 0x01, 0x24, 0x85, 0x59, 0x06, 0x05, 0xd4, 0xf8, 0xec, 0xea, 0x36, 0x2e, - 0xa4, 0x74, 0x91, 0x07, 0x57, 0x7c, 0xca, 0x6c, 0x4e, 0xbc, 0x03, 0xdb, 0x50, 0x25, 0x21, 0x8b, - 0x97, 0x10, 0xda, 0x75, 0x9f, 0xb2, 0x3e, 0xf1, 0x0e, 0xda, 0x31, 0xec, 0xf6, 0xf2, 0xdb, 0x0f, - 0x6b, 0x19, 0x53, 0x4b, 0x99, 0x46, 0x17, 0x96, 0xf7, 0xb1, 0x67, 0xca, 0x80, 0x70, 0xf4, 0x1a, - 0x2c, 0xe1, 0x68, 0x51, 0xb6, 0xea, 0x0b, 0x67, 0x96, 0x51, 0x22, 0xaa, 0xab, 0xf3, 0xd7, 0x7f, - 0xab, 0x5b, 0x8d, 0xdf, 0x59, 0x90, 0x6f, 0xef, 0x77, 0x31, 0x0d, 0x51, 0x07, 0xd6, 0x93, 0x84, - 0x3a, 0x6f, 0x6d, 0x26, 0x39, 0x18, 0x15, 0x67, 0x07, 0xd6, 0xef, 0x45, 0xe5, 0x1e, 0xc3, 0x64, - 0x3f, 0x0b, 0x26, 0x56, 0x31, 0xfb, 0x53, 0x8e, 0x77, 0x60, 0x51, 0x5b, 0xc9, 0xd1, 0x36, 0x3c, - 0x37, 0x92, 0x1f, 0xca, 0xdf, 0xe2, 0x56, 0x75, 0x6e, 0x22, 0x2a, 0x79, 0x13, 0x40, 0xad, 0xd2, - 0xf8, 0x8f, 0x05, 0xd0, 0xde, 0xdf, 0xdf, 0x0b, 0xe9, 0xc8, 0x23, 0xe2, 0xb2, 0x3c, 0x7e, 0x03, - 0x9e, 0x4f, 0x3c, 0xe6, 0xa1, 0x73, 0x6e, 0xaf, 0xaf, 0xc4, 0x6a, 0xfd, 0xd0, 0x39, 0x15, 0xcd, - 0xe5, 0x22, 0x46, 0x5b, 0x38, 0x37, 0x5a, 0x9b, 0x8b, 0xd3, 0x69, 0xec, 0x43, 0x31, 0x71, 0x9f, - 0xa3, 0x36, 0x14, 0x84, 0xf9, 0x36, 0x6c, 0x36, 0xe6, 0xb3, 0x19, 0xa9, 0x19, 0x46, 0x63, 0xcd, - 0xc6, 0x7f, 0x25, 0xa9, 0x71, 0xc6, 0x7e, 0xb1, 0xd2, 0x48, 0xf6, 0x5e, 0xd3, 0x1b, 0x2f, 0x63, - 0xa2, 0x30, 0x58, 0x53, 0xac, 0xfe, 0x26, 0x0b, 0x57, 0xee, 0x46, 0xdd, 0xe6, 0x0b, 0xcb, 0x44, - 0x17, 0x16, 0x09, 0x13, 0x21, 0x55, 0x54, 0xc8, 0x58, 0x7f, 0x73, 0x5e, 0xac, 0x4f, 0xf1, 0xa5, - 0xc3, 0x44, 0x38, 0x31, 0x91, 0x8f, 0x60, 0xa6, 0x58, 0xf8, 0x6b, 0x16, 0xca, 0xf3, 0x34, 0xd1, - 0xcb, 0x50, 0x72, 0x42, 0xa2, 0x36, 0xa2, 0xae, 0x6f, 0xa9, 0xae, 0xbf, 0x1a, 0x6d, 0x9b, 0xa6, - 0xff, 0x26, 0xc8, 0x01, 0x4a, 0x26, 0x96, 0x14, 0xbd, 0xf0, 0xc4, 0xb4, 0x9a, 0x28, 0xab, 0xb6, - 0x4f, 0xa0, 0x44, 0x19, 0x15, 0x14, 0x7b, 0xf6, 0x00, 0x7b, 0x98, 0x39, 0x9f, 0x67, 0xb2, 0x9c, - 0x6d, 0xd4, 0xab, 0x06, 0xb4, 0xa5, 0x31, 0xd1, 0x3e, 0x2c, 0x46, 0xf0, 0xb9, 0x4b, 0x80, 0x8f, - 0xc0, 0x52, 0x53, 0xd4, 0x27, 0x59, 0x58, 0xef, 0x11, 0xf7, 0xd9, 0xa2, 0xf5, 0x27, 0x00, 0xba, - 0xe0, 0x64, 0x1f, 0xfc, 0x1c, 0xcc, 0xce, 0x16, 0xf0, 0x92, 0xc6, 0x6b, 0x73, 0x91, 0xe2, 0xf6, - 0xa3, 0x2c, 0x2c, 0xa7, 0xb9, 0x7d, 0x06, 0xfe, 0x2e, 0xa0, 0xdd, 0xa4, 0x1b, 0xe4, 0x54, 0x37, - 0x78, 0x65, 0x5e, 0x37, 0x98, 0xc9, 0xba, 0xb3, 0xdb, 0xc0, 0xa7, 0x59, 0xc8, 0x77, 0x71, 0x88, - 0x7d, 0x8e, 0xbe, 0x3f, 0x33, 0xc0, 0xe9, 0x57, 0xd5, 0xd5, 0x99, 0x9c, 0x6b, 0x9b, 0x47, 0xbd, - 0x4e, 0xb9, 0x77, 0x4f, 0x99, 0xdf, 0xbe, 0x0e, 0xab, 0xf2, 0x89, 0x18, 0xbb, 0xa2, 0x49, 0x5c, - 0x51, 0x6f, 0xbc, 0xf8, 0x75, 0xc1, 0x51, 0x0d, 0x8a, 0x52, 0x2c, 0x69, 0x74, 0x52, 0x06, 0x7c, - 0x7c, 0xdc, 0xd1, 0x3b, 0xe8, 0x3a, 0xa0, 0xc3, 0xf8, 0xd1, 0x6e, 0x27, 0x14, 0x48, 0xb9, 0xf5, - 0xe4, 0x24, 0x12, 0xff, 0x0a, 0x80, 0xb4, 0xc2, 0x76, 0x09, 0x0b, 0x7c, 0xf3, 0xc6, 0x59, 0x92, - 0x3b, 0x6d, 0xb9, 0x81, 0x7e, 0xa9, 0x67, 0xc1, 0xa9, 0xd7, 0xa3, 0x19, 0xc3, 0xdf, 0xb8, 0x58, - 0xa6, 0x7e, 0x7a, 0x52, 0xab, 0x4c, 0xb0, 0xef, 0x6d, 0x37, 0x4e, 0x81, 0x6c, 0xa8, 0xd9, 0xf0, - 0xe9, 0x57, 0x67, 0x2a, 0x83, 0xdf, 0xb3, 0x00, 0x25, 0x2d, 0xb7, 0x47, 0xf8, 0x48, 0x3e, 0x6b, - 0xe4, 0xd0, 0x9b, 0x9a, 0x50, 0xad, 0xb3, 0x87, 0xde, 0x44, 0x3f, 0x1a, 0x7a, 0x53, 0x15, 0xf1, - 0xed, 0xa4, 0xc1, 0x65, 0x4d, 0x0c, 0x0d, 0xcc, 0x00, 0x73, 0x92, 0x1a, 0x9c, 0x69, 0xa4, 0x3d, - 0xd3, 0xc3, 0x32, 0x8d, 0x4f, 0x2c, 0xb8, 0x3a, 0x93, 0x4d, 0xb1, 0xb1, 0x3f, 0x03, 0x14, 0xa6, - 0x0e, 0x55, 0x6c, 0x26, 0xc6, 0xe8, 0x0b, 0x27, 0xe7, 0x7a, 0x38, 0xd3, 0x2b, 0xff, 0x5f, 0x3d, - 0x3a, 0xa7, 0x22, 0xf0, 0x47, 0x0b, 0x36, 0xd2, 0xc6, 0xc4, 0x6e, 0xdd, 0x81, 0xe5, 0xb4, 0x2d, - 0xc6, 0xa1, 0x17, 0xcf, 0xe3, 0x90, 0xf1, 0xe5, 0x29, 0x7d, 0xf4, 0x56, 0x52, 0xb8, 0xfa, 0xc7, - 0xa2, 0x1b, 0xe7, 0xe6, 0x26, 0xb2, 0x69, 0xba, 0x80, 0x73, 0xd1, 0x14, 0x93, 0xeb, 0x06, 0x81, - 0x87, 0x7e, 0x05, 0xeb, 0x2c, 0x10, 0xb6, 0xcc, 0x72, 0xe2, 0xda, 0xe6, 0xe5, 0xaa, 0xbb, 0xdf, - 0x5b, 0x17, 0xa3, 0xec, 0x5f, 0x27, 0xb5, 0x59, 0xa8, 0x29, 0x1e, 0x4b, 0x2c, 0x10, 0x2d, 0x75, - 0xbe, 0xa7, 0xdf, 0xb5, 0x21, 0xac, 0x3c, 0x7d, 0xb5, 0xee, 0x96, 0x6f, 0x5e, 0xf8, 0xea, 0x95, - 0xb3, 0xae, 0x5d, 0x1e, 0xa4, 0xee, 0xdc, 0x2e, 0xc8, 0x18, 0xfe, 0xfb, 0x61, 0xcd, 0xfa, 0xc6, - 0xef, 0x2d, 0x80, 0xe4, 0x09, 0x8f, 0x5e, 0x85, 0x2f, 0xb5, 0x7e, 0x70, 0xa7, 0x6d, 0xf7, 0xf7, - 0x6e, 0xee, 0xdd, 0xed, 0xdb, 0x77, 0xef, 0xf4, 0xbb, 0x9d, 0x9d, 0xdd, 0xd7, 0x77, 0x3b, 0xed, - 0xb5, 0x4c, 0xa5, 0x74, 0xff, 0x41, 0xbd, 0x78, 0x97, 0xf1, 0x11, 0x71, 0xe8, 0x01, 0x25, 0x2e, - 0x7a, 0x09, 0x36, 0x9e, 0x96, 0x96, 0xab, 0x4e, 0x7b, 0xcd, 0xaa, 0x2c, 0xdf, 0x7f, 0x50, 0x2f, - 0xe8, 0xe9, 0x88, 0xb8, 0xe8, 0x1a, 0x3c, 0x3f, 0x2b, 0xb7, 0x7b, 0xe7, 0x7b, 0x6b, 0xd9, 0xca, - 0xca, 0xfd, 0x07, 0xf5, 0xa5, 0x78, 0x8c, 0x42, 0x0d, 0x40, 0x69, 0x49, 0x83, 0xb7, 0x50, 0x81, - 0xfb, 0x0f, 0xea, 0x79, 0x4d, 0x5b, 0x25, 0xf7, 0xf6, 0x7b, 0xd5, 0x4c, 0xeb, 0xf5, 0x0f, 0x1f, - 0x57, 0xad, 0x47, 0x8f, 0xab, 0xd6, 0x3f, 0x1e, 0x57, 0xad, 0x77, 0x9e, 0x54, 0x33, 0x8f, 0x9e, - 0x54, 0x33, 0x7f, 0x7e, 0x52, 0xcd, 0xfc, 0xf8, 0xd5, 0x33, 0x19, 0x3b, 0x8e, 0x7f, 0xc9, 0x55, - 0xdc, 0x0d, 0xf2, 0xaa, 0x29, 0x7f, 0xeb, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x49, 0x0e, 0x8f, - 0x94, 0xe8, 0x15, 0x00, 0x00, + 0x15, 0xe6, 0x52, 0x0c, 0x45, 0x3e, 0x4a, 0xa2, 0x34, 0x96, 0x5d, 0x9a, 0x68, 0x49, 0x96, 0xcd, + 0x8f, 0x53, 0xc4, 0x54, 0xed, 0x02, 0x01, 0x2a, 0x14, 0x28, 0x4c, 0x91, 0xae, 0x55, 0x27, 0xae, + 0xb2, 0x94, 0xd5, 0x5f, 0x74, 0x31, 0xdc, 0x1d, 0x51, 0x5b, 0xed, 0xce, 0x12, 0x3b, 0x43, 0x5b, + 0x04, 0x5a, 0xa0, 0x40, 0x2f, 0xae, 0x4f, 0x39, 0xe6, 0x62, 0xc0, 0x40, 0x7a, 0xcc, 0x31, 0x68, + 0x0f, 0x3d, 0xf4, 0x9a, 0xe6, 0x64, 0xe4, 0xd4, 0xb4, 0x85, 0x5a, 0xd8, 0x97, 0xa2, 0xa7, 0xa2, + 0xf7, 0x16, 0xc5, 0xfc, 0xec, 0x8f, 0x48, 0x49, 0x91, 0x5c, 0x16, 0x08, 0xe0, 0x8b, 0xc4, 0x99, + 0x79, 0xef, 0x9b, 0xf7, 0xbe, 0x79, 0xef, 0xed, 0x9b, 0x81, 0x97, 0xed, 0x80, 0xf9, 0x01, 0x5b, + 0x63, 0x1c, 0xef, 0xbb, 0x74, 0xb0, 0x76, 0xef, 0x5a, 0x9f, 0x70, 0x7c, 0x2d, 0x1a, 0xb7, 0x86, + 0x61, 0xc0, 0x03, 0x74, 0x49, 0x49, 0xb5, 0xa2, 0x59, 0x2d, 0x55, 0x5d, 0x1d, 0x04, 0x83, 0x40, + 0x8a, 0xac, 0x89, 0x5f, 0x4a, 0xba, 0x7a, 0x79, 0x10, 0x04, 0x03, 0x8f, 0xac, 0xc9, 0x51, 0x7f, + 0xb4, 0xbb, 0x86, 0xe9, 0x58, 0x2f, 0xd5, 0x26, 0x97, 0x9c, 0x51, 0x88, 0xb9, 0x1b, 0x50, 0xbd, + 0x5e, 0x9f, 0x5c, 0xe7, 0xae, 0x4f, 0x18, 0xc7, 0xfe, 0x30, 0xc2, 0x56, 0x96, 0x58, 0x6a, 0x53, + 0x6d, 0x96, 0xc6, 0xd6, 0xae, 0xf4, 0x31, 0x23, 0xb1, 0x1f, 0x76, 0xe0, 0x46, 0xd8, 0x5f, 0xe4, + 0x84, 0x3a, 0x24, 0xf4, 0x5d, 0xca, 0xd7, 0xf8, 0x78, 0x48, 0x98, 0xfa, 0xab, 0x56, 0x9b, 0xbf, + 0x32, 0x60, 0xe9, 0x96, 0xcb, 0x78, 0x10, 0xba, 0x36, 0xf6, 0x36, 0xe9, 0x6e, 0x80, 0xde, 0x84, + 0xfc, 0x1e, 0xc1, 0x0e, 0x09, 0x2b, 0x46, 0xc3, 0xb8, 0x52, 0xba, 0x5e, 0x69, 0x25, 0x08, 0x2d, + 0xa5, 0x7b, 0x4b, 0xae, 0xb7, 0x73, 0x1f, 0x1d, 0xd6, 0x33, 0xa6, 0x96, 0x46, 0xdf, 0x82, 0xfc, + 0x3d, 0xec, 0x31, 0xc2, 0x2b, 0xd9, 0xc6, 0xdc, 0x95, 0xd2, 0xf5, 0x2f, 0xb7, 0x8e, 0xa7, 0xaf, + 0xb5, 0x83, 0x3d, 0xd7, 0xc1, 0x3c, 0x88, 0x01, 0x94, 0x5a, 0xf3, 0xb7, 0x59, 0xb8, 0xbc, 0x11, + 0x50, 0xb6, 0x35, 0xea, 0xdf, 0x26, 0x63, 0x33, 0xe0, 0x92, 0x22, 0x65, 0xdd, 0x18, 0x6d, 0xc0, + 0x72, 0x30, 0x24, 0xa1, 0xd0, 0xb3, 0xb0, 0xe3, 0x84, 0x84, 0x31, 0x69, 0x60, 0xb1, 0x5d, 0xf9, + 0xe4, 0xc3, 0xab, 0xab, 0x7a, 0xaf, 0x1b, 0x6a, 0xa5, 0xc7, 0x43, 0x97, 0x0e, 0xcc, 0x72, 0xa4, + 0xa1, 0xa7, 0xd1, 0x0e, 0x94, 0x03, 0xcf, 0xb1, 0xec, 0x80, 0x32, 0x6b, 0x38, 0xea, 0xef, 0x93, + 0x71, 0x25, 0x2b, 0x9d, 0x5c, 0x6d, 0xa9, 0x23, 0x68, 0x45, 0x47, 0xd0, 0xba, 0x41, 0xc7, 0xed, + 0xca, 0xc7, 0x09, 0xb2, 0x1d, 0x8e, 0x87, 0x3c, 0x68, 0x69, 0xe3, 0x16, 0x03, 0xcf, 0xd1, 0xb6, + 0xee, 0x93, 0xb1, 0xc0, 0xa5, 0xe4, 0xfe, 0x11, 0xdc, 0xb9, 0xe7, 0xc3, 0xa5, 0xe4, 0x7e, 0x0a, + 0xf7, 0x15, 0x58, 0x0a, 0x05, 0x0f, 0xc4, 0xb1, 0xf6, 0x88, 0x3b, 0xd8, 0xe3, 0x95, 0x5c, 0xc3, + 0xb8, 0x32, 0x67, 0x2e, 0xea, 0xd9, 0x5b, 0x72, 0xb2, 0xf9, 0x41, 0x16, 0xca, 0x1b, 0x81, 0xef, + 0xbb, 0x8c, 0xb9, 0x01, 0x35, 0x31, 0x27, 0x0c, 0x6d, 0x41, 0x2e, 0xc4, 0x9c, 0x68, 0x8e, 0xbe, + 0x29, 0x98, 0xfe, 0xd3, 0x61, 0xfd, 0xd5, 0x81, 0xcb, 0xf7, 0x46, 0xfd, 0x96, 0x1d, 0xf8, 0x3a, + 0x8c, 0xf4, 0xbf, 0xab, 0xcc, 0xd9, 0xd7, 0x91, 0xd1, 0x21, 0xf6, 0x27, 0x1f, 0x5e, 0x05, 0x6d, + 0x5f, 0x87, 0xd8, 0xa6, 0x44, 0x42, 0xdf, 0x83, 0x82, 0x8f, 0x0f, 0x2c, 0x89, 0x9a, 0x9d, 0x01, + 0xea, 0xbc, 0x8f, 0x0f, 0x84, 0xad, 0xc8, 0x81, 0xb2, 0x00, 0xb6, 0xf7, 0x30, 0x1d, 0x10, 0x85, + 0x3f, 0x37, 0x03, 0xfc, 0x45, 0x1f, 0x1f, 0x6c, 0x48, 0x4c, 0xb1, 0xcb, 0x7a, 0xe1, 0xbd, 0xc7, + 0xf5, 0xcc, 0xdf, 0x1f, 0xd7, 0x8d, 0xe6, 0xef, 0x0c, 0x80, 0x84, 0x2e, 0xf4, 0x63, 0x58, 0xb6, + 0xe3, 0x91, 0xdc, 0x9e, 0xe9, 0xd0, 0x7f, 0xed, 0xa4, 0x10, 0x9e, 0x20, 0xbb, 0x5d, 0x10, 0x86, + 0x3e, 0x39, 0xac, 0x1b, 0x66, 0xd9, 0x9e, 0x38, 0x87, 0x2e, 0x94, 0x46, 0x43, 0x07, 0x73, 0x62, + 0x89, 0xa4, 0xd6, 0xe1, 0x56, 0x9d, 0x0a, 0x8b, 0xed, 0x28, 0xe3, 0x15, 0xd6, 0xbb, 0x7f, 0xad, + 0x1b, 0x26, 0x28, 0x45, 0xb1, 0x94, 0xb2, 0xfe, 0x03, 0x03, 0x4a, 0x1d, 0xc2, 0xec, 0xd0, 0x1d, + 0x8a, 0xfc, 0x40, 0x15, 0x98, 0xf7, 0x03, 0xea, 0xee, 0xeb, 0x84, 0x2d, 0x9a, 0xd1, 0x10, 0x55, + 0xa1, 0xe0, 0x3a, 0x84, 0x72, 0x97, 0xab, 0x30, 0x2f, 0x9a, 0xf1, 0x58, 0x68, 0xdd, 0x27, 0x7d, + 0xe6, 0x46, 0x5c, 0x9b, 0xd1, 0x10, 0xbd, 0x0e, 0xcb, 0x8c, 0xd8, 0xa3, 0xd0, 0xe5, 0x63, 0x11, + 0xd0, 0x1c, 0xdb, 0x2a, 0xea, 0x8a, 0x66, 0x39, 0x9a, 0xdf, 0x50, 0xd3, 0x02, 0xc4, 0x21, 0x1c, + 0xbb, 0x1e, 0xab, 0xbc, 0xa4, 0x40, 0xf4, 0x30, 0x65, 0xee, 0x1f, 0xf2, 0x50, 0x8c, 0x33, 0x7e, + 0x36, 0x59, 0xfc, 0x03, 0x71, 0x60, 0x94, 0x11, 0xca, 0x46, 0xff, 0x63, 0x1a, 0x97, 0x63, 0x1c, + 0x9d, 0x70, 0x97, 0x20, 0xff, 0x53, 0xec, 0x7a, 0xc4, 0x91, 0xac, 0x14, 0x4c, 0x3d, 0x42, 0xeb, + 0x90, 0x67, 0x1c, 0xf3, 0x11, 0x93, 0x54, 0x2c, 0x5d, 0x6f, 0x9e, 0x14, 0x19, 0xed, 0x80, 0x3a, + 0x3d, 0x29, 0x69, 0x6a, 0x0d, 0xb4, 0x0d, 0x79, 0x1e, 0xec, 0x13, 0xaa, 0x49, 0x3a, 0x57, 0x54, + 0x6f, 0x52, 0x9e, 0x8a, 0xea, 0x4d, 0xca, 0x4d, 0x8d, 0x85, 0x06, 0xb0, 0xec, 0x10, 0x8f, 0x0c, + 0x24, 0x95, 0x6c, 0x0f, 0x87, 0x84, 0x55, 0xf2, 0x33, 0xc8, 0x9a, 0x72, 0x8c, 0xda, 0x93, 0xa0, + 0xe8, 0x36, 0x94, 0x9c, 0x24, 0xdc, 0x2a, 0xf3, 0x92, 0xe8, 0xaf, 0x9c, 0xe4, 0x7f, 0x2a, 0x32, + 0x75, 0x79, 0x4f, 0x6b, 0x8b, 0xe0, 0x1a, 0xd1, 0x7e, 0x40, 0x1d, 0x97, 0x0e, 0xa2, 0x92, 0x56, + 0x90, 0x25, 0xad, 0x1c, 0xcf, 0xab, 0xa2, 0x86, 0x6e, 0xc3, 0x52, 0x22, 0x2a, 0x73, 0xa7, 0x78, + 0x8e, 0xdc, 0x59, 0x8c, 0x75, 0xc5, 0x2a, 0xba, 0x05, 0x90, 0x24, 0x66, 0x05, 0x24, 0x50, 0xf3, + 0xb3, 0xb3, 0x5b, 0xbb, 0x90, 0xd2, 0x45, 0x1e, 0x5c, 0xf0, 0x5d, 0x6a, 0x31, 0xe2, 0xed, 0x5a, + 0x9a, 0x2a, 0x01, 0x59, 0x9a, 0xc1, 0xd1, 0xae, 0xf8, 0x2e, 0xed, 0x11, 0x6f, 0xb7, 0x13, 0xc3, + 0xae, 0x2f, 0x3c, 0x78, 0x5c, 0xcf, 0xe8, 0x5c, 0xca, 0x34, 0xb7, 0x60, 0x61, 0x07, 0x7b, 0x3a, + 0x0d, 0x08, 0x43, 0x6f, 0x42, 0x11, 0x47, 0x83, 0x8a, 0xd1, 0x98, 0x3b, 0x35, 0x8d, 0x12, 0x51, + 0x95, 0x9d, 0xbf, 0xf8, 0x4b, 0xc3, 0x68, 0xfe, 0xda, 0x80, 0x7c, 0x67, 0x67, 0x0b, 0xbb, 0x21, + 0xea, 0xc2, 0x4a, 0x12, 0x50, 0x67, 0xcd, 0xcd, 0x24, 0x06, 0xa3, 0xe4, 0xec, 0xc2, 0xca, 0xbd, + 0x28, 0xdd, 0x63, 0x98, 0xec, 0x67, 0xc1, 0xc4, 0x2a, 0x7a, 0x7e, 0xc2, 0xf1, 0x2e, 0xcc, 0x2b, + 0x2b, 0x19, 0x5a, 0x87, 0x97, 0x86, 0xe2, 0x87, 0xf4, 0xb7, 0x74, 0xbd, 0x76, 0x62, 0x20, 0x4a, + 0x79, 0x7d, 0x80, 0x4a, 0xa5, 0xf9, 0x6f, 0x03, 0xa0, 0xb3, 0xb3, 0xb3, 0x1d, 0xba, 0x43, 0x8f, + 0xf0, 0x59, 0x79, 0xfc, 0x16, 0x5c, 0x4c, 0x3c, 0x66, 0xa1, 0x7d, 0x66, 0xaf, 0x2f, 0xc4, 0x6a, + 0xbd, 0xd0, 0x3e, 0x16, 0xcd, 0x61, 0x3c, 0x46, 0x9b, 0x3b, 0x33, 0x5a, 0x87, 0xf1, 0xe3, 0x69, + 0xec, 0x41, 0x29, 0x71, 0x9f, 0xa1, 0x0e, 0x14, 0xb8, 0xfe, 0xad, 0xd9, 0x6c, 0x9e, 0xcc, 0x66, + 0xa4, 0xa6, 0x19, 0x8d, 0x35, 0x9b, 0xff, 0x11, 0xa4, 0xc6, 0x11, 0xfb, 0xf9, 0x0a, 0x23, 0x51, + 0x7b, 0x75, 0x6d, 0x9c, 0x45, 0x47, 0xa1, 0xb1, 0x26, 0x58, 0xfd, 0x65, 0x16, 0x2e, 0xdc, 0x8d, + 0xaa, 0xcd, 0xe7, 0x96, 0x89, 0x2d, 0x98, 0x27, 0x94, 0x87, 0xae, 0xa4, 0x42, 0x9c, 0xf5, 0xd7, + 0x4e, 0x3a, 0xeb, 0x63, 0x7c, 0xe9, 0x52, 0x1e, 0x8e, 0xf5, 0xc9, 0x47, 0x30, 0x13, 0x2c, 0xfc, + 0x39, 0x0b, 0x95, 0x93, 0x34, 0xd1, 0x6b, 0x50, 0xb6, 0x43, 0x22, 0x27, 0xa2, 0xaa, 0x6f, 0xc8, + 0xaa, 0xbf, 0x14, 0x4d, 0xeb, 0xa2, 0xff, 0x36, 0x88, 0x06, 0x4a, 0x04, 0x96, 0x10, 0x3d, 0x77, + 0xc7, 0xb4, 0x94, 0x28, 0xcb, 0xb2, 0x4f, 0xa0, 0xec, 0x52, 0x97, 0xbb, 0xd8, 0xb3, 0xfa, 0xd8, + 0xc3, 0xd4, 0x7e, 0x9e, 0xce, 0x72, 0xba, 0x50, 0x2f, 0x69, 0xd0, 0xb6, 0xc2, 0x44, 0x3b, 0x30, + 0x1f, 0xc1, 0xe7, 0x66, 0x00, 0x1f, 0x81, 0xa5, 0xba, 0xa8, 0x4f, 0xb3, 0xb0, 0x62, 0x12, 0xe7, + 0xc5, 0xa2, 0xf5, 0x47, 0x00, 0x2a, 0xe1, 0x44, 0x1d, 0x7c, 0x0e, 0x66, 0xa7, 0x13, 0xb8, 0xa8, + 0xf0, 0x3a, 0x8c, 0xa7, 0xb8, 0xfd, 0x38, 0x0b, 0x0b, 0x69, 0x6e, 0x5f, 0x80, 0xef, 0x02, 0xda, + 0x4c, 0xaa, 0x41, 0x4e, 0x56, 0x83, 0xd7, 0x4f, 0xaa, 0x06, 0x53, 0x51, 0x77, 0x7a, 0x19, 0x78, + 0x90, 0x83, 0xfc, 0x16, 0x0e, 0xb1, 0xcf, 0xd0, 0x77, 0xa6, 0x1a, 0x38, 0x75, 0xab, 0xba, 0x3c, + 0x15, 0x73, 0x1d, 0xfd, 0x1c, 0xa2, 0x42, 0xee, 0xbd, 0x63, 0xfa, 0xb7, 0x57, 0x60, 0x49, 0x5c, + 0x11, 0x63, 0x57, 0x14, 0x89, 0x8b, 0xf2, 0x8e, 0x17, 0xdf, 0x2e, 0x18, 0xaa, 0x43, 0x49, 0x88, + 0x25, 0x85, 0x4e, 0xc8, 0x80, 0x8f, 0x0f, 0xba, 0x6a, 0x06, 0x5d, 0x05, 0xb4, 0x17, 0x3f, 0x77, + 0x58, 0x09, 0x05, 0x42, 0x6e, 0x25, 0x59, 0x89, 0xc4, 0xbf, 0x04, 0x20, 0xac, 0xb0, 0x1c, 0x42, + 0x03, 0x5f, 0xdf, 0x71, 0x8a, 0x62, 0xa6, 0x23, 0x26, 0xd0, 0xcf, 0x54, 0x2f, 0x38, 0x71, 0x7b, + 0xd4, 0x6d, 0xf8, 0x5b, 0xe7, 0x8b, 0xd4, 0x7f, 0x1d, 0xd6, 0xab, 0x63, 0xec, 0x7b, 0xeb, 0xcd, + 0x63, 0x20, 0x9b, 0xb2, 0x37, 0x3c, 0x7a, 0xeb, 0x44, 0xeb, 0x50, 0x95, 0xd7, 0x66, 0xfd, 0xe8, + 0x60, 0xed, 0x93, 0xb1, 0x15, 0xea, 0x57, 0x13, 0x26, 0xfb, 0xf4, 0x9c, 0x79, 0x49, 0xdc, 0x81, + 0xa7, 0xde, 0x54, 0x18, 0xfa, 0x3e, 0x54, 0x52, 0x8f, 0x15, 0xb1, 0x9a, 0xb5, 0x4b, 0x88, 0xec, + 0xc7, 0xc5, 0x29, 0xe9, 0x80, 0xe8, 0x63, 0x46, 0x52, 0xad, 0xb1, 0x1b, 0x35, 0xc5, 0x17, 0xed, + 0xf8, 0x9d, 0x22, 0xc2, 0xbd, 0x49, 0xd2, 0x35, 0xeb, 0x7d, 0x03, 0x50, 0xf2, 0x21, 0x30, 0x09, + 0x1b, 0x8a, 0xcb, 0x96, 0x68, 0xc5, 0x53, 0x7d, 0xb3, 0x71, 0x7a, 0x2b, 0x9e, 0xe8, 0x47, 0xad, + 0x78, 0x2a, 0x4f, 0xbf, 0x91, 0x94, 0xdd, 0xec, 0xd9, 0x6c, 0x9e, 0xaa, 0xac, 0x99, 0xe6, 0xa7, + 0x06, 0x5c, 0x9e, 0x8a, 0xf1, 0xd8, 0xd8, 0x9f, 0x00, 0x0a, 0x53, 0x8b, 0x32, 0x62, 0xc6, 0xda, + 0xe8, 0x73, 0xa7, 0xcc, 0x4a, 0x38, 0x55, 0xc1, 0xff, 0x5f, 0x5f, 0x8e, 0x9c, 0x3c, 0x81, 0xdf, + 0x1b, 0xb0, 0x9a, 0x36, 0x26, 0x76, 0xeb, 0x0e, 0x2c, 0xa4, 0x6d, 0xd1, 0x0e, 0xbd, 0x7c, 0x16, + 0x87, 0xb4, 0x2f, 0x47, 0xf4, 0xd1, 0x3b, 0x49, 0x39, 0x51, 0x8f, 0x7f, 0xd7, 0xce, 0xcc, 0x4d, + 0x64, 0xd3, 0x64, 0x59, 0xc9, 0x45, 0xbd, 0x55, 0x6e, 0x2b, 0x08, 0x3c, 0xf4, 0x73, 0x58, 0xa1, + 0x01, 0xb7, 0x44, 0xee, 0x11, 0xc7, 0xd2, 0xf7, 0x69, 0x55, 0x93, 0xdf, 0x39, 0x1f, 0x65, 0xff, + 0x38, 0xac, 0x4f, 0x43, 0x4d, 0xf0, 0x58, 0xa6, 0x01, 0x6f, 0xcb, 0xf5, 0x6d, 0x75, 0xdb, 0x0e, + 0x61, 0xf1, 0xe8, 0xd6, 0xaa, 0x86, 0xbf, 0x7d, 0xee, 0xad, 0x17, 0x4f, 0xdb, 0x76, 0xa1, 0x9f, + 0xda, 0x73, 0xbd, 0x20, 0xce, 0xf0, 0x9f, 0x8f, 0xeb, 0xc6, 0x57, 0x7f, 0x63, 0x00, 0x24, 0x0f, + 0x0b, 0xe8, 0x0d, 0xf8, 0x42, 0xfb, 0xbb, 0x77, 0x3a, 0x56, 0x6f, 0xfb, 0xc6, 0xf6, 0xdd, 0x9e, + 0x75, 0xf7, 0x4e, 0x6f, 0xab, 0xbb, 0xb1, 0x79, 0x73, 0xb3, 0xdb, 0x59, 0xce, 0x54, 0xcb, 0x0f, + 0x1f, 0x35, 0x4a, 0x77, 0x29, 0x1b, 0x12, 0xdb, 0xdd, 0x75, 0x89, 0x83, 0x5e, 0x85, 0xd5, 0xa3, + 0xd2, 0x62, 0xd4, 0xed, 0x2c, 0x1b, 0xd5, 0x85, 0x87, 0x8f, 0x1a, 0x05, 0xd5, 0xb3, 0x11, 0x07, + 0x5d, 0x81, 0x8b, 0xd3, 0x72, 0x9b, 0x77, 0xbe, 0xbd, 0x9c, 0xad, 0x2e, 0x3e, 0x7c, 0xd4, 0x28, + 0xc6, 0xcd, 0x1d, 0x6a, 0x02, 0x4a, 0x4b, 0x6a, 0xbc, 0xb9, 0x2a, 0x3c, 0x7c, 0xd4, 0xc8, 0x2b, + 0xda, 0xaa, 0xb9, 0x07, 0xef, 0xd7, 0x32, 0xed, 0x9b, 0x1f, 0x3d, 0xad, 0x19, 0x4f, 0x9e, 0xd6, + 0x8c, 0xbf, 0x3d, 0xad, 0x19, 0xef, 0x3e, 0xab, 0x65, 0x9e, 0x3c, 0xab, 0x65, 0xfe, 0xf8, 0xac, + 0x96, 0xf9, 0xe1, 0x1b, 0xa7, 0x32, 0x76, 0x10, 0xbf, 0xcc, 0x4b, 0xee, 0xfa, 0x79, 0xf9, 0xa9, + 0xf8, 0xfa, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x33, 0x7c, 0x1a, 0x95, 0xb8, 0x17, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1256,476 +1350,484 @@ func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7499 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbc, 0x6b, 0x70, 0x24, 0xd7, - 0x75, 0x1f, 0x8e, 0x79, 0x60, 0x30, 0x73, 0x66, 0x30, 0x68, 0x5c, 0x60, 0x77, 0x67, 0x41, 0x12, - 0x00, 0x87, 0x8f, 0x5d, 0xbe, 0xb0, 0xe4, 0x92, 0xbb, 0xcb, 0x9d, 0xb5, 0xc4, 0xff, 0xbc, 0x16, - 0xc4, 0x2e, 0x1e, 0xc3, 0x1e, 0x60, 0xf9, 0xf0, 0xdf, 0xe9, 0x6a, 0xf4, 0x5c, 0x0c, 0x9a, 0xe8, - 0xe9, 0x6e, 0x77, 0xf7, 0xec, 0x2e, 0x58, 0x4e, 0x8a, 0x2e, 0xe5, 0x21, 0x6d, 0x2a, 0x8e, 0x1c, - 0xa7, 0x62, 0x59, 0xd6, 0x2a, 0x94, 0xe5, 0x44, 0x8e, 0xa2, 0x3c, 0x6c, 0x29, 0x4a, 0x1c, 0x57, - 0x12, 0x25, 0xa9, 0x24, 0xb2, 0x3e, 0xa4, 0x64, 0x7f, 0x88, 0xed, 0x3c, 0x18, 0x87, 0x52, 0x25, - 0x8c, 0xa2, 0xc4, 0x8e, 0xc2, 0x54, 0x25, 0xa5, 0x52, 0x2a, 0x75, 0x5f, 0xfd, 0x98, 0x07, 0x66, - 0xb0, 0x59, 0xca, 0xae, 0xf2, 0x27, 0x4c, 0x9f, 0x7b, 0x7e, 0xbf, 0x3e, 0xf7, 0xdc, 0x73, 0xcf, - 0x3d, 0xf7, 0x76, 0x37, 0xe0, 0x9f, 0x5e, 0x81, 0xe5, 0xb6, 0x65, 0xb5, 0x0d, 0x7c, 0xce, 0x76, - 0x2c, 0xcf, 0xda, 0xed, 0xee, 0x9d, 0x6b, 0x61, 0x57, 0x73, 0x74, 0xdb, 0xb3, 0x9c, 0x15, 0x2a, - 0x43, 0x33, 0x4c, 0x63, 0x45, 0x68, 0x14, 0x37, 0x60, 0xf6, 0xaa, 0x6e, 0xe0, 0x9a, 0xaf, 0xd8, - 0xc4, 0x1e, 0x7a, 0x11, 0x92, 0x7b, 0xba, 0x81, 0x0b, 0xb1, 0xe5, 0xc4, 0xd9, 0xec, 0xf9, 0x47, - 0x57, 0x7a, 0x40, 0x2b, 0x51, 0x44, 0x83, 0x88, 0x65, 0x8a, 0x28, 0x7e, 0x3b, 0x09, 0x73, 0x03, - 0x5a, 0x11, 0x82, 0xa4, 0xa9, 0x76, 0x08, 0x63, 0xec, 0x6c, 0x46, 0xa6, 0xbf, 0x51, 0x01, 0xa6, - 0x6c, 0x55, 0x3b, 0x50, 0xdb, 0xb8, 0x10, 0xa7, 0x62, 0x71, 0x89, 0x16, 0x01, 0x5a, 0xd8, 0xc6, - 0x66, 0x0b, 0x9b, 0xda, 0x61, 0x21, 0xb1, 0x9c, 0x38, 0x9b, 0x91, 0x43, 0x12, 0xf4, 0x14, 0xcc, - 0xda, 0xdd, 0x5d, 0x43, 0xd7, 0x94, 0x90, 0x1a, 0x2c, 0x27, 0xce, 0x4e, 0xca, 0x12, 0x6b, 0xa8, - 0x05, 0xca, 0x67, 0x60, 0xe6, 0x16, 0x56, 0x0f, 0xc2, 0xaa, 0x59, 0xaa, 0x9a, 0x27, 0xe2, 0x90, - 0x62, 0x15, 0x72, 0x1d, 0xec, 0xba, 0x6a, 0x1b, 0x2b, 0xde, 0xa1, 0x8d, 0x0b, 0x49, 0xda, 0xfb, - 0xe5, 0xbe, 0xde, 0xf7, 0xf6, 0x3c, 0xcb, 0x51, 0xdb, 0x87, 0x36, 0x46, 0x65, 0xc8, 0x60, 0xb3, - 0xdb, 0x61, 0x0c, 0x93, 0x43, 0xfc, 0x57, 0x37, 0xbb, 0x9d, 0x5e, 0x96, 0x34, 0x81, 0x71, 0x8a, - 0x29, 0x17, 0x3b, 0x37, 0x75, 0x0d, 0x17, 0x52, 0x94, 0xe0, 0x4c, 0x1f, 0x41, 0x93, 0xb5, 0xf7, - 0x72, 0x08, 0x1c, 0xaa, 0x42, 0x06, 0xdf, 0xf6, 0xb0, 0xe9, 0xea, 0x96, 0x59, 0x98, 0xa2, 0x24, - 0x8f, 0x0d, 0x18, 0x45, 0x6c, 0xb4, 0x7a, 0x29, 0x02, 0x1c, 0xba, 0x08, 0x53, 0x96, 0xed, 0xe9, - 0x96, 0xe9, 0x16, 0xd2, 0xcb, 0xb1, 0xb3, 0xd9, 0xf3, 0x0f, 0x0e, 0x0c, 0x84, 0x2d, 0xa6, 0x23, - 0x0b, 0x65, 0xb4, 0x06, 0x92, 0x6b, 0x75, 0x1d, 0x0d, 0x2b, 0x9a, 0xd5, 0xc2, 0x8a, 0x6e, 0xee, - 0x59, 0x85, 0x0c, 0x25, 0x58, 0xea, 0xef, 0x08, 0x55, 0xac, 0x5a, 0x2d, 0xbc, 0x66, 0xee, 0x59, - 0x72, 0xde, 0x8d, 0x5c, 0xa3, 0x93, 0x90, 0x72, 0x0f, 0x4d, 0x4f, 0xbd, 0x5d, 0xc8, 0xd1, 0x08, - 0xe1, 0x57, 0xc5, 0x5f, 0x4d, 0xc1, 0xcc, 0x38, 0x21, 0x76, 0x05, 0x26, 0xf7, 0x48, 0x2f, 0x0b, - 0xf1, 0xe3, 0xf8, 0x80, 0x61, 0xa2, 0x4e, 0x4c, 0xdd, 0xa3, 0x13, 0xcb, 0x90, 0x35, 0xb1, 0xeb, - 0xe1, 0x16, 0x8b, 0x88, 0xc4, 0x98, 0x31, 0x05, 0x0c, 0xd4, 0x1f, 0x52, 0xc9, 0x7b, 0x0a, 0xa9, - 0xd7, 0x60, 0xc6, 0x37, 0x49, 0x71, 0x54, 0xb3, 0x2d, 0x62, 0xf3, 0xdc, 0x28, 0x4b, 0x56, 0xea, - 0x02, 0x27, 0x13, 0x98, 0x9c, 0xc7, 0x91, 0x6b, 0x54, 0x03, 0xb0, 0x4c, 0x6c, 0xed, 0x29, 0x2d, - 0xac, 0x19, 0x85, 0xf4, 0x10, 0x2f, 0x6d, 0x11, 0x95, 0x3e, 0x2f, 0x59, 0x4c, 0xaa, 0x19, 0xe8, - 0x72, 0x10, 0x6a, 0x53, 0x43, 0x22, 0x65, 0x83, 0x4d, 0xb2, 0xbe, 0x68, 0xdb, 0x81, 0xbc, 0x83, - 0x49, 0xdc, 0xe3, 0x16, 0xef, 0x59, 0x86, 0x1a, 0xb1, 0x32, 0xb2, 0x67, 0x32, 0x87, 0xb1, 0x8e, - 0x4d, 0x3b, 0xe1, 0x4b, 0xf4, 0x08, 0xf8, 0x02, 0x85, 0x86, 0x15, 0xd0, 0x2c, 0x94, 0x13, 0xc2, - 0x4d, 0xb5, 0x83, 0x17, 0xde, 0x82, 0x7c, 0xd4, 0x3d, 0x68, 0x1e, 0x26, 0x5d, 0x4f, 0x75, 0x3c, - 0x1a, 0x85, 0x93, 0x32, 0xbb, 0x40, 0x12, 0x24, 0xb0, 0xd9, 0xa2, 0x59, 0x6e, 0x52, 0x26, 0x3f, - 0xd1, 0xff, 0x17, 0x74, 0x38, 0x41, 0x3b, 0xfc, 0x78, 0xff, 0x88, 0x46, 0x98, 0x7b, 0xfb, 0xbd, - 0x70, 0x09, 0xa6, 0x23, 0x1d, 0x18, 0xf7, 0xd6, 0xc5, 0x9f, 0x80, 0x13, 0x03, 0xa9, 0xd1, 0x6b, - 0x30, 0xdf, 0x35, 0x75, 0xd3, 0xc3, 0x8e, 0xed, 0x60, 0x12, 0xb1, 0xec, 0x56, 0x85, 0xff, 0x34, - 0x35, 0x24, 0xe6, 0x76, 0xc2, 0xda, 0x8c, 0x45, 0x9e, 0xeb, 0xf6, 0x0b, 0x9f, 0xcc, 0xa4, 0xdf, - 0x9f, 0x92, 0xde, 0x7e, 0xfb, 0xed, 0xb7, 0xe3, 0xc5, 0x7f, 0x9c, 0x82, 0xf9, 0x41, 0x73, 0x66, - 0xe0, 0xf4, 0x3d, 0x09, 0x29, 0xb3, 0xdb, 0xd9, 0xc5, 0x0e, 0x75, 0xd2, 0xa4, 0xcc, 0xaf, 0x50, - 0x19, 0x26, 0x0d, 0x75, 0x17, 0x1b, 0x85, 0xe4, 0x72, 0xec, 0x6c, 0xfe, 0xfc, 0x53, 0x63, 0xcd, - 0xca, 0x95, 0x75, 0x02, 0x91, 0x19, 0x12, 0x7d, 0x14, 0x92, 0x3c, 0x45, 0x13, 0x86, 0x27, 0xc7, - 0x63, 0x20, 0x73, 0x49, 0xa6, 0x38, 0xf4, 0x00, 0x64, 0xc8, 0x5f, 0x16, 0x1b, 0x29, 0x6a, 0x73, - 0x9a, 0x08, 0x48, 0x5c, 0xa0, 0x05, 0x48, 0xd3, 0x69, 0xd2, 0xc2, 0x62, 0x69, 0xf3, 0xaf, 0x49, - 0x60, 0xb5, 0xf0, 0x9e, 0xda, 0x35, 0x3c, 0xe5, 0xa6, 0x6a, 0x74, 0x31, 0x0d, 0xf8, 0x8c, 0x9c, - 0xe3, 0xc2, 0x1b, 0x44, 0x86, 0x96, 0x20, 0xcb, 0x66, 0x95, 0x6e, 0xb6, 0xf0, 0x6d, 0x9a, 0x3d, - 0x27, 0x65, 0x36, 0xd1, 0xd6, 0x88, 0x84, 0xdc, 0xfe, 0x4d, 0xd7, 0x32, 0x45, 0x68, 0xd2, 0x5b, - 0x10, 0x01, 0xbd, 0xfd, 0xa5, 0xde, 0xc4, 0xfd, 0xd0, 0xe0, 0xee, 0xf5, 0xcd, 0xa5, 0x33, 0x30, - 0x43, 0x35, 0x9e, 0xe7, 0x43, 0xaf, 0x1a, 0x85, 0xd9, 0xe5, 0xd8, 0xd9, 0xb4, 0x9c, 0x67, 0xe2, - 0x2d, 0x2e, 0x2d, 0x7e, 0x35, 0x0e, 0x49, 0x9a, 0x58, 0x66, 0x20, 0xbb, 0xfd, 0x7a, 0xa3, 0xae, - 0xd4, 0xb6, 0x76, 0x2a, 0xeb, 0x75, 0x29, 0x86, 0xf2, 0x00, 0x54, 0x70, 0x75, 0x7d, 0xab, 0xbc, - 0x2d, 0xc5, 0xfd, 0xeb, 0xb5, 0xcd, 0xed, 0x8b, 0x2f, 0x48, 0x09, 0x1f, 0xb0, 0xc3, 0x04, 0xc9, - 0xb0, 0xc2, 0xf3, 0xe7, 0xa5, 0x49, 0x24, 0x41, 0x8e, 0x11, 0xac, 0xbd, 0x56, 0xaf, 0x5d, 0x7c, - 0x41, 0x4a, 0x45, 0x25, 0xcf, 0x9f, 0x97, 0xa6, 0xd0, 0x34, 0x64, 0xa8, 0xa4, 0xb2, 0xb5, 0xb5, - 0x2e, 0xa5, 0x7d, 0xce, 0xe6, 0xb6, 0xbc, 0xb6, 0xb9, 0x2a, 0x65, 0x7c, 0xce, 0x55, 0x79, 0x6b, - 0xa7, 0x21, 0x81, 0xcf, 0xb0, 0x51, 0x6f, 0x36, 0xcb, 0xab, 0x75, 0x29, 0xeb, 0x6b, 0x54, 0x5e, - 0xdf, 0xae, 0x37, 0xa5, 0x5c, 0xc4, 0xac, 0xe7, 0xcf, 0x4b, 0xd3, 0xfe, 0x2d, 0xea, 0x9b, 0x3b, - 0x1b, 0x52, 0x1e, 0xcd, 0xc2, 0x34, 0xbb, 0x85, 0x30, 0x62, 0xa6, 0x47, 0x74, 0xf1, 0x05, 0x49, - 0x0a, 0x0c, 0x61, 0x2c, 0xb3, 0x11, 0xc1, 0xc5, 0x17, 0x24, 0x54, 0xac, 0xc2, 0x24, 0x0d, 0x43, - 0x84, 0x20, 0xbf, 0x5e, 0xae, 0xd4, 0xd7, 0x95, 0xad, 0xc6, 0xf6, 0xda, 0xd6, 0x66, 0x79, 0x5d, - 0x8a, 0x05, 0x32, 0xb9, 0xfe, 0xca, 0xce, 0x9a, 0x5c, 0xaf, 0x49, 0xf1, 0xb0, 0xac, 0x51, 0x2f, - 0x6f, 0xd7, 0x6b, 0x52, 0xa2, 0xa8, 0xc1, 0xfc, 0xa0, 0x84, 0x3a, 0x70, 0x0a, 0x85, 0x62, 0x21, - 0x3e, 0x24, 0x16, 0x28, 0x57, 0x6f, 0x2c, 0x14, 0xbf, 0x15, 0x87, 0xb9, 0x01, 0x8b, 0xca, 0xc0, - 0x9b, 0xbc, 0x04, 0x93, 0x2c, 0x96, 0xd9, 0x32, 0xfb, 0xc4, 0xc0, 0xd5, 0x89, 0x46, 0x76, 0xdf, - 0x52, 0x4b, 0x71, 0xe1, 0x52, 0x23, 0x31, 0xa4, 0xd4, 0x20, 0x14, 0x7d, 0x01, 0xfb, 0x63, 0x7d, - 0xc9, 0x9f, 0xad, 0x8f, 0x17, 0xc7, 0x59, 0x1f, 0xa9, 0xec, 0x78, 0x8b, 0xc0, 0xe4, 0x80, 0x45, - 0xe0, 0x0a, 0xcc, 0xf6, 0x11, 0x8d, 0x9d, 0x8c, 0x3f, 0x16, 0x83, 0xc2, 0x30, 0xe7, 0x8c, 0x48, - 0x89, 0xf1, 0x48, 0x4a, 0xbc, 0xd2, 0xeb, 0xc1, 0x87, 0x87, 0x0f, 0x42, 0xdf, 0x58, 0x7f, 0x21, - 0x06, 0x27, 0x07, 0x97, 0x94, 0x03, 0x6d, 0xf8, 0x28, 0xa4, 0x3a, 0xd8, 0xdb, 0xb7, 0x44, 0x59, - 0xf5, 0xf8, 0x80, 0xc5, 0x9a, 0x34, 0xf7, 0x0e, 0x36, 0x47, 0x85, 0x57, 0xfb, 0xc4, 0xb0, 0xba, - 0x90, 0x59, 0xd3, 0x67, 0xe9, 0x27, 0xe2, 0x70, 0x62, 0x20, 0xf9, 0x40, 0x43, 0x1f, 0x02, 0xd0, - 0x4d, 0xbb, 0xeb, 0xb1, 0xd2, 0x89, 0x65, 0xe2, 0x0c, 0x95, 0xd0, 0xe4, 0x45, 0xb2, 0x6c, 0xd7, - 0xf3, 0xdb, 0x13, 0xb4, 0x1d, 0x98, 0x88, 0x2a, 0xbc, 0x18, 0x18, 0x9a, 0xa4, 0x86, 0x2e, 0x0e, - 0xe9, 0x69, 0x5f, 0x60, 0x3e, 0x0b, 0x92, 0x66, 0xe8, 0xd8, 0xf4, 0x14, 0xd7, 0x73, 0xb0, 0xda, - 0xd1, 0xcd, 0x36, 0x5d, 0x6a, 0xd2, 0xa5, 0xc9, 0x3d, 0xd5, 0x70, 0xb1, 0x3c, 0xc3, 0x9a, 0x9b, - 0xa2, 0x95, 0x20, 0x68, 0x00, 0x39, 0x21, 0x44, 0x2a, 0x82, 0x60, 0xcd, 0x3e, 0xa2, 0xf8, 0xd3, - 0x19, 0xc8, 0x86, 0x0a, 0x70, 0xf4, 0x30, 0xe4, 0xde, 0x54, 0x6f, 0xaa, 0x8a, 0xd8, 0x54, 0x31, - 0x4f, 0x64, 0x89, 0xac, 0xc1, 0x37, 0x56, 0xcf, 0xc2, 0x3c, 0x55, 0xb1, 0xba, 0x1e, 0x76, 0x14, - 0xcd, 0x50, 0x5d, 0x97, 0x3a, 0x2d, 0x4d, 0x55, 0x11, 0x69, 0xdb, 0x22, 0x4d, 0x55, 0xd1, 0x82, - 0x2e, 0xc0, 0x1c, 0x45, 0x74, 0xba, 0x86, 0xa7, 0xdb, 0x06, 0x56, 0xc8, 0x36, 0xcf, 0xa5, 0x4b, - 0x8e, 0x6f, 0xd9, 0x2c, 0xd1, 0xd8, 0xe0, 0x0a, 0xc4, 0x22, 0x17, 0xd5, 0xe0, 0x21, 0x0a, 0x6b, - 0x63, 0x13, 0x3b, 0xaa, 0x87, 0x15, 0xfc, 0xe3, 0x5d, 0xd5, 0x70, 0x15, 0xd5, 0x6c, 0x29, 0xfb, - 0xaa, 0xbb, 0x5f, 0x98, 0x27, 0x04, 0x95, 0x78, 0x21, 0x26, 0x9f, 0x26, 0x8a, 0xab, 0x5c, 0xaf, - 0x4e, 0xd5, 0xca, 0x66, 0xeb, 0x65, 0xd5, 0xdd, 0x47, 0x25, 0x38, 0x49, 0x59, 0x5c, 0xcf, 0xd1, - 0xcd, 0xb6, 0xa2, 0xed, 0x63, 0xed, 0x40, 0xe9, 0x7a, 0x7b, 0x2f, 0x16, 0x1e, 0x08, 0xdf, 0x9f, - 0x5a, 0xd8, 0xa4, 0x3a, 0x55, 0xa2, 0xb2, 0xe3, 0xed, 0xbd, 0x88, 0x9a, 0x90, 0x23, 0x83, 0xd1, - 0xd1, 0xdf, 0xc2, 0xca, 0x9e, 0xe5, 0xd0, 0x35, 0x34, 0x3f, 0x20, 0x35, 0x85, 0x3c, 0xb8, 0xb2, - 0xc5, 0x01, 0x1b, 0x56, 0x0b, 0x97, 0x26, 0x9b, 0x8d, 0x7a, 0xbd, 0x26, 0x67, 0x05, 0xcb, 0x55, - 0xcb, 0x21, 0x01, 0xd5, 0xb6, 0x7c, 0x07, 0x67, 0x59, 0x40, 0xb5, 0x2d, 0xe1, 0xde, 0x0b, 0x30, - 0xa7, 0x69, 0xac, 0xcf, 0xba, 0xa6, 0xf0, 0xcd, 0x98, 0x5b, 0x90, 0x22, 0xce, 0xd2, 0xb4, 0x55, - 0xa6, 0xc0, 0x63, 0xdc, 0x45, 0x97, 0xe1, 0x44, 0xe0, 0xac, 0x30, 0x70, 0xb6, 0xaf, 0x97, 0xbd, - 0xd0, 0x0b, 0x30, 0x67, 0x1f, 0xf6, 0x03, 0x51, 0xe4, 0x8e, 0xf6, 0x61, 0x2f, 0xec, 0x12, 0xcc, - 0xdb, 0xfb, 0x76, 0x3f, 0xee, 0xc9, 0x30, 0x0e, 0xd9, 0xfb, 0x76, 0x2f, 0xf0, 0x31, 0xba, 0x33, - 0x77, 0xb0, 0xa6, 0x7a, 0xb8, 0x55, 0x38, 0x15, 0x56, 0x0f, 0x35, 0xa0, 0x15, 0x90, 0x34, 0x4d, - 0xc1, 0xa6, 0xba, 0x6b, 0x60, 0x45, 0x75, 0xb0, 0xa9, 0xba, 0x85, 0x25, 0xaa, 0x9c, 0xf4, 0x9c, - 0x2e, 0x96, 0xf3, 0x9a, 0x56, 0xa7, 0x8d, 0x65, 0xda, 0x86, 0x9e, 0x84, 0x59, 0x6b, 0xf7, 0x4d, - 0x8d, 0x45, 0xa4, 0x62, 0x3b, 0x78, 0x4f, 0xbf, 0x5d, 0x78, 0x94, 0xba, 0x77, 0x86, 0x34, 0xd0, - 0x78, 0x6c, 0x50, 0x31, 0x7a, 0x02, 0x24, 0xcd, 0xdd, 0x57, 0x1d, 0x9b, 0xa6, 0x64, 0xd7, 0x56, - 0x35, 0x5c, 0x78, 0x8c, 0xa9, 0x32, 0xf9, 0xa6, 0x10, 0x93, 0x19, 0xe1, 0xde, 0xd2, 0xf7, 0x3c, - 0xc1, 0x78, 0x86, 0xcd, 0x08, 0x2a, 0xe3, 0x6c, 0x67, 0x41, 0x22, 0x9e, 0x88, 0xdc, 0xf8, 0x2c, - 0x55, 0xcb, 0xdb, 0xfb, 0x76, 0xf8, 0xbe, 0x8f, 0xc0, 0x34, 0xd1, 0x0c, 0x6e, 0xfa, 0x04, 0x2b, - 0xdc, 0xec, 0xfd, 0xd0, 0x1d, 0x5f, 0x80, 0x93, 0x44, 0xa9, 0x83, 0x3d, 0xb5, 0xa5, 0x7a, 0x6a, - 0x48, 0xfb, 0x69, 0xaa, 0x4d, 0xdc, 0xbe, 0xc1, 0x1b, 0x23, 0x76, 0x3a, 0xdd, 0xdd, 0x43, 0x3f, - 0xb0, 0x9e, 0x61, 0x76, 0x12, 0x99, 0x08, 0xad, 0x0f, 0xad, 0x38, 0x2f, 0x96, 0x20, 0x17, 0x8e, - 0x7b, 0x94, 0x01, 0x16, 0xf9, 0x52, 0x8c, 0x14, 0x41, 0xd5, 0xad, 0x1a, 0x29, 0x5f, 0xde, 0xa8, - 0x4b, 0x71, 0x52, 0x46, 0xad, 0xaf, 0x6d, 0xd7, 0x15, 0x79, 0x67, 0x73, 0x7b, 0x6d, 0xa3, 0x2e, - 0x25, 0x42, 0x85, 0xfd, 0xb5, 0x64, 0xfa, 0x71, 0xe9, 0x0c, 0xa9, 0x1a, 0xf2, 0xd1, 0x9d, 0x1a, - 0xfa, 0x11, 0x38, 0x25, 0x8e, 0x55, 0x5c, 0xec, 0x29, 0xb7, 0x74, 0x87, 0x4e, 0xc8, 0x8e, 0xca, - 0x16, 0x47, 0x3f, 0x7e, 0xe6, 0xb9, 0x56, 0x13, 0x7b, 0xaf, 0xea, 0x0e, 0x99, 0x6e, 0x1d, 0xd5, - 0x43, 0xeb, 0xb0, 0x64, 0x5a, 0x8a, 0xeb, 0xa9, 0x66, 0x4b, 0x75, 0x5a, 0x4a, 0x70, 0xa0, 0xa5, - 0xa8, 0x9a, 0x86, 0x5d, 0xd7, 0x62, 0x0b, 0xa1, 0xcf, 0xf2, 0xa0, 0x69, 0x35, 0xb9, 0x72, 0xb0, - 0x42, 0x94, 0xb9, 0x6a, 0x4f, 0xf8, 0x26, 0x86, 0x85, 0xef, 0x03, 0x90, 0xe9, 0xa8, 0xb6, 0x82, - 0x4d, 0xcf, 0x39, 0xa4, 0xf5, 0x79, 0x5a, 0x4e, 0x77, 0x54, 0xbb, 0x4e, 0xae, 0x7f, 0x28, 0xdb, - 0xa4, 0x6b, 0xc9, 0x74, 0x52, 0x9a, 0xbc, 0x96, 0x4c, 0x4f, 0x4a, 0xa9, 0x6b, 0xc9, 0x74, 0x4a, - 0x9a, 0xba, 0x96, 0x4c, 0xa7, 0xa5, 0xcc, 0xb5, 0x64, 0x3a, 0x23, 0x41, 0xf1, 0xbd, 0x04, 0xe4, - 0xc2, 0x15, 0x3c, 0xd9, 0x10, 0x69, 0x74, 0x0d, 0x8b, 0xd1, 0x2c, 0xf7, 0xc8, 0x91, 0xf5, 0xfe, - 0x4a, 0x95, 0x2c, 0x6e, 0xa5, 0x14, 0x2b, 0x97, 0x65, 0x86, 0x24, 0x85, 0x05, 0x09, 0x3f, 0xcc, - 0xca, 0x93, 0xb4, 0xcc, 0xaf, 0xd0, 0x2a, 0xa4, 0xde, 0x74, 0x29, 0x77, 0x8a, 0x72, 0x3f, 0x7a, - 0x34, 0xf7, 0xb5, 0x26, 0x25, 0xcf, 0x5c, 0x6b, 0x2a, 0x9b, 0x5b, 0xf2, 0x46, 0x79, 0x5d, 0xe6, - 0x70, 0x74, 0x1a, 0x92, 0x86, 0xfa, 0xd6, 0x61, 0x74, 0x19, 0xa4, 0xa2, 0x71, 0x87, 0xe5, 0x34, - 0x24, 0x6f, 0x61, 0xf5, 0x20, 0xba, 0xf8, 0x50, 0xd1, 0x87, 0x38, 0x3d, 0xce, 0xc1, 0x24, 0xf5, - 0x17, 0x02, 0xe0, 0x1e, 0x93, 0x26, 0x50, 0x1a, 0x92, 0xd5, 0x2d, 0x99, 0x4c, 0x11, 0x09, 0x72, - 0x4c, 0xaa, 0x34, 0xd6, 0xea, 0xd5, 0xba, 0x14, 0x2f, 0x5e, 0x80, 0x14, 0x73, 0x02, 0x99, 0x3e, - 0xbe, 0x1b, 0xa4, 0x09, 0x7e, 0xc9, 0x39, 0x62, 0xa2, 0x75, 0x67, 0xa3, 0x52, 0x97, 0xa5, 0x78, - 0xdf, 0xe0, 0x17, 0x5d, 0xc8, 0x85, 0x2b, 0xf3, 0x1f, 0xce, 0xf6, 0xfc, 0x6b, 0x31, 0xc8, 0x86, - 0x2a, 0x6d, 0x52, 0x22, 0xa9, 0x86, 0x61, 0xdd, 0x52, 0x54, 0x43, 0x57, 0x5d, 0x1e, 0x1a, 0x40, - 0x45, 0x65, 0x22, 0x19, 0x77, 0xe8, 0x7e, 0x48, 0x93, 0x66, 0x52, 0x4a, 0x15, 0x3f, 0x1b, 0x03, - 0xa9, 0xb7, 0xd4, 0xed, 0x31, 0x33, 0xf6, 0x07, 0x69, 0x66, 0xf1, 0x33, 0x31, 0xc8, 0x47, 0xeb, - 0xdb, 0x1e, 0xf3, 0x1e, 0xfe, 0x03, 0x35, 0xef, 0x77, 0xe3, 0x30, 0x1d, 0xa9, 0x6a, 0xc7, 0xb5, - 0xee, 0xc7, 0x61, 0x56, 0x6f, 0xe1, 0x8e, 0x6d, 0x79, 0xd8, 0xd4, 0x0e, 0x15, 0x03, 0xdf, 0xc4, - 0x46, 0xa1, 0x48, 0x93, 0xc6, 0xb9, 0xa3, 0xeb, 0xe6, 0x95, 0xb5, 0x00, 0xb7, 0x4e, 0x60, 0xa5, - 0xb9, 0xb5, 0x5a, 0x7d, 0xa3, 0xb1, 0xb5, 0x5d, 0xdf, 0xac, 0xbe, 0xae, 0xec, 0x6c, 0x5e, 0xdf, - 0xdc, 0x7a, 0x75, 0x53, 0x96, 0xf4, 0x1e, 0xb5, 0x0f, 0x71, 0xda, 0x37, 0x40, 0xea, 0x35, 0x0a, - 0x9d, 0x82, 0x41, 0x66, 0x49, 0x13, 0x68, 0x0e, 0x66, 0x36, 0xb7, 0x94, 0xe6, 0x5a, 0xad, 0xae, - 0xd4, 0xaf, 0x5e, 0xad, 0x57, 0xb7, 0x9b, 0xec, 0x24, 0xc4, 0xd7, 0xde, 0x8e, 0x4c, 0xf0, 0xe2, - 0xa7, 0x13, 0x30, 0x37, 0xc0, 0x12, 0x54, 0xe6, 0x7b, 0x18, 0xb6, 0xad, 0x7a, 0x66, 0x1c, 0xeb, - 0x57, 0x48, 0x15, 0xd1, 0x50, 0x1d, 0x8f, 0x6f, 0x79, 0x9e, 0x00, 0xe2, 0x25, 0xd3, 0xd3, 0xf7, - 0x74, 0xec, 0xf0, 0x13, 0x26, 0xb6, 0xb1, 0x99, 0x09, 0xe4, 0xec, 0x90, 0xe9, 0x69, 0x40, 0xb6, - 0xe5, 0xea, 0x9e, 0x7e, 0x13, 0x2b, 0xba, 0x29, 0x8e, 0xa3, 0xc8, 0x46, 0x27, 0x29, 0x4b, 0xa2, - 0x65, 0xcd, 0xf4, 0x7c, 0x6d, 0x13, 0xb7, 0xd5, 0x1e, 0x6d, 0x92, 0xcc, 0x13, 0xb2, 0x24, 0x5a, - 0x7c, 0xed, 0x87, 0x21, 0xd7, 0xb2, 0xba, 0xa4, 0xfa, 0x63, 0x7a, 0x64, 0xed, 0x88, 0xc9, 0x59, - 0x26, 0xf3, 0x55, 0x78, 0x5d, 0x1f, 0x9c, 0x83, 0xe5, 0xe4, 0x2c, 0x93, 0x31, 0x95, 0x33, 0x30, - 0xa3, 0xb6, 0xdb, 0x0e, 0x21, 0x17, 0x44, 0x6c, 0xa7, 0x92, 0xf7, 0xc5, 0x54, 0x71, 0xe1, 0x1a, - 0xa4, 0x85, 0x1f, 0xc8, 0xe2, 0x4d, 0x3c, 0xa1, 0xd8, 0x6c, 0xfb, 0x1d, 0x3f, 0x9b, 0x91, 0xd3, - 0xa6, 0x68, 0x7c, 0x18, 0x72, 0xba, 0xab, 0x04, 0xc7, 0xfa, 0xf1, 0xe5, 0xf8, 0xd9, 0xb4, 0x9c, - 0xd5, 0x5d, 0xff, 0x48, 0xb4, 0xf8, 0x85, 0x38, 0xe4, 0xa3, 0x8f, 0x25, 0x50, 0x0d, 0xd2, 0x86, - 0xa5, 0xa9, 0x34, 0xb4, 0xd8, 0x33, 0xb1, 0xb3, 0x23, 0x9e, 0x64, 0xac, 0xac, 0x73, 0x7d, 0xd9, - 0x47, 0x2e, 0xfc, 0xcb, 0x18, 0xa4, 0x85, 0x18, 0x9d, 0x84, 0xa4, 0xad, 0x7a, 0xfb, 0x94, 0x6e, - 0xb2, 0x12, 0x97, 0x62, 0x32, 0xbd, 0x26, 0x72, 0xd7, 0x56, 0x4d, 0x1a, 0x02, 0x5c, 0x4e, 0xae, - 0xc9, 0xb8, 0x1a, 0x58, 0x6d, 0xd1, 0x6d, 0x90, 0xd5, 0xe9, 0x60, 0xd3, 0x73, 0xc5, 0xb8, 0x72, - 0x79, 0x95, 0x8b, 0xd1, 0x53, 0x30, 0xeb, 0x39, 0xaa, 0x6e, 0x44, 0x74, 0x93, 0x54, 0x57, 0x12, - 0x0d, 0xbe, 0x72, 0x09, 0x4e, 0x0b, 0xde, 0x16, 0xf6, 0x54, 0x6d, 0x1f, 0xb7, 0x02, 0x50, 0x8a, - 0x1e, 0x77, 0x9c, 0xe2, 0x0a, 0x35, 0xde, 0x2e, 0xb0, 0xc5, 0xdf, 0x88, 0xc1, 0xac, 0xd8, 0xb8, - 0xb5, 0x7c, 0x67, 0x6d, 0x00, 0xa8, 0xa6, 0x69, 0x79, 0x61, 0x77, 0xf5, 0x87, 0x72, 0x1f, 0x6e, - 0xa5, 0xec, 0x83, 0xe4, 0x10, 0xc1, 0x42, 0x07, 0x20, 0x68, 0x19, 0xea, 0xb6, 0x25, 0xc8, 0xf2, - 0x67, 0x4e, 0xf4, 0xc1, 0x25, 0xdb, 0xea, 0x03, 0x13, 0x91, 0x1d, 0x1e, 0x9a, 0x87, 0xc9, 0x5d, - 0xdc, 0xd6, 0x4d, 0x7e, 0x92, 0xcc, 0x2e, 0xc4, 0x81, 0x4c, 0xd2, 0x3f, 0x90, 0xa9, 0xfc, 0x09, - 0x98, 0xd3, 0xac, 0x4e, 0xaf, 0xb9, 0x15, 0xa9, 0xe7, 0xb8, 0xc1, 0x7d, 0x39, 0xf6, 0xc6, 0x33, - 0x5c, 0xa9, 0x6d, 0x19, 0xaa, 0xd9, 0x5e, 0xb1, 0x9c, 0x76, 0xf0, 0xe0, 0x95, 0x54, 0x3c, 0x6e, - 0xe8, 0xf1, 0xab, 0xbd, 0xfb, 0xbf, 0x62, 0xb1, 0x5f, 0x88, 0x27, 0x56, 0x1b, 0x95, 0x2f, 0xc6, - 0x17, 0x56, 0x19, 0xb0, 0x21, 0x9c, 0x21, 0xe3, 0x3d, 0x03, 0x6b, 0xa4, 0x83, 0xf0, 0x9d, 0xa7, - 0x60, 0xbe, 0x6d, 0xb5, 0x2d, 0xca, 0x74, 0x8e, 0xfc, 0xe2, 0x4f, 0x6e, 0x33, 0xbe, 0x74, 0x61, - 0xe4, 0x63, 0xde, 0xd2, 0x26, 0xcc, 0x71, 0x65, 0x85, 0x3e, 0x3a, 0x62, 0x1b, 0x1b, 0x74, 0xe4, - 0xa9, 0x5a, 0xe1, 0x97, 0xbf, 0x4d, 0x97, 0x6f, 0x79, 0x96, 0x43, 0x49, 0x1b, 0xdb, 0xfb, 0x94, - 0x64, 0x38, 0x11, 0xe1, 0x63, 0x93, 0x14, 0x3b, 0x23, 0x18, 0xff, 0x19, 0x67, 0x9c, 0x0b, 0x31, - 0x36, 0x39, 0xb4, 0x54, 0x85, 0xe9, 0xe3, 0x70, 0xfd, 0x73, 0xce, 0x95, 0xc3, 0x61, 0x92, 0x55, - 0x98, 0xa1, 0x24, 0x5a, 0xd7, 0xf5, 0xac, 0x0e, 0xcd, 0x80, 0x47, 0xd3, 0xfc, 0x8b, 0x6f, 0xb3, - 0x59, 0x93, 0x27, 0xb0, 0xaa, 0x8f, 0x2a, 0x95, 0x80, 0x3e, 0x2d, 0x6b, 0x61, 0xcd, 0x18, 0xc1, - 0xf0, 0x75, 0x6e, 0x88, 0xaf, 0x5f, 0xba, 0x01, 0xf3, 0xe4, 0x37, 0x4d, 0x50, 0x61, 0x4b, 0x46, - 0x1f, 0xc1, 0x15, 0x7e, 0xe3, 0x63, 0x6c, 0x62, 0xce, 0xf9, 0x04, 0x21, 0x9b, 0x42, 0xa3, 0xd8, - 0xc6, 0x9e, 0x87, 0x1d, 0x57, 0x51, 0x8d, 0x41, 0xe6, 0x85, 0xce, 0x30, 0x0a, 0x3f, 0xf7, 0xdd, - 0xe8, 0x28, 0xae, 0x32, 0x64, 0xd9, 0x30, 0x4a, 0x3b, 0x70, 0x6a, 0x40, 0x54, 0x8c, 0xc1, 0xf9, - 0x69, 0xce, 0x39, 0xdf, 0x17, 0x19, 0x84, 0xb6, 0x01, 0x42, 0xee, 0x8f, 0xe5, 0x18, 0x9c, 0x3f, - 0xcf, 0x39, 0x11, 0xc7, 0x8a, 0x21, 0x25, 0x8c, 0xd7, 0x60, 0xf6, 0x26, 0x76, 0x76, 0x2d, 0x97, - 0x9f, 0x1b, 0x8d, 0x41, 0xf7, 0x19, 0x4e, 0x37, 0xc3, 0x81, 0xf4, 0x20, 0x89, 0x70, 0x5d, 0x86, - 0xf4, 0x9e, 0xaa, 0xe1, 0x31, 0x28, 0xee, 0x72, 0x8a, 0x29, 0xa2, 0x4f, 0xa0, 0x65, 0xc8, 0xb5, - 0x2d, 0xbe, 0x46, 0x8d, 0x86, 0x7f, 0x96, 0xc3, 0xb3, 0x02, 0xc3, 0x29, 0x6c, 0xcb, 0xee, 0x1a, - 0x64, 0x01, 0x1b, 0x4d, 0xf1, 0x97, 0x05, 0x85, 0xc0, 0x70, 0x8a, 0x63, 0xb8, 0xf5, 0x1d, 0x41, - 0xe1, 0x86, 0xfc, 0xf9, 0x12, 0x64, 0x2d, 0xd3, 0x38, 0xb4, 0xcc, 0x71, 0x8c, 0xf8, 0x1c, 0x67, - 0x00, 0x0e, 0x21, 0x04, 0x57, 0x20, 0x33, 0xee, 0x40, 0xfc, 0x95, 0xef, 0x8a, 0xe9, 0x21, 0x46, - 0x60, 0x15, 0x66, 0x44, 0x82, 0xd2, 0x2d, 0x73, 0x0c, 0x8a, 0xbf, 0xca, 0x29, 0xf2, 0x21, 0x18, - 0xef, 0x86, 0x87, 0x5d, 0xaf, 0x8d, 0xc7, 0x21, 0xf9, 0x82, 0xe8, 0x06, 0x87, 0x70, 0x57, 0xee, - 0x62, 0x53, 0xdb, 0x1f, 0x8f, 0xe1, 0x97, 0x84, 0x2b, 0x05, 0x86, 0x50, 0x54, 0x61, 0xba, 0xa3, - 0x3a, 0xee, 0xbe, 0x6a, 0x8c, 0x35, 0x1c, 0x7f, 0x8d, 0x73, 0xe4, 0x7c, 0x10, 0xf7, 0x48, 0xd7, - 0x3c, 0x0e, 0xcd, 0x17, 0x85, 0x47, 0x42, 0x30, 0x3e, 0xf5, 0x5c, 0x8f, 0x1e, 0xb2, 0x1d, 0x87, - 0xed, 0xaf, 0x8b, 0xa9, 0xc7, 0xb0, 0x1b, 0x61, 0xc6, 0x2b, 0x90, 0x71, 0xf5, 0xb7, 0xc6, 0xa2, - 0xf9, 0x92, 0x18, 0x69, 0x0a, 0x20, 0xe0, 0xd7, 0xe1, 0xf4, 0xc0, 0x65, 0x62, 0x0c, 0xb2, 0xbf, - 0xc1, 0xc9, 0x4e, 0x0e, 0x58, 0x2a, 0x78, 0x4a, 0x38, 0x2e, 0xe5, 0xdf, 0x14, 0x29, 0x01, 0xf7, - 0x70, 0x35, 0xc8, 0xae, 0xc1, 0x55, 0xf7, 0x8e, 0xe7, 0xb5, 0xbf, 0x25, 0xbc, 0xc6, 0xb0, 0x11, - 0xaf, 0x6d, 0xc3, 0x49, 0xce, 0x78, 0xbc, 0x71, 0xfd, 0xdb, 0x22, 0xb1, 0x32, 0xf4, 0x4e, 0x74, - 0x74, 0x7f, 0x14, 0x16, 0x7c, 0x77, 0x8a, 0xf2, 0xd4, 0x55, 0x3a, 0xaa, 0x3d, 0x06, 0xf3, 0x2f, - 0x73, 0x66, 0x91, 0xf1, 0xfd, 0xfa, 0xd6, 0xdd, 0x50, 0x6d, 0x42, 0xfe, 0x1a, 0x14, 0x04, 0x79, - 0xd7, 0x74, 0xb0, 0x66, 0xb5, 0x4d, 0xfd, 0x2d, 0xdc, 0x1a, 0x83, 0xfa, 0x57, 0x7a, 0x86, 0x6a, - 0x27, 0x04, 0x27, 0xcc, 0x6b, 0x20, 0xf9, 0xb5, 0x8a, 0xa2, 0x77, 0x6c, 0xcb, 0xf1, 0x46, 0x30, - 0x7e, 0x59, 0x8c, 0x94, 0x8f, 0x5b, 0xa3, 0xb0, 0x52, 0x1d, 0xd8, 0x93, 0xe7, 0x71, 0x43, 0xf2, - 0x2b, 0x9c, 0x68, 0x3a, 0x40, 0xf1, 0xc4, 0xa1, 0x59, 0x1d, 0x5b, 0x75, 0xc6, 0xc9, 0x7f, 0x7f, - 0x47, 0x24, 0x0e, 0x0e, 0xe1, 0x89, 0x83, 0x54, 0x74, 0x64, 0xb5, 0x1f, 0x83, 0xe1, 0xab, 0x22, - 0x71, 0x08, 0x0c, 0xa7, 0x10, 0x05, 0xc3, 0x18, 0x14, 0x7f, 0x57, 0x50, 0x08, 0x0c, 0xa1, 0x78, - 0x25, 0x58, 0x68, 0x1d, 0xdc, 0xd6, 0x5d, 0xcf, 0x61, 0x45, 0xf1, 0xd1, 0x54, 0x7f, 0xef, 0xbb, - 0xd1, 0x22, 0x4c, 0x0e, 0x41, 0x49, 0x26, 0xe2, 0xc7, 0xae, 0x74, 0xcf, 0x34, 0xda, 0xb0, 0x5f, - 0x15, 0x99, 0x28, 0x04, 0x23, 0xb6, 0x85, 0x2a, 0x44, 0xe2, 0x76, 0x8d, 0xec, 0x14, 0xc6, 0xa0, - 0xfb, 0xfb, 0x3d, 0xc6, 0x35, 0x05, 0x96, 0x70, 0x86, 0xea, 0x9f, 0xae, 0x79, 0x80, 0x0f, 0xc7, - 0x8a, 0xce, 0x5f, 0xeb, 0xa9, 0x7f, 0x76, 0x18, 0x92, 0xe5, 0x90, 0x99, 0x9e, 0x7a, 0x0a, 0x8d, - 0x7a, 0xcf, 0xa8, 0xf0, 0x93, 0x1f, 0xf0, 0xfe, 0x46, 0xcb, 0xa9, 0xd2, 0x3a, 0x09, 0xf2, 0x68, - 0xd1, 0x33, 0x9a, 0xec, 0x63, 0x1f, 0xf8, 0x71, 0x1e, 0xa9, 0x79, 0x4a, 0x57, 0x61, 0x3a, 0x52, - 0xf0, 0x8c, 0xa6, 0xfa, 0x93, 0x9c, 0x2a, 0x17, 0xae, 0x77, 0x4a, 0x17, 0x20, 0x49, 0x8a, 0x97, - 0xd1, 0xf0, 0x3f, 0xc5, 0xe1, 0x54, 0xbd, 0xf4, 0x11, 0x48, 0x8b, 0xa2, 0x65, 0x34, 0xf4, 0x4f, - 0x73, 0xa8, 0x0f, 0x21, 0x70, 0x51, 0xb0, 0x8c, 0x86, 0xff, 0x19, 0x01, 0x17, 0x10, 0x02, 0x1f, - 0xdf, 0x85, 0x5f, 0xfb, 0xb3, 0x49, 0xbe, 0xe8, 0x08, 0xdf, 0x5d, 0x81, 0x29, 0x5e, 0xa9, 0x8c, - 0x46, 0x7f, 0x82, 0xdf, 0x5c, 0x20, 0x4a, 0x97, 0x60, 0x72, 0x4c, 0x87, 0xff, 0x39, 0x0e, 0x65, - 0xfa, 0xa5, 0x2a, 0x64, 0x43, 0xd5, 0xc9, 0x68, 0xf8, 0x4f, 0x71, 0x78, 0x18, 0x45, 0x4c, 0xe7, - 0xd5, 0xc9, 0x68, 0x82, 0x3f, 0x2f, 0x4c, 0xe7, 0x08, 0xe2, 0x36, 0x51, 0x98, 0x8c, 0x46, 0x7f, - 0x52, 0x78, 0x5d, 0x40, 0x4a, 0x2f, 0x41, 0xc6, 0x5f, 0x6c, 0x46, 0xe3, 0x7f, 0x9a, 0xe3, 0x03, - 0x0c, 0xf1, 0x40, 0x68, 0xb1, 0x1b, 0x4d, 0xf1, 0x17, 0x84, 0x07, 0x42, 0x28, 0x32, 0x8d, 0x7a, - 0x0b, 0x98, 0xd1, 0x4c, 0x3f, 0x23, 0xa6, 0x51, 0x4f, 0xfd, 0x42, 0x46, 0x93, 0xe6, 0xfc, 0xd1, - 0x14, 0x7f, 0x51, 0x8c, 0x26, 0xd5, 0x27, 0x66, 0xf4, 0x56, 0x04, 0xa3, 0x39, 0x7e, 0x56, 0x98, - 0xd1, 0x53, 0x10, 0x94, 0x1a, 0x80, 0xfa, 0xab, 0x81, 0xd1, 0x7c, 0x9f, 0xe2, 0x7c, 0xb3, 0x7d, - 0xc5, 0x40, 0xe9, 0x55, 0x38, 0x39, 0xb8, 0x12, 0x18, 0xcd, 0xfa, 0x73, 0x1f, 0xf4, 0xec, 0xdd, - 0xc2, 0x85, 0x40, 0x69, 0x3b, 0x58, 0x52, 0xc2, 0x55, 0xc0, 0x68, 0xda, 0x4f, 0x7f, 0x10, 0x4d, - 0xdc, 0xe1, 0x22, 0xa0, 0x54, 0x06, 0x08, 0x16, 0xe0, 0xd1, 0x5c, 0x9f, 0xe1, 0x5c, 0x21, 0x10, - 0x99, 0x1a, 0x7c, 0xfd, 0x1d, 0x8d, 0xbf, 0x2b, 0xa6, 0x06, 0x47, 0x90, 0xa9, 0x21, 0x96, 0xde, - 0xd1, 0xe8, 0xcf, 0x8a, 0xa9, 0x21, 0x20, 0x24, 0xb2, 0x43, 0xab, 0xdb, 0x68, 0x86, 0xcf, 0x89, - 0xc8, 0x0e, 0xa1, 0x4a, 0x9b, 0x30, 0xdb, 0xb7, 0x20, 0x8e, 0xa6, 0xfa, 0x05, 0x4e, 0x25, 0xf5, - 0xae, 0x87, 0xe1, 0xc5, 0x8b, 0x2f, 0x86, 0xa3, 0xd9, 0x3e, 0xdf, 0xb3, 0x78, 0xf1, 0xb5, 0xb0, - 0x74, 0x05, 0xd2, 0x66, 0xd7, 0x30, 0xc8, 0xe4, 0x41, 0x47, 0xbf, 0x1b, 0x58, 0xf8, 0xcf, 0xdf, - 0xe7, 0xde, 0x11, 0x80, 0xd2, 0x05, 0x98, 0xc4, 0x9d, 0x5d, 0xdc, 0x1a, 0x85, 0xfc, 0xce, 0xf7, - 0x45, 0xc2, 0x24, 0xda, 0xa5, 0x97, 0x00, 0xd8, 0xd1, 0x08, 0x7d, 0x18, 0x38, 0x02, 0xfb, 0x5f, - 0xbe, 0xcf, 0x5f, 0xc6, 0x09, 0x20, 0x01, 0x01, 0x7b, 0xb5, 0xe7, 0x68, 0x82, 0xef, 0x46, 0x09, - 0xe8, 0x88, 0x5c, 0x86, 0xa9, 0x37, 0x5d, 0xcb, 0xf4, 0xd4, 0xf6, 0x28, 0xf4, 0x7f, 0xe5, 0x68, - 0xa1, 0x4f, 0x1c, 0xd6, 0xb1, 0x1c, 0xec, 0xa9, 0x6d, 0x77, 0x14, 0xf6, 0xbf, 0x71, 0xac, 0x0f, - 0x20, 0x60, 0x4d, 0x75, 0xbd, 0x71, 0xfa, 0xfd, 0x7b, 0x02, 0x2c, 0x00, 0xc4, 0x68, 0xf2, 0xfb, - 0x00, 0x1f, 0x8e, 0xc2, 0xfe, 0xbe, 0x30, 0x9a, 0xeb, 0x97, 0x3e, 0x02, 0x19, 0xf2, 0x93, 0xbd, - 0x61, 0x37, 0x02, 0xfc, 0xdf, 0x39, 0x38, 0x40, 0x90, 0x3b, 0xbb, 0x5e, 0xcb, 0xd3, 0x47, 0x3b, - 0xfb, 0x7b, 0x7c, 0xa4, 0x85, 0x7e, 0xa9, 0x0c, 0x59, 0xd7, 0x6b, 0xb5, 0xba, 0xbc, 0x3e, 0x1d, - 0x01, 0xff, 0x1f, 0xdf, 0xf7, 0x8f, 0x2c, 0x7c, 0x0c, 0x19, 0xed, 0x5b, 0x07, 0x9e, 0x6d, 0xd1, - 0x07, 0x1e, 0xa3, 0x18, 0x3e, 0xe0, 0x0c, 0x21, 0x48, 0xa9, 0x0a, 0x39, 0xd2, 0x17, 0x07, 0xdb, - 0x98, 0x3e, 0x9d, 0x1a, 0x41, 0xf1, 0x3f, 0xb9, 0x03, 0x22, 0xa0, 0xca, 0x8f, 0x7d, 0xfd, 0xbd, - 0xc5, 0xd8, 0x37, 0xdf, 0x5b, 0x8c, 0xfd, 0xee, 0x7b, 0x8b, 0xb1, 0x4f, 0x7e, 0x6b, 0x71, 0xe2, - 0x9b, 0xdf, 0x5a, 0x9c, 0xf8, 0xed, 0x6f, 0x2d, 0x4e, 0x0c, 0x3e, 0x25, 0x86, 0x55, 0x6b, 0xd5, - 0x62, 0xe7, 0xc3, 0x6f, 0x14, 0xdb, 0xba, 0xb7, 0xdf, 0xdd, 0x5d, 0xd1, 0xac, 0x0e, 0x3d, 0xc6, - 0x0d, 0x4e, 0x6b, 0xfd, 0x4d, 0x0e, 0xfc, 0x20, 0x46, 0x36, 0xcc, 0xd1, 0xb3, 0x5c, 0xd5, 0x3c, - 0x1c, 0xf6, 0xad, 0xce, 0x45, 0x48, 0x94, 0xcd, 0x43, 0x74, 0x9a, 0x65, 0x37, 0xa5, 0xeb, 0x18, - 0xfc, 0x1d, 0xaf, 0x29, 0x72, 0xbd, 0xe3, 0x18, 0x68, 0x3e, 0x78, 0x11, 0x33, 0x76, 0x36, 0xc7, - 0xdf, 0xae, 0xac, 0xfc, 0x54, 0xec, 0x78, 0xdd, 0x48, 0x97, 0xcd, 0x43, 0xda, 0x8b, 0x46, 0xec, - 0x8d, 0xa7, 0x47, 0x1e, 0x72, 0x1f, 0x98, 0xd6, 0x2d, 0x93, 0x98, 0x6d, 0xef, 0x8a, 0x03, 0xee, - 0xc5, 0xde, 0x03, 0xee, 0x57, 0xb1, 0x61, 0x5c, 0x27, 0x7a, 0xdb, 0x04, 0xb2, 0x9b, 0x62, 0xaf, - 0x13, 0xc3, 0xcf, 0xc4, 0x61, 0xb1, 0xef, 0x2c, 0x9b, 0x47, 0xc0, 0x30, 0x27, 0x94, 0x20, 0x5d, - 0x13, 0x81, 0x55, 0x80, 0x29, 0x17, 0x6b, 0x96, 0xd9, 0x72, 0xa9, 0x23, 0x12, 0xb2, 0xb8, 0x24, - 0x8e, 0x30, 0x55, 0xd3, 0x72, 0xf9, 0x5b, 0x92, 0xec, 0xa2, 0xf2, 0xf3, 0xc7, 0x74, 0xc4, 0xb4, - 0xb8, 0x93, 0xf0, 0xc6, 0x73, 0x63, 0x7a, 0x43, 0x74, 0x22, 0x72, 0xec, 0x3f, 0xae, 0x57, 0x7e, - 0x36, 0x0e, 0x4b, 0xbd, 0x5e, 0x21, 0xd3, 0xca, 0xf5, 0xd4, 0x8e, 0x3d, 0xcc, 0x2d, 0x57, 0x20, - 0xb3, 0x2d, 0x74, 0x8e, 0xed, 0x97, 0xbb, 0xc7, 0xf4, 0x4b, 0xde, 0xbf, 0x95, 0x70, 0xcc, 0xf9, - 0x31, 0x1d, 0xe3, 0xf7, 0xe3, 0x9e, 0x3c, 0xf3, 0xbf, 0x53, 0x70, 0x5a, 0xb3, 0xdc, 0x8e, 0xe5, - 0x2a, 0xec, 0xf9, 0x08, 0xbb, 0xe0, 0x3e, 0xc9, 0x85, 0x9b, 0x46, 0x3f, 0x24, 0x29, 0x5e, 0x87, - 0xb9, 0x35, 0x92, 0x2a, 0xc8, 0x16, 0x28, 0x78, 0xbc, 0x33, 0xf0, 0x45, 0xd2, 0xe5, 0x48, 0xb5, - 0xcf, 0x1f, 0x2f, 0x85, 0x45, 0xc5, 0x9f, 0x8c, 0x81, 0xd4, 0xd4, 0x54, 0x43, 0x75, 0xfe, 0x5f, - 0xa9, 0xd0, 0x25, 0x00, 0xfa, 0x01, 0x52, 0xf0, 0xc5, 0x50, 0xfe, 0x7c, 0x61, 0x25, 0xdc, 0xb9, - 0x15, 0x76, 0x27, 0xfa, 0x39, 0x42, 0x86, 0xea, 0x92, 0x9f, 0x4f, 0xbe, 0x06, 0x10, 0x34, 0xa0, - 0x07, 0xe0, 0x54, 0xb3, 0x5a, 0x5e, 0x2f, 0xcb, 0x0a, 0x7b, 0xb3, 0x7d, 0xb3, 0xd9, 0xa8, 0x57, + // 7622 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0x6b, 0x70, 0x24, 0xd7, + 0x75, 0x1e, 0xe6, 0x81, 0xc1, 0xcc, 0x99, 0xc1, 0x4c, 0xe3, 0x02, 0xbb, 0x3b, 0x0b, 0x92, 0x00, + 0x38, 0x7c, 0xec, 0xf2, 0x85, 0x25, 0x97, 0xdc, 0x5d, 0xee, 0xac, 0x25, 0x06, 0xf3, 0x58, 0x10, + 0x4b, 0x3c, 0x86, 0x3d, 0xc0, 0x72, 0x49, 0xc7, 0xe9, 0x6a, 0xf4, 0x5c, 0x0c, 0x9a, 0xe8, 0xe9, + 0x6e, 0x77, 0xf7, 0xec, 0x2e, 0x58, 0x4e, 0x8a, 0x2e, 0xe5, 0x21, 0x6d, 0x2a, 0x8e, 0x1c, 0xa7, + 0x62, 0x59, 0xd6, 0x2a, 0x94, 0xe5, 0x44, 0x8e, 0xa2, 0x3c, 0x6c, 0x29, 0xb2, 0x1d, 0x57, 0x12, + 0x25, 0xa9, 0x24, 0xb2, 0x7e, 0xa4, 0x64, 0xff, 0x88, 0xed, 0x3c, 0x18, 0x87, 0x52, 0x25, 0x8a, + 0xa2, 0xc4, 0x8e, 0xc3, 0x54, 0x25, 0xa5, 0x52, 0x2a, 0x75, 0x5f, 0xfd, 0x98, 0x07, 0x66, 0xb0, + 0x5e, 0xca, 0xae, 0xd2, 0x2f, 0xa0, 0xcf, 0x3d, 0xdf, 0xd7, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0xe7, + 0xde, 0xee, 0x1e, 0xf8, 0xe7, 0x57, 0x60, 0xa9, 0x6d, 0x59, 0x6d, 0x03, 0x9f, 0xb3, 0x1d, 0xcb, + 0xb3, 0x76, 0xbb, 0x7b, 0xe7, 0x5a, 0xd8, 0xd5, 0x1c, 0xdd, 0xf6, 0x2c, 0x67, 0x99, 0xca, 0x50, + 0x81, 0x69, 0x2c, 0x0b, 0x8d, 0xd2, 0x06, 0xcc, 0x5c, 0xd5, 0x0d, 0x5c, 0xf3, 0x15, 0x9b, 0xd8, + 0x43, 0x2f, 0x42, 0x72, 0x4f, 0x37, 0x70, 0x31, 0xb6, 0x94, 0x38, 0x9b, 0x3d, 0xff, 0xe8, 0x72, + 0x0f, 0x68, 0x39, 0x8a, 0x68, 0x10, 0xb1, 0x4c, 0x11, 0xa5, 0x6f, 0x26, 0x61, 0x76, 0x40, 0x2b, + 0x42, 0x90, 0x34, 0xd5, 0x0e, 0x61, 0x8c, 0x9d, 0xcd, 0xc8, 0xf4, 0x7f, 0x54, 0x84, 0x29, 0x5b, + 0xd5, 0x0e, 0xd4, 0x36, 0x2e, 0xc6, 0xa9, 0x58, 0x5c, 0xa2, 0x05, 0x80, 0x16, 0xb6, 0xb1, 0xd9, + 0xc2, 0xa6, 0x76, 0x58, 0x4c, 0x2c, 0x25, 0xce, 0x66, 0xe4, 0x90, 0x04, 0x3d, 0x05, 0x33, 0x76, + 0x77, 0xd7, 0xd0, 0x35, 0x25, 0xa4, 0x06, 0x4b, 0x89, 0xb3, 0x93, 0xb2, 0xc4, 0x1a, 0x6a, 0x81, + 0xf2, 0x19, 0x28, 0xdc, 0xc2, 0xea, 0x41, 0x58, 0x35, 0x4b, 0x55, 0xf3, 0x44, 0x1c, 0x52, 0xac, + 0x42, 0xae, 0x83, 0x5d, 0x57, 0x6d, 0x63, 0xc5, 0x3b, 0xb4, 0x71, 0x31, 0x49, 0x7b, 0xbf, 0xd4, + 0xd7, 0xfb, 0xde, 0x9e, 0x67, 0x39, 0x6a, 0xfb, 0xd0, 0xc6, 0x68, 0x05, 0x32, 0xd8, 0xec, 0x76, + 0x18, 0xc3, 0xe4, 0x10, 0xff, 0xd5, 0xcd, 0x6e, 0xa7, 0x97, 0x25, 0x4d, 0x60, 0x9c, 0x62, 0xca, + 0xc5, 0xce, 0x4d, 0x5d, 0xc3, 0xc5, 0x14, 0x25, 0x38, 0xd3, 0x47, 0xd0, 0x64, 0xed, 0xbd, 0x1c, + 0x02, 0x87, 0xaa, 0x90, 0xc1, 0xb7, 0x3d, 0x6c, 0xba, 0xba, 0x65, 0x16, 0xa7, 0x28, 0xc9, 0x63, + 0x03, 0x46, 0x11, 0x1b, 0xad, 0x5e, 0x8a, 0x00, 0x87, 0x2e, 0xc2, 0x94, 0x65, 0x7b, 0xba, 0x65, + 0xba, 0xc5, 0xf4, 0x52, 0xec, 0x6c, 0xf6, 0xfc, 0x83, 0x03, 0x03, 0x61, 0x8b, 0xe9, 0xc8, 0x42, + 0x19, 0xad, 0x81, 0xe4, 0x5a, 0x5d, 0x47, 0xc3, 0x8a, 0x66, 0xb5, 0xb0, 0xa2, 0x9b, 0x7b, 0x56, + 0x31, 0x43, 0x09, 0x16, 0xfb, 0x3b, 0x42, 0x15, 0xab, 0x56, 0x0b, 0xaf, 0x99, 0x7b, 0x96, 0x9c, + 0x77, 0x23, 0xd7, 0xe8, 0x24, 0xa4, 0xdc, 0x43, 0xd3, 0x53, 0x6f, 0x17, 0x73, 0x34, 0x42, 0xf8, + 0x55, 0xe9, 0x57, 0x53, 0x50, 0x18, 0x27, 0xc4, 0xae, 0xc0, 0xe4, 0x1e, 0xe9, 0x65, 0x31, 0x7e, + 0x1c, 0x1f, 0x30, 0x4c, 0xd4, 0x89, 0xa9, 0x7b, 0x74, 0xe2, 0x0a, 0x64, 0x4d, 0xec, 0x7a, 0xb8, + 0xc5, 0x22, 0x22, 0x31, 0x66, 0x4c, 0x01, 0x03, 0xf5, 0x87, 0x54, 0xf2, 0x9e, 0x42, 0xea, 0x06, + 0x14, 0x7c, 0x93, 0x14, 0x47, 0x35, 0xdb, 0x22, 0x36, 0xcf, 0x8d, 0xb2, 0x64, 0xb9, 0x2e, 0x70, + 0x32, 0x81, 0xc9, 0x79, 0x1c, 0xb9, 0x46, 0x35, 0x00, 0xcb, 0xc4, 0xd6, 0x9e, 0xd2, 0xc2, 0x9a, + 0x51, 0x4c, 0x0f, 0xf1, 0xd2, 0x16, 0x51, 0xe9, 0xf3, 0x92, 0xc5, 0xa4, 0x9a, 0x81, 0x2e, 0x07, + 0xa1, 0x36, 0x35, 0x24, 0x52, 0x36, 0xd8, 0x24, 0xeb, 0x8b, 0xb6, 0x1d, 0xc8, 0x3b, 0x98, 0xc4, + 0x3d, 0x6e, 0xf1, 0x9e, 0x65, 0xa8, 0x11, 0xcb, 0x23, 0x7b, 0x26, 0x73, 0x18, 0xeb, 0xd8, 0xb4, + 0x13, 0xbe, 0x44, 0x8f, 0x80, 0x2f, 0x50, 0x68, 0x58, 0x01, 0xcd, 0x42, 0x39, 0x21, 0xdc, 0x54, + 0x3b, 0x78, 0xfe, 0x2d, 0xc8, 0x47, 0xdd, 0x83, 0xe6, 0x60, 0xd2, 0xf5, 0x54, 0xc7, 0xa3, 0x51, + 0x38, 0x29, 0xb3, 0x0b, 0x24, 0x41, 0x02, 0x9b, 0x2d, 0x9a, 0xe5, 0x26, 0x65, 0xf2, 0x2f, 0xfa, + 0x13, 0x41, 0x87, 0x13, 0xb4, 0xc3, 0x8f, 0xf7, 0x8f, 0x68, 0x84, 0xb9, 0xb7, 0xdf, 0xf3, 0x97, + 0x60, 0x3a, 0xd2, 0x81, 0x71, 0x6f, 0x5d, 0xfa, 0x31, 0x38, 0x31, 0x90, 0x1a, 0xdd, 0x80, 0xb9, + 0xae, 0xa9, 0x9b, 0x1e, 0x76, 0x6c, 0x07, 0x93, 0x88, 0x65, 0xb7, 0x2a, 0xfe, 0x97, 0xa9, 0x21, + 0x31, 0xb7, 0x13, 0xd6, 0x66, 0x2c, 0xf2, 0x6c, 0xb7, 0x5f, 0xf8, 0x64, 0x26, 0xfd, 0xad, 0x29, + 0xe9, 0xed, 0xb7, 0xdf, 0x7e, 0x3b, 0x5e, 0xfa, 0xa7, 0x29, 0x98, 0x1b, 0x34, 0x67, 0x06, 0x4e, + 0xdf, 0x93, 0x90, 0x32, 0xbb, 0x9d, 0x5d, 0xec, 0x50, 0x27, 0x4d, 0xca, 0xfc, 0x0a, 0xad, 0xc0, + 0xa4, 0xa1, 0xee, 0x62, 0xa3, 0x98, 0x5c, 0x8a, 0x9d, 0xcd, 0x9f, 0x7f, 0x6a, 0xac, 0x59, 0xb9, + 0xbc, 0x4e, 0x20, 0x32, 0x43, 0xa2, 0x0f, 0x43, 0x92, 0xa7, 0x68, 0xc2, 0xf0, 0xe4, 0x78, 0x0c, + 0x64, 0x2e, 0xc9, 0x14, 0x87, 0x1e, 0x80, 0x0c, 0xf9, 0xcb, 0x62, 0x23, 0x45, 0x6d, 0x4e, 0x13, + 0x01, 0x89, 0x0b, 0x34, 0x0f, 0x69, 0x3a, 0x4d, 0x5a, 0x58, 0x2c, 0x6d, 0xfe, 0x35, 0x09, 0xac, + 0x16, 0xde, 0x53, 0xbb, 0x86, 0xa7, 0xdc, 0x54, 0x8d, 0x2e, 0xa6, 0x01, 0x9f, 0x91, 0x73, 0x5c, + 0x78, 0x9d, 0xc8, 0xd0, 0x22, 0x64, 0xd9, 0xac, 0xd2, 0xcd, 0x16, 0xbe, 0x4d, 0xb3, 0xe7, 0xa4, + 0xcc, 0x26, 0xda, 0x1a, 0x91, 0x90, 0xdb, 0xbf, 0xe9, 0x5a, 0xa6, 0x08, 0x4d, 0x7a, 0x0b, 0x22, + 0xa0, 0xb7, 0xbf, 0xd4, 0x9b, 0xb8, 0x1f, 0x1a, 0xdc, 0xbd, 0xbe, 0xb9, 0x74, 0x06, 0x0a, 0x54, + 0xe3, 0x79, 0x3e, 0xf4, 0xaa, 0x51, 0x9c, 0x59, 0x8a, 0x9d, 0x4d, 0xcb, 0x79, 0x26, 0xde, 0xe2, + 0xd2, 0xd2, 0x97, 0xe3, 0x90, 0xa4, 0x89, 0xa5, 0x00, 0xd9, 0xed, 0xd7, 0x1b, 0x75, 0xa5, 0xb6, + 0xb5, 0x53, 0x59, 0xaf, 0x4b, 0x31, 0x94, 0x07, 0xa0, 0x82, 0xab, 0xeb, 0x5b, 0x2b, 0xdb, 0x52, + 0xdc, 0xbf, 0x5e, 0xdb, 0xdc, 0xbe, 0xf8, 0x82, 0x94, 0xf0, 0x01, 0x3b, 0x4c, 0x90, 0x0c, 0x2b, + 0x3c, 0x7f, 0x5e, 0x9a, 0x44, 0x12, 0xe4, 0x18, 0xc1, 0xda, 0x8d, 0x7a, 0xed, 0xe2, 0x0b, 0x52, + 0x2a, 0x2a, 0x79, 0xfe, 0xbc, 0x34, 0x85, 0xa6, 0x21, 0x43, 0x25, 0x95, 0xad, 0xad, 0x75, 0x29, + 0xed, 0x73, 0x36, 0xb7, 0xe5, 0xb5, 0xcd, 0x55, 0x29, 0xe3, 0x73, 0xae, 0xca, 0x5b, 0x3b, 0x0d, + 0x09, 0x7c, 0x86, 0x8d, 0x7a, 0xb3, 0xb9, 0xb2, 0x5a, 0x97, 0xb2, 0xbe, 0x46, 0xe5, 0xf5, 0xed, + 0x7a, 0x53, 0xca, 0x45, 0xcc, 0x7a, 0xfe, 0xbc, 0x34, 0xed, 0xdf, 0xa2, 0xbe, 0xb9, 0xb3, 0x21, + 0xe5, 0xd1, 0x0c, 0x4c, 0xb3, 0x5b, 0x08, 0x23, 0x0a, 0x3d, 0xa2, 0x8b, 0x2f, 0x48, 0x52, 0x60, + 0x08, 0x63, 0x99, 0x89, 0x08, 0x2e, 0xbe, 0x20, 0xa1, 0x52, 0x15, 0x26, 0x69, 0x18, 0x22, 0x04, + 0xf9, 0xf5, 0x95, 0x4a, 0x7d, 0x5d, 0xd9, 0x6a, 0x6c, 0xaf, 0x6d, 0x6d, 0xae, 0xac, 0x4b, 0xb1, + 0x40, 0x26, 0xd7, 0x5f, 0xdd, 0x59, 0x93, 0xeb, 0x35, 0x29, 0x1e, 0x96, 0x35, 0xea, 0x2b, 0xdb, + 0xf5, 0x9a, 0x94, 0x28, 0x69, 0x30, 0x37, 0x28, 0xa1, 0x0e, 0x9c, 0x42, 0xa1, 0x58, 0x88, 0x0f, + 0x89, 0x05, 0xca, 0xd5, 0x1b, 0x0b, 0xa5, 0x6f, 0xc4, 0x61, 0x76, 0xc0, 0xa2, 0x32, 0xf0, 0x26, + 0x2f, 0xc1, 0x24, 0x8b, 0x65, 0xb6, 0xcc, 0x3e, 0x31, 0x70, 0x75, 0xa2, 0x91, 0xdd, 0xb7, 0xd4, + 0x52, 0x5c, 0xb8, 0xd4, 0x48, 0x0c, 0x29, 0x35, 0x08, 0x45, 0x5f, 0xc0, 0xfe, 0x48, 0x5f, 0xf2, + 0x67, 0xeb, 0xe3, 0xc5, 0x71, 0xd6, 0x47, 0x2a, 0x3b, 0xde, 0x22, 0x30, 0x39, 0x60, 0x11, 0xb8, + 0x02, 0x33, 0x7d, 0x44, 0x63, 0x27, 0xe3, 0x8f, 0xc4, 0xa0, 0x38, 0xcc, 0x39, 0x23, 0x52, 0x62, + 0x3c, 0x92, 0x12, 0xaf, 0xf4, 0x7a, 0xf0, 0xe1, 0xe1, 0x83, 0xd0, 0x37, 0xd6, 0x9f, 0x8b, 0xc1, + 0xc9, 0xc1, 0x25, 0xe5, 0x40, 0x1b, 0x3e, 0x0c, 0xa9, 0x0e, 0xf6, 0xf6, 0x2d, 0x51, 0x56, 0x3d, + 0x3e, 0x60, 0xb1, 0x26, 0xcd, 0xbd, 0x83, 0xcd, 0x51, 0xe1, 0xd5, 0x3e, 0x31, 0xac, 0x2e, 0x64, + 0xd6, 0xf4, 0x59, 0xfa, 0xb1, 0x38, 0x9c, 0x18, 0x48, 0x3e, 0xd0, 0xd0, 0x87, 0x00, 0x74, 0xd3, + 0xee, 0x7a, 0xac, 0x74, 0x62, 0x99, 0x38, 0x43, 0x25, 0x34, 0x79, 0x91, 0x2c, 0xdb, 0xf5, 0xfc, + 0xf6, 0x04, 0x6d, 0x07, 0x26, 0xa2, 0x0a, 0x2f, 0x06, 0x86, 0x26, 0xa9, 0xa1, 0x0b, 0x43, 0x7a, + 0xda, 0x17, 0x98, 0xcf, 0x82, 0xa4, 0x19, 0x3a, 0x36, 0x3d, 0xc5, 0xf5, 0x1c, 0xac, 0x76, 0x74, + 0xb3, 0x4d, 0x97, 0x9a, 0x74, 0x79, 0x72, 0x4f, 0x35, 0x5c, 0x2c, 0x17, 0x58, 0x73, 0x53, 0xb4, + 0x12, 0x04, 0x0d, 0x20, 0x27, 0x84, 0x48, 0x45, 0x10, 0xac, 0xd9, 0x47, 0x94, 0x7e, 0x32, 0x03, + 0xd9, 0x50, 0x01, 0x8e, 0x1e, 0x86, 0xdc, 0x9b, 0xea, 0x4d, 0x55, 0x11, 0x9b, 0x2a, 0xe6, 0x89, + 0x2c, 0x91, 0x35, 0xf8, 0xc6, 0xea, 0x59, 0x98, 0xa3, 0x2a, 0x56, 0xd7, 0xc3, 0x8e, 0xa2, 0x19, + 0xaa, 0xeb, 0x52, 0xa7, 0xa5, 0xa9, 0x2a, 0x22, 0x6d, 0x5b, 0xa4, 0xa9, 0x2a, 0x5a, 0xd0, 0x05, + 0x98, 0xa5, 0x88, 0x4e, 0xd7, 0xf0, 0x74, 0xdb, 0xc0, 0x0a, 0xd9, 0xe6, 0xb9, 0x74, 0xc9, 0xf1, + 0x2d, 0x9b, 0x21, 0x1a, 0x1b, 0x5c, 0x81, 0x58, 0xe4, 0xa2, 0x1a, 0x3c, 0x44, 0x61, 0x6d, 0x6c, + 0x62, 0x47, 0xf5, 0xb0, 0x82, 0x7f, 0xb4, 0xab, 0x1a, 0xae, 0xa2, 0x9a, 0x2d, 0x65, 0x5f, 0x75, + 0xf7, 0x8b, 0x73, 0x84, 0xa0, 0x12, 0x2f, 0xc6, 0xe4, 0xd3, 0x44, 0x71, 0x95, 0xeb, 0xd5, 0xa9, + 0xda, 0x8a, 0xd9, 0x7a, 0x59, 0x75, 0xf7, 0x51, 0x19, 0x4e, 0x52, 0x16, 0xd7, 0x73, 0x74, 0xb3, + 0xad, 0x68, 0xfb, 0x58, 0x3b, 0x50, 0xba, 0xde, 0xde, 0x8b, 0xc5, 0x07, 0xc2, 0xf7, 0xa7, 0x16, + 0x36, 0xa9, 0x4e, 0x95, 0xa8, 0xec, 0x78, 0x7b, 0x2f, 0xa2, 0x26, 0xe4, 0xc8, 0x60, 0x74, 0xf4, + 0xb7, 0xb0, 0xb2, 0x67, 0x39, 0x74, 0x0d, 0xcd, 0x0f, 0x48, 0x4d, 0x21, 0x0f, 0x2e, 0x6f, 0x71, + 0xc0, 0x86, 0xd5, 0xc2, 0xe5, 0xc9, 0x66, 0xa3, 0x5e, 0xaf, 0xc9, 0x59, 0xc1, 0x72, 0xd5, 0x72, + 0x48, 0x40, 0xb5, 0x2d, 0xdf, 0xc1, 0x59, 0x16, 0x50, 0x6d, 0x4b, 0xb8, 0xf7, 0x02, 0xcc, 0x6a, + 0x1a, 0xeb, 0xb3, 0xae, 0x29, 0x7c, 0x33, 0xe6, 0x16, 0xa5, 0x88, 0xb3, 0x34, 0x6d, 0x95, 0x29, + 0xf0, 0x18, 0x77, 0xd1, 0x65, 0x38, 0x11, 0x38, 0x2b, 0x0c, 0x9c, 0xe9, 0xeb, 0x65, 0x2f, 0xf4, + 0x02, 0xcc, 0xda, 0x87, 0xfd, 0x40, 0x14, 0xb9, 0xa3, 0x7d, 0xd8, 0x0b, 0xbb, 0x04, 0x73, 0xf6, + 0xbe, 0xdd, 0x8f, 0x7b, 0x32, 0x8c, 0x43, 0xf6, 0xbe, 0xdd, 0x0b, 0x7c, 0x8c, 0xee, 0xcc, 0x1d, + 0xac, 0xa9, 0x1e, 0x6e, 0x15, 0x4f, 0x85, 0xd5, 0x43, 0x0d, 0x68, 0x19, 0x24, 0x4d, 0x53, 0xb0, + 0xa9, 0xee, 0x1a, 0x58, 0x51, 0x1d, 0x6c, 0xaa, 0x6e, 0x71, 0x91, 0x2a, 0x27, 0x3d, 0xa7, 0x8b, + 0xe5, 0xbc, 0xa6, 0xd5, 0x69, 0xe3, 0x0a, 0x6d, 0x43, 0x4f, 0xc2, 0x8c, 0xb5, 0xfb, 0xa6, 0xc6, + 0x22, 0x52, 0xb1, 0x1d, 0xbc, 0xa7, 0xdf, 0x2e, 0x3e, 0x4a, 0xdd, 0x5b, 0x20, 0x0d, 0x34, 0x1e, + 0x1b, 0x54, 0x8c, 0x9e, 0x00, 0x49, 0x73, 0xf7, 0x55, 0xc7, 0xa6, 0x29, 0xd9, 0xb5, 0x55, 0x0d, + 0x17, 0x1f, 0x63, 0xaa, 0x4c, 0xbe, 0x29, 0xc4, 0x64, 0x46, 0xb8, 0xb7, 0xf4, 0x3d, 0x4f, 0x30, + 0x9e, 0x61, 0x33, 0x82, 0xca, 0x38, 0xdb, 0x59, 0x90, 0x88, 0x27, 0x22, 0x37, 0x3e, 0x4b, 0xd5, + 0xf2, 0xf6, 0xbe, 0x1d, 0xbe, 0xef, 0x23, 0x30, 0x4d, 0x34, 0x83, 0x9b, 0x3e, 0xc1, 0x0a, 0x37, + 0x7b, 0x3f, 0x74, 0xc7, 0x17, 0xe0, 0x24, 0x51, 0xea, 0x60, 0x4f, 0x6d, 0xa9, 0x9e, 0x1a, 0xd2, + 0x7e, 0x9a, 0x6a, 0x13, 0xb7, 0x6f, 0xf0, 0xc6, 0x88, 0x9d, 0x4e, 0x77, 0xf7, 0xd0, 0x0f, 0xac, + 0x67, 0x98, 0x9d, 0x44, 0x26, 0x42, 0xeb, 0x03, 0x2b, 0xce, 0x4b, 0x65, 0xc8, 0x85, 0xe3, 0x1e, + 0x65, 0x80, 0x45, 0xbe, 0x14, 0x23, 0x45, 0x50, 0x75, 0xab, 0x46, 0xca, 0x97, 0x37, 0xea, 0x52, + 0x9c, 0x94, 0x51, 0xeb, 0x6b, 0xdb, 0x75, 0x45, 0xde, 0xd9, 0xdc, 0x5e, 0xdb, 0xa8, 0x4b, 0x89, + 0x50, 0x61, 0x7f, 0x2d, 0x99, 0x7e, 0x5c, 0x3a, 0x43, 0xaa, 0x86, 0x7c, 0x74, 0xa7, 0x86, 0x7e, + 0x08, 0x4e, 0x89, 0x63, 0x15, 0x17, 0x7b, 0xca, 0x2d, 0xdd, 0xa1, 0x13, 0xb2, 0xa3, 0xb2, 0xc5, + 0xd1, 0x8f, 0x9f, 0x39, 0xae, 0xd5, 0xc4, 0xde, 0x6b, 0xba, 0x43, 0xa6, 0x5b, 0x47, 0xf5, 0xd0, + 0x3a, 0x2c, 0x9a, 0x96, 0xe2, 0x7a, 0xaa, 0xd9, 0x52, 0x9d, 0x96, 0x12, 0x1c, 0x68, 0x29, 0xaa, + 0xa6, 0x61, 0xd7, 0xb5, 0xd8, 0x42, 0xe8, 0xb3, 0x3c, 0x68, 0x5a, 0x4d, 0xae, 0x1c, 0xac, 0x10, + 0x2b, 0x5c, 0xb5, 0x27, 0x7c, 0x13, 0xc3, 0xc2, 0xf7, 0x01, 0xc8, 0x74, 0x54, 0x5b, 0xc1, 0xa6, + 0xe7, 0x1c, 0xd2, 0xfa, 0x3c, 0x2d, 0xa7, 0x3b, 0xaa, 0x5d, 0x27, 0xd7, 0xdf, 0x97, 0x6d, 0xd2, + 0xb5, 0x64, 0x3a, 0x29, 0x4d, 0x5e, 0x4b, 0xa6, 0x27, 0xa5, 0xd4, 0xb5, 0x64, 0x3a, 0x25, 0x4d, + 0x5d, 0x4b, 0xa6, 0xd3, 0x52, 0xe6, 0x5a, 0x32, 0x9d, 0x91, 0xa0, 0xf4, 0x5e, 0x02, 0x72, 0xe1, + 0x0a, 0x9e, 0x6c, 0x88, 0x34, 0xba, 0x86, 0xc5, 0x68, 0x96, 0x7b, 0xe4, 0xc8, 0x7a, 0x7f, 0xb9, + 0x4a, 0x16, 0xb7, 0x72, 0x8a, 0x95, 0xcb, 0x32, 0x43, 0x92, 0xc2, 0x82, 0x84, 0x1f, 0x66, 0xe5, + 0x49, 0x5a, 0xe6, 0x57, 0x68, 0x15, 0x52, 0x6f, 0xba, 0x94, 0x3b, 0x45, 0xb9, 0x1f, 0x3d, 0x9a, + 0xfb, 0x5a, 0x93, 0x92, 0x67, 0xae, 0x35, 0x95, 0xcd, 0x2d, 0x79, 0x63, 0x65, 0x5d, 0xe6, 0x70, + 0x74, 0x1a, 0x92, 0x86, 0xfa, 0xd6, 0x61, 0x74, 0x19, 0xa4, 0xa2, 0x71, 0x87, 0xe5, 0x34, 0x24, + 0x6f, 0x61, 0xf5, 0x20, 0xba, 0xf8, 0x50, 0xd1, 0x07, 0x38, 0x3d, 0xce, 0xc1, 0x24, 0xf5, 0x17, + 0x02, 0xe0, 0x1e, 0x93, 0x26, 0x50, 0x1a, 0x92, 0xd5, 0x2d, 0x99, 0x4c, 0x11, 0x09, 0x72, 0x4c, + 0xaa, 0x34, 0xd6, 0xea, 0xd5, 0xba, 0x14, 0x2f, 0x5d, 0x80, 0x14, 0x73, 0x02, 0x99, 0x3e, 0xbe, + 0x1b, 0xa4, 0x09, 0x7e, 0xc9, 0x39, 0x62, 0xa2, 0x75, 0x67, 0xa3, 0x52, 0x97, 0xa5, 0x78, 0xdf, + 0xe0, 0x97, 0x5c, 0xc8, 0x85, 0x2b, 0xf3, 0xef, 0xcf, 0xf6, 0xfc, 0x2b, 0x31, 0xc8, 0x86, 0x2a, + 0x6d, 0x52, 0x22, 0xa9, 0x86, 0x61, 0xdd, 0x52, 0x54, 0x43, 0x57, 0x5d, 0x1e, 0x1a, 0x40, 0x45, + 0x2b, 0x44, 0x32, 0xee, 0xd0, 0x7d, 0x9f, 0x26, 0xcd, 0xa4, 0x94, 0x2a, 0x7d, 0x3a, 0x06, 0x52, + 0x6f, 0xa9, 0xdb, 0x63, 0x66, 0xec, 0x8f, 0xd2, 0xcc, 0xd2, 0xa7, 0x62, 0x90, 0x8f, 0xd6, 0xb7, + 0x3d, 0xe6, 0x3d, 0xfc, 0x47, 0x6a, 0xde, 0xef, 0xc6, 0x61, 0x3a, 0x52, 0xd5, 0x8e, 0x6b, 0xdd, + 0x8f, 0xc2, 0x8c, 0xde, 0xc2, 0x1d, 0xdb, 0xf2, 0xb0, 0xa9, 0x1d, 0x2a, 0x06, 0xbe, 0x89, 0x8d, + 0x62, 0x89, 0x26, 0x8d, 0x73, 0x47, 0xd7, 0xcd, 0xcb, 0x6b, 0x01, 0x6e, 0x9d, 0xc0, 0xca, 0xb3, + 0x6b, 0xb5, 0xfa, 0x46, 0x63, 0x6b, 0xbb, 0xbe, 0x59, 0x7d, 0x5d, 0xd9, 0xd9, 0x7c, 0x65, 0x73, + 0xeb, 0xb5, 0x4d, 0x59, 0xd2, 0x7b, 0xd4, 0x3e, 0xc0, 0x69, 0xdf, 0x00, 0xa9, 0xd7, 0x28, 0x74, + 0x0a, 0x06, 0x99, 0x25, 0x4d, 0xa0, 0x59, 0x28, 0x6c, 0x6e, 0x29, 0xcd, 0xb5, 0x5a, 0x5d, 0xa9, + 0x5f, 0xbd, 0x5a, 0xaf, 0x6e, 0x37, 0xd9, 0x49, 0x88, 0xaf, 0xbd, 0x1d, 0x99, 0xe0, 0xa5, 0x4f, + 0x26, 0x60, 0x76, 0x80, 0x25, 0x68, 0x85, 0xef, 0x61, 0xd8, 0xb6, 0xea, 0x99, 0x71, 0xac, 0x5f, + 0x26, 0x55, 0x44, 0x43, 0x75, 0x3c, 0xbe, 0xe5, 0x79, 0x02, 0x88, 0x97, 0x4c, 0x4f, 0xdf, 0xd3, + 0xb1, 0xc3, 0x4f, 0x98, 0xd8, 0xc6, 0xa6, 0x10, 0xc8, 0xd9, 0x21, 0xd3, 0xd3, 0x80, 0x6c, 0xcb, + 0xd5, 0x3d, 0xfd, 0x26, 0x56, 0x74, 0x53, 0x1c, 0x47, 0x91, 0x8d, 0x4e, 0x52, 0x96, 0x44, 0xcb, + 0x9a, 0xe9, 0xf9, 0xda, 0x26, 0x6e, 0xab, 0x3d, 0xda, 0x24, 0x99, 0x27, 0x64, 0x49, 0xb4, 0xf8, + 0xda, 0x0f, 0x43, 0xae, 0x65, 0x75, 0x49, 0xf5, 0xc7, 0xf4, 0xc8, 0xda, 0x11, 0x93, 0xb3, 0x4c, + 0xe6, 0xab, 0xf0, 0xba, 0x3e, 0x38, 0x07, 0xcb, 0xc9, 0x59, 0x26, 0x63, 0x2a, 0x67, 0xa0, 0xa0, + 0xb6, 0xdb, 0x0e, 0x21, 0x17, 0x44, 0x6c, 0xa7, 0x92, 0xf7, 0xc5, 0x54, 0x71, 0xfe, 0x1a, 0xa4, + 0x85, 0x1f, 0xc8, 0xe2, 0x4d, 0x3c, 0xa1, 0xd8, 0x6c, 0xfb, 0x1d, 0x3f, 0x9b, 0x91, 0xd3, 0xa6, + 0x68, 0x7c, 0x18, 0x72, 0xba, 0xab, 0x04, 0xc7, 0xfa, 0xf1, 0xa5, 0xf8, 0xd9, 0xb4, 0x9c, 0xd5, + 0x5d, 0xff, 0x48, 0xb4, 0xf4, 0xb9, 0x38, 0xe4, 0xa3, 0x8f, 0x25, 0x50, 0x0d, 0xd2, 0x86, 0xa5, + 0xa9, 0x34, 0xb4, 0xd8, 0x33, 0xb1, 0xb3, 0x23, 0x9e, 0x64, 0x2c, 0xaf, 0x73, 0x7d, 0xd9, 0x47, + 0xce, 0xff, 0xeb, 0x18, 0xa4, 0x85, 0x18, 0x9d, 0x84, 0xa4, 0xad, 0x7a, 0xfb, 0x94, 0x6e, 0xb2, + 0x12, 0x97, 0x62, 0x32, 0xbd, 0x26, 0x72, 0xd7, 0x56, 0x4d, 0x1a, 0x02, 0x5c, 0x4e, 0xae, 0xc9, + 0xb8, 0x1a, 0x58, 0x6d, 0xd1, 0x6d, 0x90, 0xd5, 0xe9, 0x60, 0xd3, 0x73, 0xc5, 0xb8, 0x72, 0x79, + 0x95, 0x8b, 0xd1, 0x53, 0x30, 0xe3, 0x39, 0xaa, 0x6e, 0x44, 0x74, 0x93, 0x54, 0x57, 0x12, 0x0d, + 0xbe, 0x72, 0x19, 0x4e, 0x0b, 0xde, 0x16, 0xf6, 0x54, 0x6d, 0x1f, 0xb7, 0x02, 0x50, 0x8a, 0x1e, + 0x77, 0x9c, 0xe2, 0x0a, 0x35, 0xde, 0x2e, 0xb0, 0xa5, 0xdf, 0x88, 0xc1, 0x8c, 0xd8, 0xb8, 0xb5, + 0x7c, 0x67, 0x6d, 0x00, 0xa8, 0xa6, 0x69, 0x79, 0x61, 0x77, 0xf5, 0x87, 0x72, 0x1f, 0x6e, 0x79, + 0xc5, 0x07, 0xc9, 0x21, 0x82, 0xf9, 0x0e, 0x40, 0xd0, 0x32, 0xd4, 0x6d, 0x8b, 0x90, 0xe5, 0xcf, + 0x9c, 0xe8, 0x83, 0x4b, 0xb6, 0xd5, 0x07, 0x26, 0x22, 0x3b, 0x3c, 0x34, 0x07, 0x93, 0xbb, 0xb8, + 0xad, 0x9b, 0xfc, 0x24, 0x99, 0x5d, 0x88, 0x03, 0x99, 0xa4, 0x7f, 0x20, 0x53, 0xf9, 0x33, 0x30, + 0xab, 0x59, 0x9d, 0x5e, 0x73, 0x2b, 0x52, 0xcf, 0x71, 0x83, 0xfb, 0x72, 0xec, 0x8d, 0x67, 0xb8, + 0x52, 0xdb, 0x32, 0x54, 0xb3, 0xbd, 0x6c, 0x39, 0xed, 0xe0, 0xc1, 0x2b, 0xa9, 0x78, 0xdc, 0xd0, + 0xe3, 0x57, 0x7b, 0xf7, 0xff, 0xc4, 0x62, 0x3f, 0x17, 0x4f, 0xac, 0x36, 0x2a, 0x9f, 0x8f, 0xcf, + 0xaf, 0x32, 0x60, 0x43, 0x38, 0x43, 0xc6, 0x7b, 0x06, 0xd6, 0x48, 0x07, 0xe1, 0xdb, 0x4f, 0xc1, + 0x5c, 0xdb, 0x6a, 0x5b, 0x94, 0xe9, 0x1c, 0xf9, 0x8f, 0x3f, 0xb9, 0xcd, 0xf8, 0xd2, 0xf9, 0x91, + 0x8f, 0x79, 0xcb, 0x9b, 0x30, 0xcb, 0x95, 0x15, 0xfa, 0xe8, 0x88, 0x6d, 0x6c, 0xd0, 0x91, 0xa7, + 0x6a, 0xc5, 0x5f, 0xfc, 0x26, 0x5d, 0xbe, 0xe5, 0x19, 0x0e, 0x25, 0x6d, 0x6c, 0xef, 0x53, 0x96, + 0xe1, 0x44, 0x84, 0x8f, 0x4d, 0x52, 0xec, 0x8c, 0x60, 0xfc, 0x17, 0x9c, 0x71, 0x36, 0xc4, 0xd8, + 0xe4, 0xd0, 0x72, 0x15, 0xa6, 0x8f, 0xc3, 0xf5, 0x2f, 0x39, 0x57, 0x0e, 0x87, 0x49, 0x56, 0xa1, + 0x40, 0x49, 0xb4, 0xae, 0xeb, 0x59, 0x1d, 0x9a, 0x01, 0x8f, 0xa6, 0xf9, 0x57, 0xdf, 0x64, 0xb3, + 0x26, 0x4f, 0x60, 0x55, 0x1f, 0x55, 0x2e, 0x03, 0x7d, 0x5a, 0xd6, 0xc2, 0x9a, 0x31, 0x82, 0xe1, + 0xab, 0xdc, 0x10, 0x5f, 0xbf, 0x7c, 0x1d, 0xe6, 0xc8, 0xff, 0x34, 0x41, 0x85, 0x2d, 0x19, 0x7d, + 0x04, 0x57, 0xfc, 0x8d, 0x8f, 0xb0, 0x89, 0x39, 0xeb, 0x13, 0x84, 0x6c, 0x0a, 0x8d, 0x62, 0x1b, + 0x7b, 0x1e, 0x76, 0x5c, 0x45, 0x35, 0x06, 0x99, 0x17, 0x3a, 0xc3, 0x28, 0xfe, 0xcc, 0x77, 0xa2, + 0xa3, 0xb8, 0xca, 0x90, 0x2b, 0x86, 0x51, 0xde, 0x81, 0x53, 0x03, 0xa2, 0x62, 0x0c, 0xce, 0x4f, + 0x72, 0xce, 0xb9, 0xbe, 0xc8, 0x20, 0xb4, 0x0d, 0x10, 0x72, 0x7f, 0x2c, 0xc7, 0xe0, 0xfc, 0x59, + 0xce, 0x89, 0x38, 0x56, 0x0c, 0x29, 0x61, 0xbc, 0x06, 0x33, 0x37, 0xb1, 0xb3, 0x6b, 0xb9, 0xfc, + 0xdc, 0x68, 0x0c, 0xba, 0x4f, 0x71, 0xba, 0x02, 0x07, 0xd2, 0x83, 0x24, 0xc2, 0x75, 0x19, 0xd2, + 0x7b, 0xaa, 0x86, 0xc7, 0xa0, 0xb8, 0xcb, 0x29, 0xa6, 0x88, 0x3e, 0x81, 0xae, 0x40, 0xae, 0x6d, + 0xf1, 0x35, 0x6a, 0x34, 0xfc, 0xd3, 0x1c, 0x9e, 0x15, 0x18, 0x4e, 0x61, 0x5b, 0x76, 0xd7, 0x20, + 0x0b, 0xd8, 0x68, 0x8a, 0xbf, 0x2e, 0x28, 0x04, 0x86, 0x53, 0x1c, 0xc3, 0xad, 0xef, 0x08, 0x0a, + 0x37, 0xe4, 0xcf, 0x97, 0x20, 0x6b, 0x99, 0xc6, 0xa1, 0x65, 0x8e, 0x63, 0xc4, 0x67, 0x38, 0x03, + 0x70, 0x08, 0x21, 0xb8, 0x02, 0x99, 0x71, 0x07, 0xe2, 0x6f, 0x7c, 0x47, 0x4c, 0x0f, 0x31, 0x02, + 0xab, 0x50, 0x10, 0x09, 0x4a, 0xb7, 0xcc, 0x31, 0x28, 0xfe, 0x26, 0xa7, 0xc8, 0x87, 0x60, 0xbc, + 0x1b, 0x1e, 0x76, 0xbd, 0x36, 0x1e, 0x87, 0xe4, 0x73, 0xa2, 0x1b, 0x1c, 0xc2, 0x5d, 0xb9, 0x8b, + 0x4d, 0x6d, 0x7f, 0x3c, 0x86, 0x5f, 0x10, 0xae, 0x14, 0x18, 0x42, 0x51, 0x85, 0xe9, 0x8e, 0xea, + 0xb8, 0xfb, 0xaa, 0x31, 0xd6, 0x70, 0xfc, 0x2d, 0xce, 0x91, 0xf3, 0x41, 0xdc, 0x23, 0x5d, 0xf3, + 0x38, 0x34, 0x9f, 0x17, 0x1e, 0x09, 0xc1, 0xf8, 0xd4, 0x73, 0x3d, 0x7a, 0xc8, 0x76, 0x1c, 0xb6, + 0xbf, 0x2d, 0xa6, 0x1e, 0xc3, 0x6e, 0x84, 0x19, 0xaf, 0x40, 0xc6, 0xd5, 0xdf, 0x1a, 0x8b, 0xe6, + 0x0b, 0x62, 0xa4, 0x29, 0x80, 0x80, 0x5f, 0x87, 0xd3, 0x03, 0x97, 0x89, 0x31, 0xc8, 0xfe, 0x0e, + 0x27, 0x3b, 0x39, 0x60, 0xa9, 0xe0, 0x29, 0xe1, 0xb8, 0x94, 0x7f, 0x57, 0xa4, 0x04, 0xdc, 0xc3, + 0xd5, 0x20, 0xbb, 0x06, 0x57, 0xdd, 0x3b, 0x9e, 0xd7, 0xfe, 0x9e, 0xf0, 0x1a, 0xc3, 0x46, 0xbc, + 0xb6, 0x0d, 0x27, 0x39, 0xe3, 0xf1, 0xc6, 0xf5, 0xef, 0x8b, 0xc4, 0xca, 0xd0, 0x3b, 0xd1, 0xd1, + 0xfd, 0x61, 0x98, 0xf7, 0xdd, 0x29, 0xca, 0x53, 0x57, 0xe9, 0xa8, 0xf6, 0x18, 0xcc, 0xbf, 0xc8, + 0x99, 0x45, 0xc6, 0xf7, 0xeb, 0x5b, 0x77, 0x43, 0xb5, 0x09, 0xf9, 0x0d, 0x28, 0x0a, 0xf2, 0xae, + 0xe9, 0x60, 0xcd, 0x6a, 0x9b, 0xfa, 0x5b, 0xb8, 0x35, 0x06, 0xf5, 0x2f, 0xf5, 0x0c, 0xd5, 0x4e, + 0x08, 0x4e, 0x98, 0xd7, 0x40, 0xf2, 0x6b, 0x15, 0x45, 0xef, 0xd8, 0x96, 0xe3, 0x8d, 0x60, 0xfc, + 0xa2, 0x18, 0x29, 0x1f, 0xb7, 0x46, 0x61, 0xe5, 0x3a, 0xb0, 0x27, 0xcf, 0xe3, 0x86, 0xe4, 0x97, + 0x38, 0xd1, 0x74, 0x80, 0xe2, 0x89, 0x43, 0xb3, 0x3a, 0xb6, 0xea, 0x8c, 0x93, 0xff, 0xfe, 0x81, + 0x48, 0x1c, 0x1c, 0xc2, 0x13, 0x07, 0xa9, 0xe8, 0xc8, 0x6a, 0x3f, 0x06, 0xc3, 0x97, 0x45, 0xe2, + 0x10, 0x18, 0x4e, 0x21, 0x0a, 0x86, 0x31, 0x28, 0x7e, 0x59, 0x50, 0x08, 0x0c, 0xa1, 0x78, 0x35, + 0x58, 0x68, 0x1d, 0xdc, 0xd6, 0x5d, 0xcf, 0x61, 0x45, 0xf1, 0xd1, 0x54, 0xbf, 0xf2, 0x9d, 0x68, + 0x11, 0x26, 0x87, 0xa0, 0x24, 0x13, 0xf1, 0x63, 0x57, 0xba, 0x67, 0x1a, 0x6d, 0xd8, 0xaf, 0x8a, + 0x4c, 0x14, 0x82, 0x11, 0xdb, 0x42, 0x15, 0x22, 0x71, 0xbb, 0x46, 0x76, 0x0a, 0x63, 0xd0, 0xfd, + 0xc3, 0x1e, 0xe3, 0x9a, 0x02, 0x4b, 0x38, 0x43, 0xf5, 0x4f, 0xd7, 0x3c, 0xc0, 0x87, 0x63, 0x45, + 0xe7, 0xaf, 0xf5, 0xd4, 0x3f, 0x3b, 0x0c, 0xc9, 0x72, 0x48, 0xa1, 0xa7, 0x9e, 0x42, 0xa3, 0xde, + 0x33, 0x2a, 0xfe, 0xf8, 0xfb, 0xbc, 0xbf, 0xd1, 0x72, 0xaa, 0xbc, 0x4e, 0x82, 0x3c, 0x5a, 0xf4, + 0x8c, 0x26, 0xfb, 0xc8, 0xfb, 0x7e, 0x9c, 0x47, 0x6a, 0x9e, 0xf2, 0x55, 0x98, 0x8e, 0x14, 0x3c, + 0xa3, 0xa9, 0xfe, 0x2c, 0xa7, 0xca, 0x85, 0xeb, 0x9d, 0xf2, 0x05, 0x48, 0x92, 0xe2, 0x65, 0x34, + 0xfc, 0xcf, 0x71, 0x38, 0x55, 0x2f, 0x7f, 0x08, 0xd2, 0xa2, 0x68, 0x19, 0x0d, 0xfd, 0xf3, 0x1c, + 0xea, 0x43, 0x08, 0x5c, 0x14, 0x2c, 0xa3, 0xe1, 0x7f, 0x41, 0xc0, 0x05, 0x84, 0xc0, 0xc7, 0x77, + 0xe1, 0x57, 0xfe, 0x62, 0x92, 0x2f, 0x3a, 0xc2, 0x77, 0x57, 0x60, 0x8a, 0x57, 0x2a, 0xa3, 0xd1, + 0x1f, 0xe3, 0x37, 0x17, 0x88, 0xf2, 0x25, 0x98, 0x1c, 0xd3, 0xe1, 0x7f, 0x89, 0x43, 0x99, 0x7e, + 0xb9, 0x0a, 0xd9, 0x50, 0x75, 0x32, 0x1a, 0xfe, 0x13, 0x1c, 0x1e, 0x46, 0x11, 0xd3, 0x79, 0x75, + 0x32, 0x9a, 0xe0, 0x2f, 0x0b, 0xd3, 0x39, 0x82, 0xb8, 0x4d, 0x14, 0x26, 0xa3, 0xd1, 0x1f, 0x17, + 0x5e, 0x17, 0x90, 0xf2, 0x4b, 0x90, 0xf1, 0x17, 0x9b, 0xd1, 0xf8, 0x9f, 0xe4, 0xf8, 0x00, 0x43, + 0x3c, 0x10, 0x5a, 0xec, 0x46, 0x53, 0xfc, 0x15, 0xe1, 0x81, 0x10, 0x8a, 0x4c, 0xa3, 0xde, 0x02, + 0x66, 0x34, 0xd3, 0x4f, 0x89, 0x69, 0xd4, 0x53, 0xbf, 0x90, 0xd1, 0xa4, 0x39, 0x7f, 0x34, 0xc5, + 0x5f, 0x15, 0xa3, 0x49, 0xf5, 0x89, 0x19, 0xbd, 0x15, 0xc1, 0x68, 0x8e, 0x9f, 0x16, 0x66, 0xf4, + 0x14, 0x04, 0xe5, 0x06, 0xa0, 0xfe, 0x6a, 0x60, 0x34, 0xdf, 0x27, 0x38, 0xdf, 0x4c, 0x5f, 0x31, + 0x50, 0x7e, 0x0d, 0x4e, 0x0e, 0xae, 0x04, 0x46, 0xb3, 0xfe, 0xcc, 0xfb, 0x3d, 0x7b, 0xb7, 0x70, + 0x21, 0x50, 0xde, 0x0e, 0x96, 0x94, 0x70, 0x15, 0x30, 0x9a, 0xf6, 0x93, 0xef, 0x47, 0x13, 0x77, + 0xb8, 0x08, 0x28, 0xaf, 0x00, 0x04, 0x0b, 0xf0, 0x68, 0xae, 0x4f, 0x71, 0xae, 0x10, 0x88, 0x4c, + 0x0d, 0xbe, 0xfe, 0x8e, 0xc6, 0xdf, 0x15, 0x53, 0x83, 0x23, 0xc8, 0xd4, 0x10, 0x4b, 0xef, 0x68, + 0xf4, 0xa7, 0xc5, 0xd4, 0x10, 0x10, 0x12, 0xd9, 0xa1, 0xd5, 0x6d, 0x34, 0xc3, 0x67, 0x44, 0x64, + 0x87, 0x50, 0xe5, 0x4d, 0x98, 0xe9, 0x5b, 0x10, 0x47, 0x53, 0xfd, 0x1c, 0xa7, 0x92, 0x7a, 0xd7, + 0xc3, 0xf0, 0xe2, 0xc5, 0x17, 0xc3, 0xd1, 0x6c, 0x9f, 0xed, 0x59, 0xbc, 0xf8, 0x5a, 0x58, 0xbe, + 0x02, 0x69, 0xb3, 0x6b, 0x18, 0x64, 0xf2, 0xa0, 0xa3, 0xdf, 0x0d, 0x2c, 0xfe, 0xd7, 0xef, 0x72, + 0xef, 0x08, 0x40, 0xf9, 0x02, 0x4c, 0xe2, 0xce, 0x2e, 0x6e, 0x8d, 0x42, 0x7e, 0xfb, 0xbb, 0x22, + 0x61, 0x12, 0xed, 0xf2, 0x4b, 0x00, 0xec, 0x68, 0x84, 0x3e, 0x0c, 0x1c, 0x81, 0xfd, 0x6f, 0xdf, + 0xe5, 0x2f, 0xe3, 0x04, 0x90, 0x80, 0x80, 0xbd, 0xda, 0x73, 0x34, 0xc1, 0x77, 0xa2, 0x04, 0x74, + 0x44, 0x2e, 0xc3, 0xd4, 0x9b, 0xae, 0x65, 0x7a, 0x6a, 0x7b, 0x14, 0xfa, 0xbf, 0x73, 0xb4, 0xd0, + 0x27, 0x0e, 0xeb, 0x58, 0x0e, 0xf6, 0xd4, 0xb6, 0x3b, 0x0a, 0xfb, 0x3f, 0x38, 0xd6, 0x07, 0x10, + 0xb0, 0xa6, 0xba, 0xde, 0x38, 0xfd, 0xfe, 0x3d, 0x01, 0x16, 0x00, 0x62, 0x34, 0xf9, 0xff, 0x00, + 0x1f, 0x8e, 0xc2, 0xfe, 0xbe, 0x30, 0x9a, 0xeb, 0x97, 0x3f, 0x04, 0x19, 0xf2, 0x2f, 0x7b, 0xc3, + 0x6e, 0x04, 0xf8, 0x7f, 0x72, 0x70, 0x80, 0x20, 0x77, 0x76, 0xbd, 0x96, 0xa7, 0x8f, 0x76, 0xf6, + 0x1f, 0xf0, 0x91, 0x16, 0xfa, 0xe5, 0x15, 0xc8, 0xba, 0x5e, 0xab, 0xd5, 0xe5, 0xf5, 0xe9, 0x08, + 0xf8, 0xff, 0xfa, 0xae, 0x7f, 0x64, 0xe1, 0x63, 0xc8, 0x68, 0xdf, 0x3a, 0xf0, 0x6c, 0x8b, 0x3e, + 0xf0, 0x18, 0xc5, 0xf0, 0x3e, 0x67, 0x08, 0x41, 0xca, 0x55, 0xc8, 0x91, 0xbe, 0x38, 0xd8, 0xc6, + 0xf4, 0xe9, 0xd4, 0x08, 0x8a, 0xff, 0xcd, 0x1d, 0x10, 0x01, 0x55, 0x7e, 0xe4, 0xab, 0xef, 0x2d, + 0xc4, 0xbe, 0xfe, 0xde, 0x42, 0xec, 0x77, 0xdf, 0x5b, 0x88, 0x7d, 0xfc, 0x1b, 0x0b, 0x13, 0x5f, + 0xff, 0xc6, 0xc2, 0xc4, 0x6f, 0x7f, 0x63, 0x61, 0x62, 0xf0, 0x29, 0x31, 0xac, 0x5a, 0xab, 0x16, + 0x3b, 0x1f, 0x7e, 0xa3, 0xd4, 0xd6, 0xbd, 0xfd, 0xee, 0xee, 0xb2, 0x66, 0x75, 0xe8, 0x31, 0x6e, + 0x70, 0x5a, 0xeb, 0x6f, 0x72, 0xe0, 0x7b, 0x31, 0xb2, 0x61, 0x8e, 0x9e, 0xe5, 0xaa, 0xe6, 0xe1, + 0xb0, 0x6f, 0x75, 0x2e, 0x42, 0x62, 0xc5, 0x3c, 0x44, 0xa7, 0x59, 0x76, 0x53, 0xba, 0x8e, 0xc1, + 0xdf, 0xf1, 0x9a, 0x22, 0xd7, 0x3b, 0x8e, 0x81, 0xe6, 0x82, 0x17, 0x31, 0x63, 0x67, 0x73, 0xfc, + 0xed, 0xca, 0xca, 0x4f, 0xc4, 0x8e, 0xd7, 0x8d, 0xf4, 0x8a, 0x79, 0x48, 0x7b, 0xd1, 0x88, 0xbd, + 0xf1, 0xf4, 0xc8, 0x43, 0xee, 0x03, 0xd3, 0xba, 0x65, 0x12, 0xb3, 0xed, 0x5d, 0x71, 0xc0, 0xbd, + 0xd0, 0x7b, 0xc0, 0xfd, 0x1a, 0x36, 0x8c, 0x57, 0x88, 0xde, 0x36, 0x81, 0xec, 0xa6, 0xd8, 0xeb, + 0xc4, 0xf0, 0x53, 0x71, 0x58, 0xe8, 0x3b, 0xcb, 0xe6, 0x11, 0x30, 0xcc, 0x09, 0x65, 0x48, 0xd7, + 0x44, 0x60, 0x15, 0x61, 0xca, 0xc5, 0x9a, 0x65, 0xb6, 0x5c, 0xea, 0x88, 0x84, 0x2c, 0x2e, 0x89, + 0x23, 0x4c, 0xd5, 0xb4, 0x5c, 0xfe, 0x96, 0x24, 0xbb, 0xa8, 0xfc, 0xec, 0x31, 0x1d, 0x31, 0x2d, + 0xee, 0x24, 0xbc, 0xf1, 0xdc, 0x98, 0xde, 0x10, 0x9d, 0x88, 0x1c, 0xfb, 0x8f, 0xeb, 0x95, 0x9f, + 0x8e, 0xc3, 0x62, 0xaf, 0x57, 0xc8, 0xb4, 0x72, 0x3d, 0xb5, 0x63, 0x0f, 0x73, 0xcb, 0x15, 0xc8, + 0x6c, 0x0b, 0x9d, 0x63, 0xfb, 0xe5, 0xee, 0x31, 0xfd, 0x92, 0xf7, 0x6f, 0x25, 0x1c, 0x73, 0x7e, + 0x4c, 0xc7, 0xf8, 0xfd, 0xb8, 0x27, 0xcf, 0xfc, 0xdf, 0x14, 0x9c, 0xd6, 0x2c, 0xb7, 0x63, 0xb9, + 0x0a, 0x7b, 0x3e, 0xc2, 0x2e, 0xb8, 0x4f, 0x72, 0xe1, 0xa6, 0xd1, 0x0f, 0x49, 0x4a, 0xaf, 0xc0, + 0xec, 0x1a, 0x49, 0x15, 0x64, 0x0b, 0x14, 0x3c, 0xde, 0x19, 0xf8, 0x22, 0xe9, 0x52, 0xa4, 0xda, + 0xe7, 0x8f, 0x97, 0xc2, 0xa2, 0xd2, 0x8f, 0xc7, 0x40, 0x6a, 0x6a, 0xaa, 0xa1, 0x3a, 0x7f, 0x58, + 0x2a, 0x74, 0x09, 0x80, 0x7e, 0x80, 0x14, 0x7c, 0x31, 0x94, 0x3f, 0x5f, 0x5c, 0x0e, 0x77, 0x6e, + 0x99, 0xdd, 0x89, 0x7e, 0x8e, 0x90, 0xa1, 0xba, 0xe4, 0xdf, 0x27, 0x6f, 0x00, 0x04, 0x0d, 0xe8, + 0x01, 0x38, 0xd5, 0xac, 0xae, 0xac, 0xaf, 0xc8, 0x0a, 0x7b, 0xb3, 0x7d, 0xb3, 0xd9, 0xa8, 0x57, 0xd7, 0xae, 0xae, 0xd5, 0x6b, 0xd2, 0x04, 0x3a, 0x09, 0x28, 0xdc, 0xe8, 0xbf, 0x94, 0x72, 0x02, - 0x66, 0xc3, 0x72, 0xf6, 0x7a, 0x7c, 0x9c, 0x94, 0x89, 0x7a, 0xc7, 0x36, 0x30, 0x7d, 0xee, 0xa7, - 0xe8, 0xc2, 0x6b, 0xa3, 0x2b, 0x90, 0x5f, 0xff, 0x57, 0xec, 0x95, 0xe9, 0xb9, 0x00, 0xee, 0xfb, - 0xbc, 0xb4, 0x0e, 0xb3, 0xaa, 0xa6, 0x61, 0x3b, 0x42, 0x39, 0x22, 0x4f, 0x13, 0x42, 0xfa, 0x24, - 0x93, 0x23, 0x03, 0xb6, 0x4b, 0x90, 0x72, 0x69, 0xef, 0x47, 0x51, 0x7c, 0x83, 0x53, 0x70, 0xf5, - 0x92, 0x09, 0xb3, 0xa4, 0xec, 0x53, 0x1d, 0x1c, 0x32, 0xe3, 0xe8, 0x43, 0x86, 0x7f, 0xf0, 0xe5, + 0x66, 0xc2, 0x72, 0xf6, 0x7a, 0x7c, 0x9c, 0x94, 0x89, 0x7a, 0xc7, 0x36, 0x30, 0x7d, 0xee, 0xa7, + 0xe8, 0xc2, 0x6b, 0xa3, 0x2b, 0x90, 0x5f, 0xff, 0x37, 0xec, 0x95, 0xe9, 0xd9, 0x00, 0xee, 0xfb, + 0xbc, 0xbc, 0x0e, 0x33, 0xaa, 0xa6, 0x61, 0x3b, 0x42, 0x39, 0x22, 0x4f, 0x13, 0x42, 0xfa, 0x24, + 0x93, 0x23, 0x03, 0xb6, 0x4b, 0x90, 0x72, 0x69, 0xef, 0x47, 0x51, 0x7c, 0x8d, 0x53, 0x70, 0xf5, + 0xb2, 0x09, 0x33, 0xa4, 0xec, 0x53, 0x1d, 0x1c, 0x32, 0xe3, 0xe8, 0x43, 0x86, 0x7f, 0xf4, 0xc5, 0x67, 0xe9, 0x73, 0xcd, 0x87, 0xa3, 0xc3, 0x32, 0x20, 0x9c, 0x64, 0x89, 0x73, 0x07, 0x86, 0x62, - 0xc8, 0x8b, 0xfb, 0x71, 0x83, 0x8f, 0xbe, 0xd9, 0x3f, 0xe4, 0x37, 0x5b, 0x1c, 0x14, 0x03, 0xa1, + 0xc8, 0x8b, 0xfb, 0x71, 0x83, 0x8f, 0xbe, 0xd9, 0x3f, 0xe6, 0x37, 0x5b, 0x18, 0x14, 0x03, 0xa1, 0x3b, 0x4d, 0x73, 0x56, 0xd6, 0x50, 0xa9, 0x0f, 0x9b, 0xd3, 0x6f, 0x3c, 0x15, 0x5a, 0x9a, 0x18, - 0x25, 0xff, 0xf3, 0x0c, 0x65, 0xbe, 0x12, 0xbe, 0x8d, 0x3f, 0xf7, 0x7e, 0x2b, 0x01, 0x8b, 0x5c, + 0x25, 0xff, 0xf3, 0x0c, 0x65, 0xbe, 0x12, 0xbe, 0x8d, 0x3f, 0xf7, 0x7e, 0x2b, 0x01, 0x0b, 0x5c, 0x79, 0x57, 0x75, 0xf1, 0xb9, 0x9b, 0xcf, 0xed, 0x62, 0x4f, 0x7d, 0xee, 0x9c, 0x66, 0xe9, 0x22, - 0x57, 0xcf, 0xf1, 0xe9, 0x48, 0xda, 0x57, 0x78, 0xfb, 0xc2, 0xc0, 0xa7, 0x99, 0x0b, 0xc3, 0xa7, - 0x71, 0x71, 0x07, 0x92, 0x55, 0x4b, 0x37, 0x49, 0xaa, 0x6a, 0x61, 0xd3, 0xea, 0xf0, 0xd9, 0xc3, - 0x2e, 0xd0, 0x73, 0x90, 0x52, 0x3b, 0x56, 0xd7, 0xf4, 0xd8, 0xcc, 0xa9, 0x9c, 0xfe, 0xfa, 0xbb, - 0x4b, 0x13, 0xff, 0xfa, 0xdd, 0xa5, 0xc4, 0x9a, 0xe9, 0xfd, 0xe6, 0x57, 0x9e, 0x01, 0x4e, 0xb5, - 0x66, 0x7a, 0x32, 0x57, 0x2c, 0x25, 0xdf, 0x7f, 0x67, 0x29, 0x56, 0x7c, 0x0d, 0xa6, 0x6a, 0x58, + 0x57, 0xcf, 0xf2, 0xe9, 0x48, 0xda, 0x97, 0x79, 0xfb, 0xfc, 0xc0, 0xa7, 0x99, 0xf3, 0xc3, 0xa7, + 0x71, 0x69, 0x07, 0x92, 0x55, 0x4b, 0x37, 0x49, 0xaa, 0x6a, 0x61, 0xd3, 0xea, 0xf0, 0xd9, 0xc3, + 0x2e, 0xd0, 0x73, 0x90, 0x52, 0x3b, 0x56, 0xd7, 0xf4, 0xd8, 0xcc, 0xa9, 0x9c, 0xfe, 0xea, 0xbb, + 0x8b, 0x13, 0xff, 0xf6, 0xdd, 0xc5, 0xc4, 0x9a, 0xe9, 0xfd, 0xe6, 0x97, 0x9e, 0x01, 0x4e, 0xb5, + 0x66, 0x7a, 0x32, 0x57, 0x2c, 0x27, 0xbf, 0xf5, 0xce, 0x62, 0xac, 0x74, 0x03, 0xa6, 0x6a, 0x58, 0xbb, 0x17, 0xe6, 0x1a, 0xd6, 0x42, 0xcc, 0x35, 0xac, 0xf5, 0x30, 0x5f, 0x82, 0xf4, 0x9a, 0xe9, 0xb1, 0xb7, 0xd0, 0x9f, 0x82, 0x84, 0x6e, 0xb2, 0x17, 0x1b, 0x8f, 0xb4, 0x8d, 0x68, 0x11, 0x60, 0x0d, 0x6b, 0x3e, 0xb0, 0x85, 0xb5, 0x5e, 0x60, 0xff, 0xad, 0x89, 0x56, 0xa5, 0xf6, 0xdb, 0xff, - 0x61, 0x71, 0xe2, 0xed, 0xf7, 0x16, 0x27, 0x86, 0x0e, 0x71, 0x71, 0xe8, 0x10, 0xbb, 0xad, 0x03, - 0x96, 0x91, 0xfd, 0x91, 0xfd, 0x62, 0x12, 0x1e, 0xa2, 0x1f, 0x27, 0x39, 0x1d, 0xdd, 0xf4, 0xce, - 0x69, 0xce, 0xa1, 0xed, 0xd1, 0x72, 0xc5, 0xda, 0xe3, 0x03, 0x3b, 0x1b, 0x34, 0xaf, 0xb0, 0xe6, - 0xc1, 0xc3, 0x5a, 0xdc, 0x83, 0xc9, 0x06, 0xc1, 0x11, 0x17, 0x7b, 0x96, 0xa7, 0x1a, 0x7c, 0xfd, + 0x69, 0x61, 0xe2, 0xed, 0xf7, 0x16, 0x26, 0x86, 0x0e, 0x71, 0x69, 0xe8, 0x10, 0xbb, 0xad, 0x03, + 0x96, 0x91, 0xfd, 0x91, 0xfd, 0x7c, 0x12, 0x1e, 0xa2, 0x1f, 0x27, 0x39, 0x1d, 0xdd, 0xf4, 0xce, + 0x69, 0xce, 0xa1, 0xed, 0xd1, 0x72, 0xc5, 0xda, 0xe3, 0x03, 0x3b, 0x13, 0x34, 0x2f, 0xb3, 0xe6, + 0xc1, 0xc3, 0x5a, 0xda, 0x83, 0xc9, 0x06, 0xc1, 0x11, 0x17, 0x7b, 0x96, 0xa7, 0x1a, 0x7c, 0xfd, 0x61, 0x17, 0x44, 0xca, 0x3e, 0x68, 0x8a, 0x33, 0xa9, 0x2e, 0xbe, 0x65, 0x32, 0xb0, 0xba, 0xc7, - 0xde, 0x0b, 0x4f, 0xd0, 0xc2, 0x25, 0x4d, 0x04, 0xf4, 0x15, 0xf0, 0x79, 0x98, 0x54, 0xbb, 0xec, - 0x05, 0x86, 0x04, 0xa9, 0x68, 0xe8, 0x45, 0xf1, 0x3a, 0x4c, 0xf1, 0xc7, 0xa8, 0x48, 0x82, 0xc4, - 0x01, 0x3e, 0xa4, 0xf7, 0xc9, 0xc9, 0xe4, 0x27, 0x5a, 0x81, 0x49, 0x6a, 0x3c, 0xff, 0xe0, 0xa5, - 0xb0, 0xd2, 0x67, 0xfd, 0x0a, 0x35, 0x52, 0x66, 0x6a, 0xc5, 0x6b, 0x90, 0xae, 0x59, 0x1d, 0xdd, - 0xb4, 0xa2, 0x6c, 0x19, 0xc6, 0x46, 0x6d, 0xb6, 0xbb, 0x3c, 0x2a, 0x64, 0x76, 0x81, 0x4e, 0x42, - 0x8a, 0x7d, 0x27, 0xc0, 0x5f, 0xc2, 0xe0, 0x57, 0xc5, 0x2a, 0x4c, 0x51, 0xee, 0x2d, 0x9b, 0x24, - 0x7f, 0xff, 0x95, 0xcc, 0x0c, 0xff, 0x6a, 0x8c, 0xd3, 0xc7, 0x03, 0x63, 0x11, 0x24, 0x5b, 0xaa, - 0xa7, 0xf2, 0x7e, 0xd3, 0xdf, 0xc5, 0x8f, 0x42, 0x9a, 0x93, 0xb8, 0xe8, 0x3c, 0x24, 0x2c, 0xdb, - 0xe5, 0xaf, 0x51, 0x2c, 0x0c, 0xeb, 0xca, 0x96, 0x5d, 0x49, 0x92, 0x98, 0x91, 0x89, 0x72, 0x45, - 0x1e, 0x1a, 0x16, 0x2f, 0x86, 0xc2, 0x22, 0x34, 0xe4, 0xa1, 0x9f, 0x6c, 0x48, 0xfb, 0xc2, 0xc1, - 0x0f, 0x96, 0xcf, 0xc5, 0x61, 0x31, 0xd4, 0x7a, 0x13, 0x3b, 0xae, 0x6e, 0x99, 0x2c, 0xa2, 0x78, - 0xb4, 0xa0, 0x90, 0x91, 0xbc, 0x7d, 0x48, 0xb8, 0x7c, 0x04, 0x12, 0x65, 0xdb, 0x46, 0x0b, 0x90, - 0xa6, 0xd7, 0x9a, 0xc5, 0xe2, 0x25, 0x29, 0xfb, 0xd7, 0xa4, 0xcd, 0xb5, 0xf6, 0xbc, 0x5b, 0xaa, - 0xe3, 0x7f, 0x4a, 0x27, 0xae, 0x8b, 0x97, 0x21, 0x53, 0xb5, 0x4c, 0x17, 0x9b, 0x6e, 0x97, 0x56, - 0x36, 0xbb, 0x86, 0xa5, 0x1d, 0x70, 0x06, 0x76, 0x41, 0x1c, 0xae, 0xda, 0x36, 0x45, 0x26, 0x65, - 0xf2, 0x93, 0xcd, 0xd9, 0x4a, 0x73, 0xa8, 0x8b, 0x2e, 0x1f, 0xdf, 0x45, 0xbc, 0x93, 0xbe, 0x8f, - 0x7e, 0x10, 0x83, 0x07, 0xfb, 0x27, 0xd4, 0x01, 0x3e, 0x74, 0x8f, 0x3b, 0x9f, 0x5e, 0x83, 0x4c, - 0x83, 0x7e, 0xcf, 0x7e, 0x1d, 0x1f, 0xa2, 0x05, 0x98, 0xc2, 0xad, 0xf3, 0x17, 0x2e, 0x3c, 0x77, - 0x99, 0x45, 0xfb, 0xcb, 0x13, 0xb2, 0x10, 0xa0, 0x45, 0xc8, 0xb8, 0x58, 0xb3, 0xcf, 0x5f, 0xb8, - 0x78, 0xf0, 0x1c, 0x0b, 0xaf, 0x97, 0x27, 0xe4, 0x40, 0x54, 0x4a, 0x93, 0x5e, 0xbf, 0xff, 0xb9, - 0xa5, 0x58, 0x65, 0x12, 0x12, 0x6e, 0xb7, 0xf3, 0xa1, 0xc6, 0xc8, 0xa7, 0x27, 0x61, 0x39, 0x8c, - 0xa4, 0xf5, 0xdf, 0x4d, 0xd5, 0xd0, 0x5b, 0x6a, 0xf0, 0x9f, 0x08, 0xa4, 0x90, 0x0f, 0xa8, 0xc6, - 0x90, 0x95, 0xe2, 0x48, 0x4f, 0x16, 0x7f, 0x25, 0x06, 0xb9, 0x1b, 0x82, 0xb9, 0x89, 0x3d, 0x74, - 0x05, 0xc0, 0xbf, 0x93, 0x98, 0x36, 0x0f, 0xac, 0xf4, 0xde, 0x6b, 0xc5, 0xc7, 0xc8, 0x21, 0x75, - 0x74, 0x89, 0x06, 0xa2, 0x6d, 0xb9, 0xfc, 0xf3, 0xaa, 0x11, 0x50, 0x5f, 0x19, 0x3d, 0x0d, 0x88, - 0x66, 0x38, 0xe5, 0xa6, 0xe5, 0xe9, 0x66, 0x5b, 0xb1, 0xad, 0x5b, 0xfc, 0xa3, 0xd5, 0x84, 0x2c, - 0xd1, 0x96, 0x1b, 0xb4, 0xa1, 0x41, 0xe4, 0xc4, 0xe8, 0x8c, 0xcf, 0x42, 0x8a, 0x75, 0xb5, 0xd5, - 0x72, 0xb0, 0xeb, 0xf2, 0x24, 0x26, 0x2e, 0xd1, 0x15, 0x98, 0xb2, 0xbb, 0xbb, 0x8a, 0xc8, 0x18, - 0xd9, 0xf3, 0x0f, 0x0e, 0x9a, 0xff, 0x22, 0x3e, 0x78, 0x06, 0x48, 0xd9, 0xdd, 0x5d, 0x12, 0x2d, - 0x0f, 0x43, 0x6e, 0x80, 0x31, 0xd9, 0x9b, 0x81, 0x1d, 0xf4, 0xdf, 0x28, 0xf0, 0x1e, 0x28, 0xb6, - 0xa3, 0x5b, 0x8e, 0xee, 0x1d, 0xd2, 0x77, 0xa1, 0x12, 0xb2, 0x24, 0x1a, 0x1a, 0x5c, 0x5e, 0x3c, - 0x80, 0x99, 0x26, 0x2d, 0xe2, 0x02, 0xcb, 0x2f, 0x04, 0xf6, 0xc5, 0x46, 0xdb, 0x37, 0xd4, 0xb2, - 0x78, 0x9f, 0x65, 0x95, 0x57, 0x86, 0x46, 0xe7, 0xa5, 0xe3, 0x47, 0x67, 0x74, 0xb5, 0xfb, 0xbd, - 0xd3, 0x91, 0xc9, 0xc9, 0x82, 0x33, 0x9c, 0xbe, 0xc6, 0x0d, 0xcc, 0x51, 0x7b, 0xb4, 0x85, 0xa3, - 0x17, 0xd5, 0x85, 0x11, 0x69, 0x74, 0x61, 0xe4, 0x14, 0x2a, 0x5e, 0x86, 0xe9, 0x86, 0xea, 0x78, - 0x4d, 0xec, 0xbd, 0x8c, 0xd5, 0x16, 0x76, 0xa2, 0xab, 0xee, 0xb4, 0x58, 0x75, 0x11, 0x24, 0xe9, - 0xd2, 0xca, 0x56, 0x1d, 0xfa, 0xbb, 0xb8, 0x0f, 0x49, 0xfa, 0x3e, 0xa4, 0xbf, 0x22, 0x73, 0x04, - 0x5b, 0x91, 0x49, 0x2e, 0x3d, 0xf4, 0xb0, 0x2b, 0x8e, 0x11, 0xe8, 0x05, 0x7a, 0x41, 0xac, 0xab, - 0x89, 0xa3, 0xd7, 0x55, 0x1e, 0x88, 0x7c, 0x75, 0x35, 0x60, 0xaa, 0x42, 0x52, 0xf1, 0x5a, 0xcd, - 0x37, 0x24, 0x16, 0x18, 0x82, 0x36, 0x60, 0xc6, 0x56, 0x1d, 0x8f, 0x7e, 0x1a, 0xb2, 0x4f, 0x7b, - 0xc1, 0x63, 0x7d, 0xa9, 0x7f, 0xe6, 0x45, 0x3a, 0xcb, 0xef, 0x32, 0x6d, 0x87, 0x85, 0xc5, 0xff, - 0x98, 0x84, 0x14, 0x77, 0xc6, 0x47, 0x60, 0x8a, 0xbb, 0x95, 0x47, 0xe7, 0x43, 0x2b, 0xfd, 0x0b, - 0xd3, 0x8a, 0xbf, 0x80, 0x70, 0x3e, 0x81, 0x41, 0x8f, 0x43, 0x5a, 0xdb, 0x57, 0x75, 0x53, 0xd1, - 0x5b, 0xbc, 0x20, 0xcc, 0xbe, 0xf7, 0xee, 0xd2, 0x54, 0x95, 0xc8, 0xd6, 0x6a, 0xf2, 0x14, 0x6d, - 0x5c, 0x6b, 0x91, 0x4a, 0x60, 0x1f, 0xeb, 0xed, 0x7d, 0x8f, 0xcf, 0x30, 0x7e, 0x85, 0x5e, 0x84, - 0x24, 0x09, 0x08, 0xfe, 0xe1, 0xe0, 0x42, 0x5f, 0x85, 0xef, 0x6f, 0xa1, 0x2b, 0x69, 0x72, 0xe3, - 0x4f, 0xfe, 0xfb, 0xa5, 0x98, 0x4c, 0x11, 0xa8, 0x0a, 0xd3, 0x86, 0xea, 0x7a, 0x0a, 0x5d, 0xc1, - 0xc8, 0xed, 0x27, 0x29, 0xc5, 0xe9, 0x7e, 0x87, 0x70, 0xc7, 0x72, 0xd3, 0xb3, 0x04, 0xc5, 0x44, - 0x2d, 0x74, 0x16, 0x24, 0x4a, 0xa2, 0x59, 0x9d, 0x8e, 0xee, 0xb1, 0xda, 0x2a, 0x45, 0xfd, 0x9e, - 0x27, 0xf2, 0x2a, 0x15, 0xd3, 0x0a, 0xeb, 0x01, 0xc8, 0xd0, 0x4f, 0x95, 0xa8, 0x0a, 0x7b, 0x09, - 0x37, 0x4d, 0x04, 0xb4, 0xf1, 0x0c, 0xcc, 0x04, 0xf9, 0x91, 0xa9, 0xa4, 0x19, 0x4b, 0x20, 0xa6, - 0x8a, 0xcf, 0xc2, 0xbc, 0x89, 0x6f, 0xd3, 0xd7, 0x82, 0x23, 0xda, 0x19, 0xaa, 0x8d, 0x48, 0xdb, - 0x8d, 0x28, 0xe2, 0x31, 0xc8, 0x6b, 0xc2, 0xf9, 0x4c, 0x17, 0xa8, 0xee, 0xb4, 0x2f, 0xa5, 0x6a, - 0xa7, 0x21, 0xad, 0xda, 0x36, 0x53, 0xc8, 0xf2, 0xfc, 0x68, 0xdb, 0xb4, 0xe9, 0x49, 0x98, 0xa5, - 0x7d, 0x74, 0xb0, 0xdb, 0x35, 0x3c, 0x4e, 0x92, 0xa3, 0x3a, 0x33, 0xa4, 0x41, 0x66, 0x72, 0xaa, - 0xfb, 0x08, 0x4c, 0xe3, 0x9b, 0x7a, 0x0b, 0x9b, 0x1a, 0x66, 0x7a, 0xd3, 0x54, 0x2f, 0x27, 0x84, - 0x54, 0xe9, 0x09, 0xf0, 0xf3, 0x9e, 0x22, 0x72, 0x72, 0x9e, 0xf1, 0x09, 0x79, 0x99, 0x89, 0x8b, - 0x05, 0x48, 0xd6, 0x54, 0x4f, 0x25, 0x05, 0x86, 0x77, 0x9b, 0x2d, 0x34, 0x39, 0x99, 0xfc, 0x2c, - 0xbe, 0x1f, 0x87, 0xe4, 0x0d, 0xcb, 0xc3, 0xe8, 0xf9, 0x50, 0x01, 0x98, 0x1f, 0x14, 0xcf, 0x4d, - 0xbd, 0x6d, 0xe2, 0xd6, 0x86, 0xdb, 0x0e, 0xfd, 0x5f, 0x81, 0x20, 0x9c, 0xe2, 0x91, 0x70, 0x9a, - 0x87, 0x49, 0xc7, 0xea, 0x9a, 0x2d, 0xf1, 0xfe, 0x2a, 0xbd, 0x40, 0x75, 0x48, 0xfb, 0x51, 0x92, - 0x1c, 0x15, 0x25, 0x33, 0x24, 0x4a, 0x48, 0x0c, 0x73, 0x81, 0x3c, 0xb5, 0xcb, 0x83, 0xa5, 0x02, - 0x19, 0x3f, 0x79, 0xf1, 0x68, 0x1b, 0x2f, 0x60, 0x03, 0x18, 0x59, 0x4c, 0xfc, 0xb1, 0xf7, 0x9d, - 0xc7, 0x22, 0x4e, 0xf2, 0x1b, 0xb8, 0xf7, 0x22, 0x61, 0xc5, 0xff, 0xc7, 0xc1, 0x14, 0xed, 0x57, - 0x10, 0x56, 0xec, 0xff, 0x1c, 0x3c, 0x08, 0x19, 0x57, 0x6f, 0x9b, 0xaa, 0xd7, 0x75, 0x30, 0x8f, - 0xbc, 0x40, 0x50, 0xfc, 0x5a, 0x0c, 0x52, 0x2c, 0x92, 0x43, 0x7e, 0x8b, 0x0d, 0xf6, 0x5b, 0x7c, - 0x98, 0xdf, 0x12, 0xf7, 0xee, 0xb7, 0x32, 0x80, 0x6f, 0x8c, 0xcb, 0x3f, 0x3d, 0x1f, 0x50, 0x31, - 0x30, 0x13, 0x9b, 0x7a, 0x9b, 0x4f, 0xd4, 0x10, 0xa8, 0xf8, 0xef, 0x62, 0xa4, 0x88, 0xe5, 0xed, - 0xa8, 0x0c, 0xd3, 0xc2, 0x2e, 0x65, 0xcf, 0x50, 0xdb, 0x3c, 0x76, 0x1e, 0x1a, 0x6a, 0xdc, 0x55, - 0x43, 0x6d, 0xcb, 0x59, 0x6e, 0x0f, 0xb9, 0x18, 0x3c, 0x0e, 0xf1, 0x21, 0xe3, 0x10, 0x19, 0xf8, - 0xc4, 0xbd, 0x0d, 0x7c, 0x64, 0x88, 0x92, 0xbd, 0x43, 0xf4, 0xe5, 0x38, 0xdd, 0xcc, 0xd8, 0x96, - 0xab, 0x1a, 0x3f, 0x8c, 0x19, 0xf1, 0x00, 0x64, 0x6c, 0xcb, 0x50, 0x58, 0x0b, 0x7b, 0xaf, 0x3b, - 0x6d, 0x5b, 0x86, 0xdc, 0x37, 0xec, 0x93, 0xf7, 0x69, 0xba, 0xa4, 0xee, 0x83, 0xd7, 0xa6, 0x7a, - 0xbd, 0xe6, 0x40, 0x8e, 0xb9, 0x82, 0xaf, 0x65, 0xcf, 0x12, 0x1f, 0xd0, 0xc5, 0x31, 0xd6, 0xbf, - 0xf6, 0x32, 0xb3, 0x99, 0xa6, 0xcc, 0xf5, 0x08, 0x82, 0xa5, 0xfe, 0x41, 0xbb, 0xe0, 0x70, 0x58, - 0xca, 0x5c, 0xaf, 0xf8, 0x97, 0x62, 0x00, 0xeb, 0xc4, 0xb3, 0xb4, 0xbf, 0x64, 0x15, 0x72, 0xa9, - 0x09, 0x4a, 0xe4, 0xce, 0x8b, 0xc3, 0x06, 0x8d, 0xdf, 0x3f, 0xe7, 0x86, 0xed, 0xae, 0xc2, 0x74, - 0x10, 0x8c, 0x2e, 0x16, 0xc6, 0x2c, 0x1e, 0x51, 0x55, 0x37, 0xb1, 0x27, 0xe7, 0x6e, 0x86, 0xae, - 0x8a, 0xff, 0x24, 0x06, 0x19, 0x6a, 0xd3, 0x06, 0xf6, 0xd4, 0xc8, 0x18, 0xc6, 0xee, 0x7d, 0x0c, - 0x1f, 0x02, 0x60, 0x34, 0xae, 0xfe, 0x16, 0xe6, 0x91, 0x95, 0xa1, 0x92, 0xa6, 0xfe, 0x16, 0x46, - 0x17, 0x7d, 0x87, 0x27, 0x8e, 0x76, 0xb8, 0xa8, 0xba, 0xb9, 0xdb, 0x4f, 0xc1, 0x14, 0xfd, 0x57, - 0x4d, 0xb7, 0x5d, 0x5e, 0x48, 0xa7, 0xcc, 0x6e, 0x67, 0xfb, 0xb6, 0x5b, 0x7c, 0x13, 0xa6, 0xb6, - 0x6f, 0xb3, 0xb3, 0x91, 0x07, 0x20, 0xe3, 0x58, 0x16, 0x5f, 0x93, 0x59, 0x2d, 0x94, 0x26, 0x02, - 0xba, 0x04, 0x89, 0xf3, 0x80, 0x78, 0x70, 0x1e, 0x10, 0x1c, 0x68, 0x24, 0xc6, 0x3a, 0xd0, 0x78, - 0xf2, 0xb7, 0x62, 0x90, 0x0d, 0xe5, 0x07, 0xf4, 0x1c, 0x9c, 0xa8, 0xac, 0x6f, 0x55, 0xaf, 0x2b, - 0x6b, 0x35, 0xe5, 0xea, 0x7a, 0x79, 0x35, 0xf8, 0x72, 0x69, 0xe1, 0xe4, 0x9d, 0xbb, 0xcb, 0x28, - 0xa4, 0xbb, 0x63, 0xd2, 0x73, 0x7a, 0x74, 0x0e, 0xe6, 0xa3, 0x90, 0x72, 0xa5, 0x59, 0xdf, 0xdc, - 0x96, 0x62, 0x0b, 0x27, 0xee, 0xdc, 0x5d, 0x9e, 0x0d, 0x21, 0xca, 0xbb, 0x2e, 0x36, 0xbd, 0x7e, - 0x40, 0x75, 0x6b, 0x63, 0x63, 0x6d, 0x5b, 0x8a, 0xf7, 0x01, 0x78, 0xc2, 0x7e, 0x02, 0x66, 0xa3, - 0x80, 0xcd, 0xb5, 0x75, 0x29, 0xb1, 0x80, 0xee, 0xdc, 0x5d, 0xce, 0x87, 0xb4, 0x37, 0x75, 0x63, - 0x21, 0xfd, 0xf1, 0xcf, 0x2f, 0x4e, 0xfc, 0xd2, 0x2f, 0x2e, 0xc6, 0x48, 0xcf, 0xa6, 0x23, 0x39, - 0x02, 0x3d, 0x0d, 0xa7, 0x9a, 0x6b, 0xab, 0x9b, 0xf5, 0x9a, 0xb2, 0xd1, 0x5c, 0x15, 0x27, 0xdd, - 0xa2, 0x77, 0x33, 0x77, 0xee, 0x2e, 0x67, 0x79, 0x97, 0x86, 0x69, 0x37, 0xe4, 0xfa, 0x8d, 0xad, - 0xed, 0xba, 0x14, 0x63, 0xda, 0x0d, 0x07, 0xdf, 0xb4, 0x3c, 0xf6, 0xbf, 0xdc, 0x9e, 0x85, 0xd3, - 0x03, 0xb4, 0xfd, 0x8e, 0xcd, 0xde, 0xb9, 0xbb, 0x3c, 0xdd, 0x70, 0x30, 0x9b, 0x3f, 0x14, 0xb1, - 0x02, 0x85, 0x7e, 0xc4, 0x56, 0x63, 0xab, 0x59, 0x5e, 0x97, 0x96, 0x17, 0xa4, 0x3b, 0x77, 0x97, - 0x73, 0x22, 0x19, 0x12, 0xfd, 0xa0, 0x67, 0x1f, 0xe6, 0x8e, 0xe7, 0xfd, 0xa7, 0xe0, 0x51, 0x7e, - 0x06, 0xe8, 0x7a, 0xea, 0x81, 0x6e, 0xb6, 0xfd, 0xc3, 0x5b, 0x7e, 0xcd, 0x77, 0x3e, 0x27, 0xf9, - 0x39, 0xa3, 0x90, 0x8e, 0x38, 0xc2, 0x1d, 0xfa, 0xe4, 0x72, 0x61, 0xc4, 0x43, 0xbd, 0xd1, 0x5b, - 0xa7, 0xe1, 0xc7, 0xc3, 0x0b, 0x23, 0x0e, 0xa1, 0x17, 0x8e, 0xdc, 0xdc, 0x15, 0x3f, 0x11, 0x83, - 0xfc, 0xcb, 0xba, 0xeb, 0x59, 0x8e, 0xae, 0xa9, 0x06, 0xfd, 0x5e, 0xe9, 0xe2, 0xb8, 0xb9, 0xb5, - 0x67, 0xaa, 0xbf, 0x04, 0xa9, 0x9b, 0xaa, 0xc1, 0x92, 0x5a, 0xf8, 0x59, 0x40, 0xaf, 0xfb, 0x82, - 0xd4, 0x26, 0x08, 0x18, 0xac, 0xf8, 0xa5, 0x38, 0xcc, 0xd0, 0xc9, 0xe0, 0xb2, 0x7f, 0xc5, 0x45, - 0xf6, 0x58, 0x0d, 0x48, 0x3a, 0xaa, 0xc7, 0x0f, 0x0d, 0x2b, 0x3f, 0xc2, 0xcf, 0x81, 0x1f, 0x1f, - 0x7d, 0x9a, 0xbb, 0xd2, 0x7f, 0x54, 0x4c, 0x99, 0xd0, 0xab, 0x90, 0xee, 0xa8, 0xb7, 0x15, 0xca, - 0x1a, 0xbf, 0x0f, 0xac, 0x53, 0x1d, 0xf5, 0x36, 0xb1, 0x15, 0xb5, 0x60, 0x86, 0x10, 0x6b, 0xfb, - 0xaa, 0xd9, 0xc6, 0x8c, 0x3f, 0x71, 0x1f, 0xf8, 0xa7, 0x3b, 0xea, 0xed, 0x2a, 0xe5, 0x24, 0x77, - 0x29, 0xa5, 0x3f, 0xf5, 0xce, 0xd2, 0x04, 0x3d, 0x66, 0xff, 0xb5, 0x18, 0x40, 0xe0, 0x2e, 0xf4, - 0xff, 0x83, 0xa4, 0xf9, 0x57, 0xf4, 0xf6, 0x2e, 0x1f, 0xc0, 0x33, 0xc3, 0x06, 0xa2, 0xc7, 0xd9, - 0x6c, 0x61, 0xfe, 0xe6, 0xbb, 0x4b, 0x31, 0x79, 0x46, 0xeb, 0x19, 0x87, 0x3a, 0x64, 0xbb, 0x76, - 0x4b, 0xf5, 0xb0, 0x42, 0x37, 0x71, 0xf1, 0x63, 0x2c, 0xf2, 0xc0, 0x80, 0xa4, 0x29, 0x64, 0xfd, - 0x97, 0x62, 0x90, 0xad, 0x85, 0x1e, 0xf2, 0x15, 0x60, 0xaa, 0x63, 0x99, 0xfa, 0x01, 0x0f, 0xbb, - 0x8c, 0x2c, 0x2e, 0xd1, 0x02, 0xa4, 0xd9, 0x97, 0x9a, 0xde, 0xa1, 0x38, 0xf1, 0x14, 0xd7, 0x04, - 0x75, 0x0b, 0xef, 0xba, 0xba, 0xf0, 0xb5, 0x2c, 0x2e, 0xc9, 0xd6, 0xc5, 0xc5, 0x5a, 0xd7, 0xd1, - 0xbd, 0x43, 0x45, 0xb3, 0x4c, 0x4f, 0xd5, 0x3c, 0xfe, 0xcd, 0xdf, 0x8c, 0x90, 0x57, 0x99, 0x98, - 0x90, 0xb4, 0xb0, 0xa7, 0xea, 0x86, 0x5b, 0x60, 0x0f, 0xc2, 0xc4, 0x65, 0xc8, 0xdc, 0x5f, 0x4f, - 0x85, 0x8f, 0xa8, 0xaa, 0x20, 0x59, 0x36, 0x76, 0x22, 0x25, 0x25, 0x8b, 0xd0, 0xc2, 0x6f, 0x7e, - 0xe5, 0x99, 0x79, 0xee, 0x6e, 0x5e, 0x54, 0xb2, 0x97, 0x5a, 0xe5, 0x19, 0x81, 0x10, 0xb5, 0xe6, - 0xeb, 0x64, 0xc0, 0xc4, 0x7e, 0xcf, 0xee, 0xee, 0x06, 0xc7, 0x5a, 0xf3, 0x7d, 0x7e, 0x2d, 0x9b, - 0x87, 0x95, 0xc2, 0x37, 0x02, 0xea, 0xe0, 0x2c, 0xe9, 0x3a, 0x3e, 0x24, 0xa3, 0xc5, 0x79, 0x1a, - 0x94, 0x86, 0x94, 0x88, 0x6f, 0xaa, 0xba, 0x21, 0x3e, 0x40, 0x97, 0xf9, 0x15, 0x2a, 0x41, 0xca, - 0xf5, 0x54, 0xaf, 0xeb, 0xf2, 0x7f, 0x14, 0x57, 0x1c, 0x16, 0x19, 0x15, 0xcb, 0x6c, 0x35, 0xa9, - 0xa6, 0xcc, 0x11, 0x68, 0x1b, 0x52, 0x9e, 0x75, 0x80, 0x4d, 0xee, 0xa4, 0x63, 0x45, 0xf5, 0x80, - 0x67, 0x51, 0x8c, 0x0b, 0xb5, 0x41, 0x6a, 0x61, 0x03, 0xb7, 0x59, 0x41, 0xb4, 0xaf, 0x92, 0x7d, - 0x43, 0xea, 0x3e, 0xcc, 0x9a, 0x19, 0x9f, 0xb5, 0x49, 0x49, 0xd1, 0xf5, 0xe8, 0x63, 0x66, 0xf6, - 0x5f, 0x15, 0x1f, 0x19, 0xd6, 0xff, 0x50, 0x64, 0x8a, 0xc3, 0x84, 0xf0, 0x13, 0xe9, 0x27, 0x40, - 0xea, 0x9a, 0xbb, 0x96, 0x49, 0x3f, 0x13, 0xe5, 0xc5, 0x78, 0x9a, 0x96, 0x37, 0x33, 0xbe, 0xfc, - 0x65, 0x56, 0x95, 0x5f, 0x87, 0x7c, 0xa0, 0x4a, 0xe7, 0x4e, 0xe6, 0x18, 0x73, 0x67, 0xda, 0xc7, - 0x92, 0x56, 0xf4, 0x32, 0x40, 0x30, 0x31, 0xe9, 0xf1, 0x40, 0x76, 0xf8, 0x18, 0x06, 0xb3, 0x5b, - 0x6c, 0xb3, 0x02, 0x2c, 0x32, 0x60, 0xae, 0xa3, 0x9b, 0x8a, 0x8b, 0x8d, 0x3d, 0x85, 0xbb, 0x8a, - 0x50, 0x66, 0xef, 0xc3, 0xd0, 0xce, 0x76, 0x74, 0xb3, 0x89, 0x8d, 0xbd, 0x9a, 0x4f, 0x5b, 0xca, - 0x7d, 0xfc, 0x9d, 0xa5, 0x09, 0x3e, 0x97, 0x26, 0x8a, 0x0d, 0x7a, 0x44, 0xcd, 0xa7, 0x01, 0x76, - 0xd1, 0x45, 0xc8, 0xa8, 0xe2, 0x82, 0x1e, 0x1c, 0x1c, 0x35, 0x8d, 0x02, 0x55, 0x36, 0x3b, 0xdf, - 0xfe, 0xb7, 0xcb, 0xb1, 0xe2, 0x2f, 0xc6, 0x20, 0x55, 0xbb, 0xd1, 0x50, 0x75, 0x07, 0xd5, 0x61, - 0x36, 0x08, 0xa8, 0x71, 0xe7, 0x66, 0x10, 0x83, 0x62, 0x72, 0xd6, 0x87, 0xed, 0x1a, 0x8f, 0xa4, - 0xe9, 0xdd, 0x4f, 0xf6, 0x74, 0xbc, 0x0e, 0x53, 0xcc, 0x4a, 0x17, 0x95, 0x60, 0xd2, 0x26, 0x3f, - 0xf8, 0x89, 0xfc, 0xe2, 0xd0, 0x40, 0xa4, 0xfa, 0xfe, 0x09, 0x22, 0x81, 0x14, 0x7f, 0x10, 0x03, - 0xa8, 0xdd, 0xb8, 0xb1, 0xed, 0xe8, 0xb6, 0x81, 0xbd, 0xfb, 0xd5, 0xe3, 0x75, 0x38, 0x11, 0xda, - 0x9a, 0x38, 0xda, 0xd8, 0xbd, 0x9e, 0x0b, 0x36, 0x27, 0x8e, 0x36, 0x90, 0xad, 0xe5, 0x7a, 0x3e, - 0x5b, 0x62, 0x6c, 0xb6, 0x9a, 0xeb, 0x0d, 0x76, 0x63, 0x13, 0xb2, 0x41, 0xf7, 0x5d, 0x54, 0x83, - 0xb4, 0xc7, 0x7f, 0x73, 0x6f, 0x16, 0x87, 0x7b, 0x53, 0xc0, 0xb8, 0x47, 0x7d, 0x64, 0xf1, 0xff, - 0x10, 0xa7, 0xfa, 0x11, 0xfb, 0x87, 0x2b, 0x8c, 0x48, 0xee, 0xe5, 0xb9, 0xf1, 0x7e, 0x54, 0x14, - 0x9c, 0xab, 0xc7, 0xab, 0x1f, 0x8b, 0xc3, 0xdc, 0x8e, 0xc8, 0x36, 0x7f, 0x68, 0x3d, 0xd1, 0x80, - 0x29, 0x6c, 0x7a, 0x8e, 0x4e, 0x5d, 0x41, 0xc6, 0xfa, 0xd9, 0x61, 0x63, 0x3d, 0xa0, 0x2f, 0xf4, - 0xff, 0x15, 0x89, 0x73, 0x6d, 0x4e, 0xd3, 0xe3, 0x85, 0x7f, 0x13, 0x87, 0xc2, 0x30, 0x24, 0x3a, - 0x03, 0x33, 0x9a, 0x83, 0xa9, 0x40, 0x89, 0x1c, 0xae, 0xe5, 0x85, 0x98, 0x27, 0xfd, 0x0d, 0x20, - 0x05, 0x14, 0x09, 0x2c, 0xa2, 0x7a, 0xec, 0x8a, 0x29, 0x1f, 0x80, 0x69, 0xda, 0xc7, 0x30, 0xa3, - 0x9b, 0xba, 0xa7, 0xab, 0x86, 0xb2, 0xab, 0x1a, 0xaa, 0xa9, 0xdd, 0x4b, 0x65, 0xd9, 0x9f, 0xa8, - 0xf3, 0x9c, 0xb4, 0xc2, 0x38, 0xd1, 0x0d, 0x98, 0x12, 0xf4, 0xc9, 0xfb, 0x40, 0x2f, 0xc8, 0x42, - 0x55, 0xd4, 0xef, 0xc4, 0x61, 0x56, 0xc6, 0xad, 0x3f, 0x5a, 0x6e, 0xfd, 0x51, 0x00, 0x36, 0xe1, - 0x48, 0x1e, 0xbc, 0x07, 0xcf, 0xf6, 0x4f, 0xe0, 0x0c, 0xe3, 0xab, 0xb9, 0x5e, 0xc8, 0xb7, 0xdf, - 0x88, 0x43, 0x2e, 0xec, 0xdb, 0x3f, 0x02, 0xeb, 0x02, 0x5a, 0x0b, 0xb2, 0x41, 0x92, 0xff, 0xa7, - 0xd5, 0x21, 0xd9, 0xa0, 0x2f, 0xea, 0x8e, 0x4e, 0x03, 0xdf, 0x8b, 0x43, 0xaa, 0xa1, 0x3a, 0x6a, - 0xc7, 0x45, 0xd7, 0xfa, 0x0a, 0x38, 0x71, 0xca, 0xd6, 0xf7, 0xff, 0xb4, 0xf9, 0xa6, 0x9e, 0x85, - 0xdc, 0xa7, 0x06, 0xd4, 0x6f, 0x8f, 0x41, 0x9e, 0x6c, 0x11, 0x43, 0x0f, 0xe4, 0xe3, 0xf4, 0x31, - 0x23, 0xd9, 0xe3, 0x05, 0x4f, 0x83, 0xd0, 0x12, 0x64, 0x89, 0x5a, 0x90, 0xe8, 0x88, 0x0e, 0x74, - 0xd4, 0xdb, 0x75, 0x26, 0x41, 0xcf, 0x00, 0xda, 0xf7, 0x37, 0xed, 0x4a, 0xe0, 0x02, 0xa2, 0x37, - 0x1b, 0xb4, 0x08, 0xf5, 0x87, 0x00, 0x88, 0x15, 0x0a, 0x7b, 0xc9, 0x8b, 0xed, 0x71, 0x32, 0x44, - 0x52, 0xa3, 0x2f, 0x7a, 0xfd, 0x04, 0xab, 0x05, 0x7b, 0x76, 0x8f, 0xbc, 0x0c, 0x5f, 0x3f, 0x5e, - 0xa4, 0x7e, 0xef, 0xdd, 0xa5, 0x85, 0x43, 0xb5, 0x63, 0x94, 0x8a, 0x03, 0x28, 0x8b, 0xb4, 0x36, - 0x8c, 0xee, 0x3a, 0x43, 0x11, 0xfc, 0xf9, 0x18, 0xa0, 0x20, 0xe5, 0xca, 0xd8, 0xb5, 0xc9, 0xb6, - 0x86, 0x14, 0xbd, 0xa1, 0x0a, 0x35, 0x76, 0x74, 0xd1, 0x1b, 0xe0, 0x45, 0xd1, 0x1b, 0x9a, 0x11, - 0x97, 0x83, 0x04, 0x17, 0xe7, 0x63, 0x38, 0xe0, 0x0d, 0xbd, 0x95, 0xaa, 0xa5, 0x0b, 0x74, 0x5f, - 0x0e, 0x9b, 0x28, 0xfe, 0x4e, 0x0c, 0x4e, 0xf7, 0x45, 0x93, 0x6f, 0xec, 0x1f, 0x03, 0xe4, 0x84, - 0x1a, 0xf9, 0xbf, 0xcc, 0x63, 0x46, 0x1f, 0x3b, 0x38, 0x67, 0x9d, 0xbe, 0x5c, 0xf9, 0x61, 0xe5, - 0x68, 0xf6, 0xe6, 0xde, 0x3f, 0x8a, 0xc1, 0x7c, 0xd8, 0x18, 0xbf, 0x5b, 0x9b, 0x90, 0x0b, 0xdb, - 0xc2, 0x3b, 0xf4, 0xe8, 0x38, 0x1d, 0xe2, 0x7d, 0x89, 0xe0, 0xd1, 0x2b, 0xc1, 0xc4, 0x65, 0x87, - 0x45, 0xcf, 0x8d, 0xed, 0x1b, 0x61, 0x53, 0xef, 0x04, 0x4e, 0x8a, 0x2a, 0x26, 0xd9, 0xb0, 0x2c, - 0x03, 0xfd, 0x71, 0x98, 0x35, 0x2d, 0x4f, 0x21, 0x51, 0x8e, 0x5b, 0x0a, 0xdf, 0xb9, 0xb2, 0xec, - 0xf7, 0xca, 0xf1, 0x5c, 0xf6, 0x9d, 0x77, 0x97, 0xfa, 0xa9, 0x7a, 0xfc, 0x38, 0x63, 0x5a, 0x5e, - 0x85, 0xb6, 0x6f, 0xb3, 0x7d, 0xad, 0x03, 0xd3, 0xd1, 0x5b, 0xb3, 0x6c, 0xb9, 0x71, 0xec, 0x5b, - 0x4f, 0x1f, 0x75, 0xdb, 0xdc, 0x6e, 0xe8, 0x9e, 0xec, 0x9d, 0xa6, 0xdf, 0x7f, 0x67, 0x29, 0xf6, - 0xe4, 0x57, 0x63, 0x00, 0xc1, 0x16, 0x1e, 0x3d, 0x0d, 0xa7, 0x2a, 0x5b, 0x9b, 0x35, 0xa5, 0xb9, - 0x5d, 0xde, 0xde, 0x69, 0x46, 0xdf, 0x7c, 0x16, 0x67, 0xc2, 0xae, 0x8d, 0x35, 0x7d, 0x4f, 0xc7, - 0x2d, 0xf4, 0x38, 0xcc, 0x47, 0xb5, 0xc9, 0x55, 0xbd, 0x26, 0xc5, 0x16, 0x72, 0x77, 0xee, 0x2e, - 0xa7, 0x59, 0x75, 0x84, 0x5b, 0xe8, 0x2c, 0x9c, 0xe8, 0xd7, 0x5b, 0xdb, 0x5c, 0x95, 0xe2, 0x0b, - 0xd3, 0x77, 0xee, 0x2e, 0x67, 0xfc, 0x32, 0x0a, 0x15, 0x01, 0x85, 0x35, 0x39, 0x5f, 0x62, 0x01, - 0xee, 0xdc, 0x5d, 0x4e, 0x31, 0xb7, 0x2d, 0x24, 0x3f, 0xfe, 0xf9, 0xc5, 0x89, 0xca, 0xd5, 0xa1, - 0xa7, 0xbe, 0x4f, 0x1f, 0xe9, 0xb1, 0xdb, 0xfe, 0x49, 0x6e, 0xe4, 0xa8, 0xf7, 0xff, 0x06, 0x00, - 0x00, 0xff, 0xff, 0xdf, 0xc6, 0xe4, 0x92, 0x04, 0x66, 0x00, 0x00, + 0xde, 0x0b, 0x4f, 0xd0, 0xc2, 0x25, 0x4d, 0x04, 0xf4, 0x15, 0xf0, 0x39, 0x98, 0x54, 0xbb, 0xec, + 0x05, 0x86, 0x04, 0xa9, 0x68, 0xe8, 0x45, 0xe9, 0x15, 0x98, 0xe2, 0x8f, 0x51, 0x91, 0x04, 0x89, + 0x03, 0x7c, 0x48, 0xef, 0x93, 0x93, 0xc9, 0xbf, 0x68, 0x19, 0x26, 0xa9, 0xf1, 0xfc, 0x83, 0x97, + 0xe2, 0x72, 0x9f, 0xf5, 0xcb, 0xd4, 0x48, 0x99, 0xa9, 0x95, 0xae, 0x41, 0xba, 0x66, 0x75, 0x74, + 0xd3, 0x8a, 0xb2, 0x65, 0x18, 0x1b, 0xb5, 0xd9, 0xee, 0xf2, 0xa8, 0x90, 0xd9, 0x05, 0x3a, 0x09, + 0x29, 0xf6, 0x9d, 0x00, 0x7f, 0x09, 0x83, 0x5f, 0x95, 0xaa, 0x30, 0x45, 0xb9, 0xb7, 0x6c, 0x92, + 0xfc, 0xfd, 0x57, 0x32, 0x33, 0xfc, 0xab, 0x31, 0x4e, 0x1f, 0x0f, 0x8c, 0x45, 0x90, 0x6c, 0xa9, + 0x9e, 0xca, 0xfb, 0x4d, 0xff, 0x2f, 0x7d, 0x18, 0xd2, 0x9c, 0xc4, 0x45, 0xe7, 0x21, 0x61, 0xd9, + 0x2e, 0x7f, 0x8d, 0x62, 0x7e, 0x58, 0x57, 0xb6, 0xec, 0x4a, 0x92, 0xc4, 0x8c, 0x4c, 0x94, 0x2b, + 0xf2, 0xd0, 0xb0, 0x78, 0x31, 0x14, 0x16, 0xa1, 0x21, 0x0f, 0xfd, 0xcb, 0x86, 0xb4, 0x2f, 0x1c, + 0xfc, 0x60, 0xf9, 0x4c, 0x1c, 0x16, 0x42, 0xad, 0x37, 0xb1, 0xe3, 0xea, 0x96, 0xc9, 0x22, 0x8a, + 0x47, 0x0b, 0x0a, 0x19, 0xc9, 0xdb, 0x87, 0x84, 0xcb, 0x87, 0x20, 0xb1, 0x62, 0xdb, 0x68, 0x1e, + 0xd2, 0xf4, 0x5a, 0xb3, 0x58, 0xbc, 0x24, 0x65, 0xff, 0x9a, 0xb4, 0xb9, 0xd6, 0x9e, 0x77, 0x4b, + 0x75, 0xfc, 0x4f, 0xe9, 0xc4, 0x75, 0xe9, 0x32, 0x64, 0xaa, 0x96, 0xe9, 0x62, 0xd3, 0xed, 0xd2, + 0xca, 0x66, 0xd7, 0xb0, 0xb4, 0x03, 0xce, 0xc0, 0x2e, 0x88, 0xc3, 0x55, 0xdb, 0xa6, 0xc8, 0xa4, + 0x4c, 0xfe, 0x65, 0x73, 0xb6, 0xd2, 0x1c, 0xea, 0xa2, 0xcb, 0xc7, 0x77, 0x11, 0xef, 0xa4, 0xef, + 0xa3, 0xef, 0xc5, 0xe0, 0xc1, 0xfe, 0x09, 0x75, 0x80, 0x0f, 0xdd, 0xe3, 0xce, 0xa7, 0x1b, 0x90, + 0x69, 0xd0, 0xef, 0xd9, 0x5f, 0xc1, 0x87, 0x68, 0x1e, 0xa6, 0x70, 0xeb, 0xfc, 0x85, 0x0b, 0xcf, + 0x5d, 0x66, 0xd1, 0xfe, 0xf2, 0x84, 0x2c, 0x04, 0x68, 0x01, 0x32, 0x2e, 0xd6, 0xec, 0xf3, 0x17, + 0x2e, 0x1e, 0x3c, 0xc7, 0xc2, 0xeb, 0xe5, 0x09, 0x39, 0x10, 0x95, 0xd3, 0xa4, 0xd7, 0xdf, 0xfa, + 0xcc, 0x62, 0xac, 0x32, 0x09, 0x09, 0xb7, 0xdb, 0xf9, 0x40, 0x63, 0xe4, 0x93, 0x93, 0xb0, 0x14, + 0x46, 0xd2, 0xfa, 0xef, 0xa6, 0x6a, 0xe8, 0x2d, 0x35, 0xf8, 0x25, 0x02, 0x29, 0xe4, 0x03, 0xaa, + 0x31, 0x64, 0xa5, 0x38, 0xd2, 0x93, 0xa5, 0x5f, 0x8a, 0x41, 0xee, 0xba, 0x60, 0x6e, 0x62, 0x0f, + 0x5d, 0x01, 0xf0, 0xef, 0x24, 0xa6, 0xcd, 0x03, 0xcb, 0xbd, 0xf7, 0x5a, 0xf6, 0x31, 0x72, 0x48, + 0x1d, 0x5d, 0xa2, 0x81, 0x68, 0x5b, 0x2e, 0xff, 0xbc, 0x6a, 0x04, 0xd4, 0x57, 0x46, 0x4f, 0x03, + 0xa2, 0x19, 0x4e, 0xb9, 0x69, 0x79, 0xba, 0xd9, 0x56, 0x6c, 0xeb, 0x16, 0xff, 0x68, 0x35, 0x21, + 0x4b, 0xb4, 0xe5, 0x3a, 0x6d, 0x68, 0x10, 0x39, 0x31, 0x3a, 0xe3, 0xb3, 0x90, 0x62, 0x5d, 0x6d, + 0xb5, 0x1c, 0xec, 0xba, 0x3c, 0x89, 0x89, 0x4b, 0x74, 0x05, 0xa6, 0xec, 0xee, 0xae, 0x22, 0x32, + 0x46, 0xf6, 0xfc, 0x83, 0x83, 0xe6, 0xbf, 0x88, 0x0f, 0x9e, 0x01, 0x52, 0x76, 0x77, 0x97, 0x44, + 0xcb, 0xc3, 0x90, 0x1b, 0x60, 0x4c, 0xf6, 0x66, 0x60, 0x07, 0xfd, 0x19, 0x05, 0xde, 0x03, 0xc5, + 0x76, 0x74, 0xcb, 0xd1, 0xbd, 0x43, 0xfa, 0x2e, 0x54, 0x42, 0x96, 0x44, 0x43, 0x83, 0xcb, 0x4b, + 0x07, 0x50, 0x68, 0xd2, 0x22, 0x2e, 0xb0, 0xfc, 0x42, 0x60, 0x5f, 0x6c, 0xb4, 0x7d, 0x43, 0x2d, + 0x8b, 0xf7, 0x59, 0x56, 0x79, 0x75, 0x68, 0x74, 0x5e, 0x3a, 0x7e, 0x74, 0x46, 0x57, 0xbb, 0xdf, + 0x3b, 0x1d, 0x99, 0x9c, 0x2c, 0x38, 0xc3, 0xe9, 0x6b, 0xdc, 0xc0, 0x1c, 0xb5, 0x47, 0x9b, 0x3f, + 0x7a, 0x51, 0x9d, 0x1f, 0x91, 0x46, 0xe7, 0x47, 0x4e, 0xa1, 0xd2, 0x65, 0x98, 0x6e, 0xa8, 0x8e, + 0xd7, 0xc4, 0xde, 0xcb, 0x58, 0x6d, 0x61, 0x27, 0xba, 0xea, 0x4e, 0x8b, 0x55, 0x17, 0x41, 0x92, + 0x2e, 0xad, 0x6c, 0xd5, 0xa1, 0xff, 0x97, 0xf6, 0x21, 0x49, 0xdf, 0x87, 0xf4, 0x57, 0x64, 0x8e, + 0x60, 0x2b, 0x32, 0xc9, 0xa5, 0x87, 0x1e, 0x76, 0xc5, 0x31, 0x02, 0xbd, 0x40, 0x2f, 0x88, 0x75, + 0x35, 0x71, 0xf4, 0xba, 0xca, 0x03, 0x91, 0xaf, 0xae, 0x06, 0x4c, 0x55, 0x48, 0x2a, 0x5e, 0xab, + 0xf9, 0x86, 0xc4, 0x02, 0x43, 0xd0, 0x06, 0x14, 0x6c, 0xd5, 0xf1, 0xe8, 0xa7, 0x21, 0xfb, 0xb4, + 0x17, 0x3c, 0xd6, 0x17, 0xfb, 0x67, 0x5e, 0xa4, 0xb3, 0xfc, 0x2e, 0xd3, 0x76, 0x58, 0x58, 0xfa, + 0xcf, 0x49, 0x48, 0x71, 0x67, 0x7c, 0x08, 0xa6, 0xb8, 0x5b, 0x79, 0x74, 0x3e, 0xb4, 0xdc, 0xbf, + 0x30, 0x2d, 0xfb, 0x0b, 0x08, 0xe7, 0x13, 0x18, 0xf4, 0x38, 0xa4, 0xb5, 0x7d, 0x55, 0x37, 0x15, + 0xbd, 0xc5, 0x0b, 0xc2, 0xec, 0x7b, 0xef, 0x2e, 0x4e, 0x55, 0x89, 0x6c, 0xad, 0x26, 0x4f, 0xd1, + 0xc6, 0xb5, 0x16, 0xa9, 0x04, 0xf6, 0xb1, 0xde, 0xde, 0xf7, 0xf8, 0x0c, 0xe3, 0x57, 0xe8, 0x45, + 0x48, 0x92, 0x80, 0xe0, 0x1f, 0x0e, 0xce, 0xf7, 0x55, 0xf8, 0xfe, 0x16, 0xba, 0x92, 0x26, 0x37, + 0xfe, 0xf8, 0x7f, 0x5c, 0x8c, 0xc9, 0x14, 0x81, 0xaa, 0x30, 0x6d, 0xa8, 0xae, 0xa7, 0xd0, 0x15, + 0x8c, 0xdc, 0x7e, 0x92, 0x52, 0x9c, 0xee, 0x77, 0x08, 0x77, 0x2c, 0x37, 0x3d, 0x4b, 0x50, 0x4c, + 0xd4, 0x42, 0x67, 0x41, 0xa2, 0x24, 0x9a, 0xd5, 0xe9, 0xe8, 0x1e, 0xab, 0xad, 0x52, 0xd4, 0xef, + 0x79, 0x22, 0xaf, 0x52, 0x31, 0xad, 0xb0, 0x1e, 0x80, 0x0c, 0xfd, 0x54, 0x89, 0xaa, 0xb0, 0x97, + 0x70, 0xd3, 0x44, 0x40, 0x1b, 0xcf, 0x40, 0x21, 0xc8, 0x8f, 0x4c, 0x25, 0xcd, 0x58, 0x02, 0x31, + 0x55, 0x7c, 0x16, 0xe6, 0x4c, 0x7c, 0x9b, 0xbe, 0x16, 0x1c, 0xd1, 0xce, 0x50, 0x6d, 0x44, 0xda, + 0xae, 0x47, 0x11, 0x8f, 0x41, 0x5e, 0x13, 0xce, 0x67, 0xba, 0x40, 0x75, 0xa7, 0x7d, 0x29, 0x55, + 0x3b, 0x0d, 0x69, 0xd5, 0xb6, 0x99, 0x42, 0x96, 0xe7, 0x47, 0xdb, 0xa6, 0x4d, 0x4f, 0xc2, 0x0c, + 0xed, 0xa3, 0x83, 0xdd, 0xae, 0xe1, 0x71, 0x92, 0x1c, 0xd5, 0x29, 0x90, 0x06, 0x99, 0xc9, 0xa9, + 0xee, 0x23, 0x30, 0x8d, 0x6f, 0xea, 0x2d, 0x6c, 0x6a, 0x98, 0xe9, 0x4d, 0x53, 0xbd, 0x9c, 0x10, + 0x52, 0xa5, 0x27, 0xc0, 0xcf, 0x7b, 0x8a, 0xc8, 0xc9, 0x79, 0xc6, 0x27, 0xe4, 0x2b, 0x4c, 0x5c, + 0x2a, 0x42, 0xb2, 0xa6, 0x7a, 0x2a, 0x29, 0x30, 0xbc, 0xdb, 0x6c, 0xa1, 0xc9, 0xc9, 0xe4, 0xdf, + 0xd2, 0xb7, 0xe2, 0x90, 0xbc, 0x6e, 0x79, 0x18, 0x3d, 0x1f, 0x2a, 0x00, 0xf3, 0x83, 0xe2, 0xb9, + 0xa9, 0xb7, 0x4d, 0xdc, 0xda, 0x70, 0xdb, 0xa1, 0xdf, 0x15, 0x08, 0xc2, 0x29, 0x1e, 0x09, 0xa7, + 0x39, 0x98, 0x74, 0xac, 0xae, 0xd9, 0x12, 0xef, 0xaf, 0xd2, 0x0b, 0x54, 0x87, 0xb4, 0x1f, 0x25, + 0xc9, 0x51, 0x51, 0x52, 0x20, 0x51, 0x42, 0x62, 0x98, 0x0b, 0xe4, 0xa9, 0x5d, 0x1e, 0x2c, 0x15, + 0xc8, 0xf8, 0xc9, 0x8b, 0x47, 0xdb, 0x78, 0x01, 0x1b, 0xc0, 0xc8, 0x62, 0xe2, 0x8f, 0xbd, 0xef, + 0x3c, 0x16, 0x71, 0x92, 0xdf, 0xc0, 0xbd, 0x17, 0x09, 0x2b, 0xfe, 0x1b, 0x07, 0x53, 0xb4, 0x5f, + 0x41, 0x58, 0xb1, 0xdf, 0x39, 0x78, 0x10, 0x32, 0xae, 0xde, 0x36, 0x55, 0xaf, 0xeb, 0x60, 0x1e, + 0x79, 0x81, 0xa0, 0xf4, 0x95, 0x18, 0xa4, 0x58, 0x24, 0x87, 0xfc, 0x16, 0x1b, 0xec, 0xb7, 0xf8, + 0x30, 0xbf, 0x25, 0xee, 0xdd, 0x6f, 0x2b, 0x00, 0xbe, 0x31, 0x2e, 0xff, 0xf4, 0x7c, 0x40, 0xc5, + 0xc0, 0x4c, 0x6c, 0xea, 0x6d, 0x3e, 0x51, 0x43, 0xa0, 0xd2, 0x7f, 0x88, 0x91, 0x22, 0x96, 0xb7, + 0xa3, 0x15, 0x98, 0x16, 0x76, 0x29, 0x7b, 0x86, 0xda, 0xe6, 0xb1, 0xf3, 0xd0, 0x50, 0xe3, 0xae, + 0x1a, 0x6a, 0x5b, 0xce, 0x72, 0x7b, 0xc8, 0xc5, 0xe0, 0x71, 0x88, 0x0f, 0x19, 0x87, 0xc8, 0xc0, + 0x27, 0xee, 0x6d, 0xe0, 0x23, 0x43, 0x94, 0xec, 0x1d, 0xa2, 0x2f, 0xc6, 0xe9, 0x66, 0xc6, 0xb6, + 0x5c, 0xd5, 0xf8, 0x7e, 0xcc, 0x88, 0x07, 0x20, 0x63, 0x5b, 0x86, 0xc2, 0x5a, 0xd8, 0x7b, 0xdd, + 0x69, 0xdb, 0x32, 0xe4, 0xbe, 0x61, 0x9f, 0xbc, 0x4f, 0xd3, 0x25, 0x75, 0x1f, 0xbc, 0x36, 0xd5, + 0xeb, 0x35, 0x07, 0x72, 0xcc, 0x15, 0x7c, 0x2d, 0x7b, 0x96, 0xf8, 0x80, 0x2e, 0x8e, 0xb1, 0xfe, + 0xb5, 0x97, 0x99, 0xcd, 0x34, 0x65, 0xae, 0x47, 0x10, 0x2c, 0xf5, 0x0f, 0xda, 0x05, 0x87, 0xc3, + 0x52, 0xe6, 0x7a, 0xa5, 0xbf, 0x16, 0x03, 0x58, 0x27, 0x9e, 0xa5, 0xfd, 0x25, 0xab, 0x90, 0x4b, + 0x4d, 0x50, 0x22, 0x77, 0x5e, 0x18, 0x36, 0x68, 0xfc, 0xfe, 0x39, 0x37, 0x6c, 0x77, 0x15, 0xa6, + 0x83, 0x60, 0x74, 0xb1, 0x30, 0x66, 0xe1, 0x88, 0xaa, 0xba, 0x89, 0x3d, 0x39, 0x77, 0x33, 0x74, + 0x55, 0xfa, 0x67, 0x31, 0xc8, 0x50, 0x9b, 0x36, 0xb0, 0xa7, 0x46, 0xc6, 0x30, 0x76, 0xef, 0x63, + 0xf8, 0x10, 0x00, 0xa3, 0x71, 0xf5, 0xb7, 0x30, 0x8f, 0xac, 0x0c, 0x95, 0x34, 0xf5, 0xb7, 0x30, + 0xba, 0xe8, 0x3b, 0x3c, 0x71, 0xb4, 0xc3, 0x45, 0xd5, 0xcd, 0xdd, 0x7e, 0x0a, 0xa6, 0xe8, 0x4f, + 0x35, 0xdd, 0x76, 0x79, 0x21, 0x9d, 0x32, 0xbb, 0x9d, 0xed, 0xdb, 0x6e, 0xe9, 0x4d, 0x98, 0xda, + 0xbe, 0xcd, 0xce, 0x46, 0x1e, 0x80, 0x8c, 0x63, 0x59, 0x7c, 0x4d, 0x66, 0xb5, 0x50, 0x9a, 0x08, + 0xe8, 0x12, 0x24, 0xce, 0x03, 0xe2, 0xc1, 0x79, 0x40, 0x70, 0xa0, 0x91, 0x18, 0xeb, 0x40, 0xe3, + 0xc9, 0xdf, 0x8a, 0x41, 0x36, 0x94, 0x1f, 0xd0, 0x73, 0x70, 0xa2, 0xb2, 0xbe, 0x55, 0x7d, 0x45, + 0x59, 0xab, 0x29, 0x57, 0xd7, 0x57, 0x56, 0x83, 0x2f, 0x97, 0xe6, 0x4f, 0xde, 0xb9, 0xbb, 0x84, + 0x42, 0xba, 0x3b, 0x26, 0x3d, 0xa7, 0x47, 0xe7, 0x60, 0x2e, 0x0a, 0x59, 0xa9, 0x34, 0xeb, 0x9b, + 0xdb, 0x52, 0x6c, 0xfe, 0xc4, 0x9d, 0xbb, 0x4b, 0x33, 0x21, 0xc4, 0xca, 0xae, 0x8b, 0x4d, 0xaf, + 0x1f, 0x50, 0xdd, 0xda, 0xd8, 0x58, 0xdb, 0x96, 0xe2, 0x7d, 0x00, 0x9e, 0xb0, 0x9f, 0x80, 0x99, + 0x28, 0x60, 0x73, 0x6d, 0x5d, 0x4a, 0xcc, 0xa3, 0x3b, 0x77, 0x97, 0xf2, 0x21, 0xed, 0x4d, 0xdd, + 0x98, 0x4f, 0x7f, 0xf4, 0xb3, 0x0b, 0x13, 0xbf, 0xf0, 0xf3, 0x0b, 0x31, 0xd2, 0xb3, 0xe9, 0x48, + 0x8e, 0x40, 0x4f, 0xc3, 0xa9, 0xe6, 0xda, 0xea, 0x66, 0xbd, 0xa6, 0x6c, 0x34, 0x57, 0xc5, 0x49, + 0xb7, 0xe8, 0x5d, 0xe1, 0xce, 0xdd, 0xa5, 0x2c, 0xef, 0xd2, 0x30, 0xed, 0x86, 0x5c, 0xbf, 0xbe, + 0xb5, 0x5d, 0x97, 0x62, 0x4c, 0xbb, 0xe1, 0xe0, 0x9b, 0x96, 0xc7, 0x7e, 0xcb, 0xed, 0x59, 0x38, + 0x3d, 0x40, 0xdb, 0xef, 0xd8, 0xcc, 0x9d, 0xbb, 0x4b, 0xd3, 0x0d, 0x07, 0xb3, 0xf9, 0x43, 0x11, + 0xcb, 0x50, 0xec, 0x47, 0x6c, 0x35, 0xb6, 0x9a, 0x2b, 0xeb, 0xd2, 0xd2, 0xbc, 0x74, 0xe7, 0xee, + 0x52, 0x4e, 0x24, 0x43, 0xa2, 0x1f, 0xf4, 0xec, 0x83, 0xdc, 0xf1, 0xfc, 0xca, 0x39, 0x78, 0x94, + 0x9f, 0x01, 0xba, 0x9e, 0x7a, 0xa0, 0x9b, 0x6d, 0xff, 0xf0, 0x96, 0x5f, 0xf3, 0x9d, 0xcf, 0x49, + 0x7e, 0xce, 0x28, 0xa4, 0x23, 0x8e, 0x70, 0x87, 0x3e, 0xb9, 0x9c, 0x1f, 0xf1, 0x50, 0x6f, 0xf4, + 0xd6, 0x69, 0xf8, 0xf1, 0xf0, 0xfc, 0x88, 0x43, 0xe8, 0xf9, 0x23, 0x37, 0x77, 0xa5, 0x8f, 0xc5, + 0x20, 0xff, 0xb2, 0xee, 0x7a, 0x96, 0xa3, 0x6b, 0xaa, 0x41, 0xbf, 0x57, 0xba, 0x38, 0x6e, 0x6e, + 0xed, 0x99, 0xea, 0x2f, 0x41, 0xea, 0xa6, 0x6a, 0xb0, 0xa4, 0x16, 0x7e, 0x16, 0xd0, 0xeb, 0xbe, + 0x20, 0xb5, 0x09, 0x02, 0x06, 0x2b, 0xfd, 0x72, 0x1c, 0x4e, 0x93, 0xed, 0x47, 0x83, 0x6e, 0x8b, + 0x65, 0xfe, 0x89, 0x13, 0xb3, 0xee, 0x10, 0x55, 0x41, 0xb2, 0x6c, 0xec, 0x44, 0x96, 0x71, 0x76, + 0x3a, 0x5c, 0xfc, 0xcd, 0x2f, 0x3d, 0x33, 0xc7, 0xef, 0xc5, 0x17, 0x72, 0xf6, 0x22, 0xa1, 0x5c, + 0x10, 0x08, 0xb1, 0xbe, 0x5f, 0x87, 0x82, 0x65, 0xb4, 0x14, 0x52, 0x51, 0x2b, 0x76, 0x77, 0x37, + 0x38, 0x49, 0x98, 0xeb, 0x5b, 0xaf, 0x56, 0xcc, 0xc3, 0x4a, 0xf1, 0x6b, 0x01, 0x73, 0xb0, 0x7d, + 0x27, 0xc6, 0x4d, 0x5b, 0x46, 0x8b, 0xdb, 0x7a, 0x80, 0x0f, 0x09, 0xaf, 0x89, 0x6f, 0x45, 0x78, + 0x13, 0xf7, 0xc6, 0x6b, 0xe2, 0x5b, 0x21, 0xde, 0xc7, 0x20, 0xef, 0x10, 0x3f, 0xd0, 0x55, 0x87, + 0xae, 0xf9, 0x2c, 0x8b, 0x4e, 0x73, 0xe9, 0xcb, 0x54, 0x58, 0xfa, 0x42, 0x1c, 0x0a, 0x34, 0x8d, + 0xb8, 0xec, 0x47, 0xcc, 0xc8, 0xee, 0xb4, 0x01, 0x49, 0x47, 0xf5, 0xf8, 0x71, 0x6b, 0xe5, 0x87, + 0xf8, 0x09, 0xfa, 0xe3, 0xa3, 0xcf, 0xc1, 0x97, 0xfb, 0x0f, 0xd9, 0x29, 0x13, 0x7a, 0x0d, 0xd2, + 0x1d, 0xf5, 0xb6, 0x42, 0x59, 0xe3, 0xf7, 0x81, 0x75, 0xaa, 0xa3, 0xde, 0x26, 0xb6, 0xa2, 0x16, + 0x14, 0x08, 0xb1, 0xb6, 0xaf, 0x9a, 0x6d, 0xcc, 0xf8, 0x13, 0xf7, 0x81, 0x7f, 0xba, 0xa3, 0xde, + 0xae, 0x52, 0x4e, 0x72, 0x97, 0x72, 0xfa, 0x13, 0xef, 0x2c, 0x4e, 0xd0, 0x07, 0x14, 0xbf, 0x16, + 0x03, 0x08, 0xdc, 0x85, 0xfe, 0x24, 0x48, 0x9a, 0x7f, 0x45, 0x6f, 0xef, 0xf2, 0xd0, 0x3f, 0x33, + 0x2c, 0x84, 0x7b, 0x9c, 0xcd, 0x4a, 0x9a, 0xaf, 0xbf, 0xbb, 0x18, 0x93, 0x0b, 0x5a, 0xcf, 0x38, + 0xd4, 0x21, 0xdb, 0xb5, 0x5b, 0xaa, 0x87, 0x15, 0xba, 0xfd, 0x8d, 0x1f, 0xa3, 0x3c, 0x02, 0x06, + 0x24, 0x4d, 0x21, 0xeb, 0xbf, 0x10, 0x83, 0x6c, 0x2d, 0xf4, 0x78, 0xb4, 0x08, 0x53, 0x1d, 0xcb, + 0xd4, 0x0f, 0xf8, 0x84, 0xcd, 0xc8, 0xe2, 0x12, 0xcd, 0x43, 0x9a, 0x7d, 0xe3, 0xea, 0x1d, 0x8a, + 0xb3, 0x62, 0x71, 0x4d, 0x50, 0xb7, 0xf0, 0xae, 0xab, 0x0b, 0x5f, 0xcb, 0xe2, 0x92, 0x6c, 0xfa, + 0x5c, 0xac, 0x75, 0x1d, 0xdd, 0x3b, 0x24, 0x01, 0xed, 0xa9, 0x9a, 0xc7, 0xbf, 0x96, 0x2c, 0x08, + 0x79, 0x95, 0x89, 0x09, 0x49, 0x0b, 0x7b, 0xaa, 0x6e, 0xb8, 0x45, 0xf6, 0x08, 0x51, 0x5c, 0x86, + 0xcc, 0xfd, 0xf5, 0x54, 0xf8, 0x70, 0xef, 0xbe, 0xcc, 0xe2, 0xd7, 0xc9, 0x80, 0x89, 0x9d, 0xf2, + 0x1f, 0x6a, 0x1a, 0x17, 0x7c, 0x1e, 0x3e, 0xe1, 0x4e, 0x42, 0xea, 0x4d, 0x55, 0x37, 0xc4, 0xa7, + 0xfb, 0x32, 0xbf, 0x42, 0x65, 0x48, 0xb9, 0x9e, 0xea, 0x75, 0x5d, 0xfe, 0x13, 0x7b, 0xa5, 0x61, + 0x91, 0x51, 0xb1, 0xcc, 0x56, 0x93, 0x6a, 0xca, 0x1c, 0x81, 0xb6, 0x21, 0xe5, 0x59, 0x07, 0xd8, + 0xe4, 0x4e, 0x3a, 0x56, 0x54, 0x0f, 0x78, 0x8a, 0xc7, 0xb8, 0x50, 0x1b, 0xa4, 0x16, 0x36, 0x70, + 0x9b, 0x95, 0x92, 0xfb, 0x2a, 0xd9, 0x71, 0xa5, 0xee, 0xc3, 0xac, 0x29, 0xf8, 0xac, 0x4d, 0x4a, + 0x8a, 0x5e, 0x89, 0x3e, 0xa0, 0x67, 0xbf, 0x47, 0xf9, 0xc8, 0xb0, 0xfe, 0x87, 0x22, 0x53, 0x1c, + 0xc3, 0x84, 0x9f, 0xe5, 0x3f, 0x01, 0x52, 0xd7, 0xdc, 0xb5, 0x4c, 0xfa, 0x81, 0x2d, 0x4f, 0x69, + 0x69, 0x9a, 0xd2, 0x0a, 0xbe, 0x9c, 0x25, 0x35, 0xf4, 0x0a, 0xe4, 0x03, 0x55, 0x3a, 0x77, 0x32, + 0xc7, 0x98, 0x3b, 0xd3, 0x3e, 0x96, 0xb4, 0xa2, 0x97, 0x01, 0x82, 0x89, 0x49, 0x0f, 0x56, 0xb2, + 0xc3, 0xc7, 0x30, 0x98, 0xdd, 0x62, 0x83, 0x1a, 0x60, 0x91, 0x01, 0xb3, 0x1d, 0xdd, 0x54, 0x5c, + 0x6c, 0xec, 0x29, 0xdc, 0x55, 0x84, 0x32, 0x7b, 0x1f, 0x86, 0x76, 0xa6, 0xa3, 0x9b, 0x4d, 0x6c, + 0xec, 0xd5, 0x7c, 0xda, 0x72, 0xee, 0xa3, 0xef, 0x2c, 0x4e, 0xf0, 0xb9, 0x34, 0x51, 0x6a, 0xd0, + 0xc3, 0x7d, 0x3e, 0x0d, 0xb0, 0x8b, 0x2e, 0x42, 0x46, 0x15, 0x17, 0xf4, 0xc8, 0xe5, 0xa8, 0x69, + 0x14, 0xa8, 0xb2, 0xd9, 0xf9, 0xf6, 0xbf, 0x5f, 0x8a, 0x95, 0x7e, 0x3e, 0x06, 0xa9, 0xda, 0xf5, + 0x86, 0xaa, 0x3b, 0xa8, 0x0e, 0x33, 0x41, 0x40, 0x8d, 0x3b, 0x37, 0x83, 0x18, 0x14, 0x93, 0xb3, + 0x3e, 0x6c, 0xbf, 0x7d, 0x24, 0x4d, 0xef, 0x4e, 0xbc, 0xa7, 0xe3, 0x75, 0x98, 0x62, 0x56, 0xba, + 0xa8, 0x0c, 0x93, 0x36, 0xf9, 0x87, 0x3f, 0xcb, 0x58, 0x18, 0x1a, 0x88, 0x54, 0xdf, 0x3f, 0x7b, + 0x25, 0x90, 0xd2, 0xf7, 0x62, 0x00, 0xb5, 0xeb, 0xd7, 0xb7, 0x1d, 0xdd, 0x36, 0xb0, 0x77, 0xbf, + 0x7a, 0xbc, 0x0e, 0x27, 0x42, 0x9b, 0x3a, 0x47, 0x1b, 0xbb, 0xd7, 0xb3, 0xc1, 0xb6, 0xce, 0xd1, + 0x06, 0xb2, 0xb5, 0x5c, 0xcf, 0x67, 0x4b, 0x8c, 0xcd, 0x56, 0x73, 0xbd, 0xc1, 0x6e, 0x6c, 0x42, + 0x36, 0xe8, 0xbe, 0x8b, 0x6a, 0x90, 0xf6, 0xf8, 0xff, 0xdc, 0x9b, 0xa5, 0xe1, 0xde, 0x14, 0x30, + 0xee, 0x51, 0x1f, 0x59, 0xfa, 0x7f, 0xc4, 0xa9, 0x7e, 0xc4, 0xfe, 0xf1, 0x0a, 0x23, 0x92, 0x7b, + 0x79, 0x6e, 0xbc, 0x1f, 0x15, 0x05, 0xe7, 0xea, 0xf1, 0xea, 0x47, 0xe2, 0x30, 0xbb, 0x23, 0xb2, + 0xcd, 0x1f, 0x5b, 0x4f, 0x34, 0x60, 0x0a, 0x9b, 0x9e, 0xa3, 0x53, 0x57, 0x90, 0xb1, 0x7e, 0x76, + 0xd8, 0x58, 0x0f, 0xe8, 0x0b, 0xfd, 0xa5, 0x27, 0xf1, 0x44, 0x80, 0xd3, 0xf4, 0x78, 0xe1, 0xdf, + 0xc5, 0xa1, 0x38, 0x0c, 0x89, 0xce, 0x40, 0x41, 0x73, 0x30, 0x15, 0x28, 0x91, 0x63, 0xc9, 0xbc, + 0x10, 0xf3, 0xa4, 0xbf, 0x01, 0xa4, 0x80, 0x22, 0x81, 0x45, 0x54, 0x8f, 0x5d, 0x31, 0xe5, 0x03, + 0x30, 0x4d, 0xfb, 0x18, 0x0a, 0xba, 0xa9, 0x7b, 0xba, 0x6a, 0x28, 0xbb, 0xaa, 0xa1, 0x9a, 0xda, + 0xbd, 0x54, 0x96, 0xfd, 0x89, 0x3a, 0xcf, 0x49, 0x2b, 0x8c, 0x13, 0x5d, 0x87, 0x29, 0x41, 0x9f, + 0xbc, 0x0f, 0xf4, 0x82, 0x2c, 0x54, 0x45, 0xfd, 0x4e, 0x1c, 0x66, 0x64, 0xdc, 0xfa, 0xc1, 0x72, + 0xeb, 0x0f, 0x03, 0xb0, 0x09, 0x47, 0xf2, 0xe0, 0x3d, 0x78, 0xb6, 0x7f, 0x02, 0x67, 0x18, 0x5f, + 0xcd, 0xf5, 0x42, 0xbe, 0xfd, 0x5a, 0x1c, 0x72, 0x61, 0xdf, 0xfe, 0x00, 0xac, 0x0b, 0x68, 0x2d, + 0xc8, 0x06, 0x49, 0xfe, 0x1b, 0xb5, 0x43, 0xb2, 0x41, 0x5f, 0xd4, 0x1d, 0x9d, 0x06, 0x3e, 0x9a, + 0x84, 0x54, 0x43, 0x75, 0xd4, 0x8e, 0x8b, 0xae, 0xf5, 0x15, 0x70, 0xe2, 0x7c, 0xb2, 0xef, 0x97, + 0xc8, 0xf9, 0x71, 0x08, 0x0b, 0xb9, 0x4f, 0x0c, 0xa8, 0xdf, 0x1e, 0x83, 0x3c, 0xd9, 0x22, 0x86, + 0x5e, 0x65, 0x88, 0xd3, 0x07, 0xb4, 0x64, 0x8f, 0x17, 0x3c, 0x47, 0x43, 0x8b, 0x90, 0x25, 0x6a, + 0x41, 0xa2, 0x23, 0x3a, 0xd0, 0x51, 0x6f, 0xd7, 0x99, 0x04, 0x3d, 0x03, 0x68, 0xdf, 0x3f, 0xee, + 0x50, 0x02, 0x17, 0x10, 0xbd, 0x99, 0xa0, 0x45, 0xa8, 0x3f, 0x04, 0x40, 0xac, 0x50, 0xd8, 0xeb, + 0x71, 0x6c, 0x8f, 0x93, 0x21, 0x92, 0x1a, 0x7d, 0x45, 0xee, 0xc7, 0x58, 0x2d, 0xd8, 0xb3, 0x7b, + 0xe4, 0x65, 0xf8, 0xfa, 0xf1, 0x22, 0xf5, 0x0f, 0xde, 0x5d, 0x9c, 0x3f, 0x54, 0x3b, 0x46, 0xb9, + 0x34, 0x80, 0xb2, 0x44, 0x6b, 0xc3, 0xe8, 0xae, 0x13, 0x95, 0x61, 0x9e, 0x6e, 0x9b, 0xf9, 0xa1, + 0x83, 0x72, 0x80, 0x0f, 0x15, 0x87, 0x9f, 0x9a, 0xb0, 0xdf, 0x8d, 0x4f, 0xca, 0x27, 0xc9, 0x1e, + 0xb8, 0xef, 0x4c, 0xc5, 0x45, 0x37, 0xa0, 0x18, 0x3a, 0xac, 0xf0, 0x61, 0xca, 0x1e, 0xc6, 0xfc, + 0x37, 0xb2, 0x4f, 0x2f, 0x0f, 0x78, 0x7b, 0x71, 0xb9, 0x6a, 0xe9, 0xa2, 0x28, 0x3e, 0xa1, 0xf9, + 0xe7, 0x14, 0x82, 0xf7, 0x2a, 0x0e, 0xe7, 0xac, 0xcf, 0xc6, 0x00, 0x05, 0x0b, 0x81, 0x8c, 0x5d, + 0x9b, 0x6c, 0xb6, 0x48, 0x29, 0x1e, 0xaa, 0x9b, 0x63, 0x47, 0x97, 0xe2, 0x01, 0x5e, 0x94, 0xe2, + 0xa1, 0x79, 0x7a, 0x39, 0x48, 0xbb, 0xf1, 0xf1, 0x6c, 0xee, 0xcb, 0xac, 0x13, 0xa5, 0xdf, 0x89, + 0xc1, 0xe9, 0xbe, 0x18, 0xf7, 0x8d, 0xfd, 0x53, 0x80, 0x9c, 0x50, 0x23, 0xff, 0x09, 0x44, 0x66, + 0xf4, 0xb1, 0xa7, 0xcc, 0x8c, 0xd3, 0x97, 0xc1, 0x3f, 0xa8, 0x95, 0x83, 0xbd, 0x89, 0xf9, 0x4f, + 0x62, 0x30, 0x17, 0x36, 0xc6, 0xef, 0xd6, 0x26, 0xe4, 0xc2, 0xb6, 0xf0, 0x0e, 0x3d, 0x3a, 0x4e, + 0x87, 0x78, 0x5f, 0x22, 0x78, 0xf4, 0x6a, 0x90, 0x4e, 0xd8, 0xe1, 0xdf, 0x73, 0x63, 0xfb, 0x46, + 0xd8, 0xd4, 0x9b, 0x56, 0x92, 0xa2, 0xb6, 0x4a, 0x36, 0x2c, 0xcb, 0x40, 0x7f, 0x1a, 0x66, 0x4c, + 0xcb, 0x53, 0xc8, 0xdc, 0xc3, 0x2d, 0x85, 0xef, 0xa7, 0x59, 0x4e, 0x7e, 0xf5, 0x78, 0x2e, 0xfb, + 0xf6, 0xbb, 0x8b, 0xfd, 0x54, 0x3d, 0x7e, 0x2c, 0x98, 0x96, 0x57, 0xa1, 0xed, 0xdb, 0x6c, 0xb7, + 0xed, 0xc0, 0x74, 0xf4, 0xd6, 0x2c, 0x87, 0x6f, 0x1c, 0xfb, 0xd6, 0xd3, 0x47, 0xdd, 0x36, 0xb7, + 0x1b, 0xba, 0x27, 0x7b, 0x47, 0xed, 0xf7, 0xdf, 0x59, 0x8c, 0x3d, 0xf9, 0xe5, 0x18, 0x40, 0x70, + 0xb0, 0x80, 0x9e, 0x86, 0x53, 0x95, 0xad, 0xcd, 0x9a, 0xd2, 0xdc, 0x5e, 0xd9, 0xde, 0x69, 0x46, + 0xdf, 0x64, 0x17, 0x67, 0xfc, 0xae, 0x8d, 0x35, 0x7d, 0x4f, 0xc7, 0x2d, 0xf4, 0x38, 0xcc, 0x45, + 0xb5, 0xc9, 0x55, 0xbd, 0x26, 0xc5, 0xe6, 0x73, 0x77, 0xee, 0x2e, 0xa5, 0x59, 0xcd, 0x86, 0x5b, + 0xe8, 0x2c, 0x9c, 0xe8, 0xd7, 0x5b, 0xdb, 0x5c, 0x95, 0xe2, 0xf3, 0xd3, 0x77, 0xee, 0x2e, 0x65, + 0xfc, 0xe2, 0x0e, 0x95, 0x00, 0x85, 0x35, 0x39, 0x5f, 0x62, 0x1e, 0xee, 0xdc, 0x5d, 0x4a, 0x31, + 0xb7, 0xcd, 0x27, 0x3f, 0xfa, 0xd9, 0x85, 0x89, 0xca, 0xd5, 0xa1, 0xa7, 0xf8, 0x4f, 0x1f, 0xe9, + 0xb1, 0xdb, 0xfe, 0xc9, 0x7c, 0xe4, 0xe8, 0xfe, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x13, 0x5c, + 0x16, 0x16, 0xd4, 0x67, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) @@ -1937,6 +2039,12 @@ func (this *Params) Equal(that interface{}) bool { if !this.MinCommissionRate.Equal(that1.MinCommissionRate) { return false } + if this.MaxConsPubKeyRotations != that1.MaxConsPubKeyRotations { + return false + } + if !this.ConsPubkeyRotationFee.Equal(&that1.ConsPubkeyRotationFee) { + return false + } return true } func (this *RedelegationEntryResponse) Equal(that interface{}) bool { @@ -2040,6 +2148,65 @@ func (m *HistoricalInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ConsPubKeyRotationHistory) 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 *ConsPubKeyRotationHistory) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConsPubKeyRotationHistory) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.RotatedHeight != 0 { + i = encodeVarintStaking(dAtA, i, uint64(m.RotatedHeight)) + i-- + dAtA[i] = 0x20 + } + if m.NewConsPubkey != nil { + { + size, err := m.NewConsPubkey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.OldConsPubkey != nil { + { + size, err := m.OldConsPubkey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.OperatorAddress) > 0 { + i -= len(m.OperatorAddress) + copy(dAtA[i:], m.OperatorAddress) + i = encodeVarintStaking(dAtA, i, uint64(len(m.OperatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *CommissionRates) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2113,12 +2280,12 @@ func (m *Commission) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - n2, err2 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.UpdateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.UpdateTime):]) - if err2 != nil { - return 0, err2 + n4, err4 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.UpdateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.UpdateTime):]) + if err4 != nil { + return 0, err4 } - i -= n2 - i = encodeVarintStaking(dAtA, i, uint64(n2)) + i -= n4 + i = encodeVarintStaking(dAtA, i, uint64(n4)) i-- dAtA[i] = 0x12 { @@ -2232,12 +2399,12 @@ func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x52 - n5, err5 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.UnbondingTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.UnbondingTime):]) - if err5 != nil { - return 0, err5 + n7, err7 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.UnbondingTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.UnbondingTime):]) + if err7 != nil { + return 0, err7 } - i -= n5 - i = encodeVarintStaking(dAtA, i, uint64(n5)) + i -= n7 + i = encodeVarintStaking(dAtA, i, uint64(n7)) i-- dAtA[i] = 0x4a if m.UnbondingHeight != 0 { @@ -2637,12 +2804,12 @@ func (m *UnbondingDelegationEntry) MarshalToSizedBuffer(dAtA []byte) (int, error } i-- dAtA[i] = 0x1a - n8, err8 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CompletionTime):]) - if err8 != nil { - return 0, err8 + n10, err10 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CompletionTime):]) + if err10 != nil { + return 0, err10 } - i -= n8 - i = encodeVarintStaking(dAtA, i, uint64(n8)) + i -= n10 + i = encodeVarintStaking(dAtA, i, uint64(n10)) i-- dAtA[i] = 0x12 if m.CreationHeight != 0 { @@ -2693,12 +2860,12 @@ func (m *RedelegationEntry) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - n9, err9 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CompletionTime):]) - if err9 != nil { - return 0, err9 + n11, err11 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CompletionTime):]) + if err11 != nil { + return 0, err11 } - i -= n9 - i = encodeVarintStaking(dAtA, i, uint64(n9)) + i -= n11 + i = encodeVarintStaking(dAtA, i, uint64(n11)) i-- dAtA[i] = 0x12 if m.CreationHeight != 0 { @@ -2787,6 +2954,21 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.ConsPubkeyRotationFee.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + if m.MaxConsPubKeyRotations != 0 { + i = encodeVarintStaking(dAtA, i, uint64(m.MaxConsPubKeyRotations)) + i-- + dAtA[i] = 0x38 + } { size := m.MinCommissionRate.Size() i -= size @@ -2819,12 +3001,12 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x10 } - n10, err10 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.UnbondingTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.UnbondingTime):]) - if err10 != nil { - return 0, err10 + n13, err13 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.UnbondingTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.UnbondingTime):]) + if err13 != nil { + return 0, err13 } - i -= n10 - i = encodeVarintStaking(dAtA, i, uint64(n10)) + i -= n13 + i = encodeVarintStaking(dAtA, i, uint64(n13)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -3034,6 +3216,30 @@ func (m *HistoricalInfo) Size() (n int) { return n } +func (m *ConsPubKeyRotationHistory) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OperatorAddress) + if l > 0 { + n += 1 + l + sovStaking(uint64(l)) + } + if m.OldConsPubkey != nil { + l = m.OldConsPubkey.Size() + n += 1 + l + sovStaking(uint64(l)) + } + if m.NewConsPubkey != nil { + l = m.NewConsPubkey.Size() + n += 1 + l + sovStaking(uint64(l)) + } + if m.RotatedHeight != 0 { + n += 1 + sovStaking(uint64(m.RotatedHeight)) + } + return n +} + func (m *CommissionRates) Size() (n int) { if m == nil { return 0 @@ -3340,6 +3546,11 @@ func (m *Params) Size() (n int) { } l = m.MinCommissionRate.Size() n += 1 + l + sovStaking(uint64(l)) + if m.MaxConsPubKeyRotations != 0 { + n += 1 + sovStaking(uint64(m.MaxConsPubKeyRotations)) + } + l = m.ConsPubkeyRotationFee.Size() + n += 1 + l + sovStaking(uint64(l)) return n } @@ -3540,6 +3751,179 @@ func (m *HistoricalInfo) Unmarshal(dAtA []byte) error { } return nil } +func (m *ConsPubKeyRotationHistory) 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 ErrIntOverflowStaking + } + 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: ConsPubKeyRotationHistory: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConsPubKeyRotationHistory: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OperatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OperatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OldConsPubkey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OldConsPubkey == nil { + m.OldConsPubkey = &types1.Any{} + } + if err := m.OldConsPubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewConsPubkey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NewConsPubkey == nil { + m.NewConsPubkey = &types1.Any{} + } + if err := m.NewConsPubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RotatedHeight", wireType) + } + m.RotatedHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RotatedHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipStaking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *CommissionRates) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -5906,6 +6290,58 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxConsPubKeyRotations", wireType) + } + m.MaxConsPubKeyRotations = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxConsPubKeyRotations |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsPubkeyRotationFee", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ConsPubkeyRotationFee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipStaking(dAtA[iNdEx:]) diff --git a/x/staking/types/tx.pb.go b/x/staking/types/tx.pb.go index 040c6a9233f4..fc405cc24197 100644 --- a/x/staking/types/tx.pb.go +++ b/x/staking/types/tx.pb.go @@ -535,6 +535,102 @@ func (m *MsgCancelUnbondingDelegationResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCancelUnbondingDelegationResponse proto.InternalMessageInfo +type MsgRotateConsPubKey struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + NewPubKey *types.Any `protobuf:"bytes,3,opt,name=new_pub_key,json=newPubKey,proto3" json:"new_pub_key,omitempty"` +} + +func (m *MsgRotateConsPubKey) Reset() { *m = MsgRotateConsPubKey{} } +func (m *MsgRotateConsPubKey) String() string { return proto.CompactTextString(m) } +func (*MsgRotateConsPubKey) ProtoMessage() {} +func (*MsgRotateConsPubKey) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{12} +} +func (m *MsgRotateConsPubKey) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRotateConsPubKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRotateConsPubKey.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 *MsgRotateConsPubKey) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRotateConsPubKey.Merge(m, src) +} +func (m *MsgRotateConsPubKey) XXX_Size() int { + return m.Size() +} +func (m *MsgRotateConsPubKey) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRotateConsPubKey.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRotateConsPubKey proto.InternalMessageInfo + +func (m *MsgRotateConsPubKey) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +func (m *MsgRotateConsPubKey) GetValidatorAddress() string { + if m != nil { + return m.ValidatorAddress + } + return "" +} + +func (m *MsgRotateConsPubKey) GetNewPubKey() *types.Any { + if m != nil { + return m.NewPubKey + } + return nil +} + +type MsgRotateConsPubKeyResponse struct { +} + +func (m *MsgRotateConsPubKeyResponse) Reset() { *m = MsgRotateConsPubKeyResponse{} } +func (m *MsgRotateConsPubKeyResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRotateConsPubKeyResponse) ProtoMessage() {} +func (*MsgRotateConsPubKeyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0926ef28816b35ab, []int{13} +} +func (m *MsgRotateConsPubKeyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRotateConsPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRotateConsPubKeyResponse.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 *MsgRotateConsPubKeyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRotateConsPubKeyResponse.Merge(m, src) +} +func (m *MsgRotateConsPubKeyResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRotateConsPubKeyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRotateConsPubKeyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRotateConsPubKeyResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgCreateValidator)(nil), "cosmos.staking.v1beta1.MsgCreateValidator") proto.RegisterType((*MsgCreateValidatorResponse)(nil), "cosmos.staking.v1beta1.MsgCreateValidatorResponse") @@ -548,71 +644,78 @@ func init() { proto.RegisterType((*MsgUndelegateResponse)(nil), "cosmos.staking.v1beta1.MsgUndelegateResponse") proto.RegisterType((*MsgCancelUnbondingDelegation)(nil), "cosmos.staking.v1beta1.MsgCancelUnbondingDelegation") proto.RegisterType((*MsgCancelUnbondingDelegationResponse)(nil), "cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse") + proto.RegisterType((*MsgRotateConsPubKey)(nil), "cosmos.staking.v1beta1.MsgRotateConsPubKey") + proto.RegisterType((*MsgRotateConsPubKeyResponse)(nil), "cosmos.staking.v1beta1.MsgRotateConsPubKeyResponse") } func init() { proto.RegisterFile("cosmos/staking/v1beta1/tx.proto", fileDescriptor_0926ef28816b35ab) } var fileDescriptor_0926ef28816b35ab = []byte{ - // 937 bytes of a gzipped FileDescriptorProto + // 1010 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xf6, 0xc6, 0x4e, 0x28, 0x13, 0xb5, 0x69, 0x37, 0x09, 0x38, 0xab, 0xca, 0xae, 0xdc, 0xd2, - 0x46, 0x85, 0xac, 0x69, 0x28, 0x02, 0x55, 0xbd, 0xd4, 0x75, 0x2b, 0xaa, 0x62, 0x09, 0x6d, 0x28, - 0x07, 0x84, 0x64, 0xcd, 0xee, 0x4e, 0x26, 0x23, 0xef, 0xce, 0xb8, 0x3b, 0xe3, 0xa8, 0xbe, 0x72, - 0xe2, 0x46, 0x25, 0xfe, 0x40, 0x7f, 0x00, 0x42, 0x1c, 0xfa, 0x23, 0x2a, 0x4e, 0x51, 0x4f, 0x88, - 0x43, 0x81, 0xe4, 0x00, 0x3f, 0x00, 0x71, 0x46, 0x3b, 0x3b, 0x3b, 0xfe, 0x58, 0x7b, 0xb3, 0x41, - 0xe9, 0x01, 0x71, 0xf2, 0x6a, 0xe6, 0x79, 0x9f, 0x99, 0x79, 0xde, 0x67, 0xde, 0x77, 0x0c, 0xea, - 0x1e, 0xe3, 0x21, 0xe3, 0x4d, 0x2e, 0x60, 0x8f, 0x50, 0xdc, 0xdc, 0xbf, 0xe1, 0x22, 0x01, 0x6f, - 0x34, 0xc5, 0x13, 0xbb, 0x1f, 0x31, 0xc1, 0xcc, 0xb7, 0x12, 0x80, 0xad, 0x00, 0xb6, 0x02, 0x58, - 0x1b, 0x98, 0x31, 0x1c, 0xa0, 0xa6, 0x44, 0xb9, 0x83, 0xdd, 0x26, 0xa4, 0xc3, 0x24, 0xc4, 0xaa, - 0x4f, 0x4f, 0x09, 0x12, 0x22, 0x2e, 0x60, 0xd8, 0x57, 0x80, 0x35, 0xcc, 0x30, 0x93, 0x9f, 0xcd, - 0xf8, 0x4b, 0x8d, 0x6e, 0x24, 0x2b, 0x75, 0x93, 0x09, 0xb5, 0x6c, 0x32, 0x55, 0x53, 0xbb, 0x74, - 0x21, 0x47, 0x7a, 0x8b, 0x1e, 0x23, 0x54, 0xcd, 0x5f, 0x99, 0x73, 0x8a, 0x74, 0xd3, 0x09, 0xea, - 0x6d, 0x85, 0x0a, 0x79, 0x8c, 0x88, 0x7f, 0x92, 0x89, 0xc6, 0xef, 0x15, 0x60, 0x76, 0x38, 0xbe, - 0x1b, 0x21, 0x28, 0xd0, 0x17, 0x30, 0x20, 0x3e, 0x14, 0x2c, 0x32, 0x1f, 0x82, 0x65, 0x1f, 0x71, - 0x2f, 0x22, 0x7d, 0x41, 0x18, 0xad, 0x1a, 0x97, 0x8c, 0xcd, 0xe5, 0xed, 0xcb, 0xf6, 0x6c, 0x41, - 0xec, 0xf6, 0x08, 0xda, 0xaa, 0xbc, 0x78, 0x55, 0x2f, 0x39, 0xe3, 0xd1, 0x66, 0x07, 0x00, 0x8f, - 0x85, 0x21, 0xe1, 0x3c, 0xe6, 0x5a, 0x90, 0x5c, 0xd7, 0xe6, 0x71, 0xdd, 0xd5, 0x48, 0x07, 0x0a, - 0xc4, 0x15, 0xdf, 0x18, 0x81, 0x19, 0x80, 0xd5, 0x90, 0xd0, 0x2e, 0x47, 0xc1, 0x6e, 0xd7, 0x47, - 0x01, 0xc2, 0x50, 0xee, 0xb1, 0x7c, 0xc9, 0xd8, 0x7c, 0xb3, 0x75, 0x3b, 0x86, 0xff, 0xf2, 0xaa, - 0x7e, 0x15, 0x13, 0xb1, 0x37, 0x70, 0x6d, 0x8f, 0x85, 0x4a, 0x4f, 0xf5, 0xb3, 0xc5, 0xfd, 0x5e, - 0x53, 0x0c, 0xfb, 0x88, 0xdb, 0x0f, 0xa8, 0x78, 0xf9, 0x7c, 0x0b, 0xa8, 0x8d, 0x3c, 0xa0, 0xc2, - 0xb9, 0x10, 0x12, 0xba, 0x83, 0x82, 0xdd, 0xb6, 0xa6, 0x35, 0xef, 0x81, 0x0b, 0x6a, 0x11, 0x16, - 0x75, 0xa1, 0xef, 0x47, 0x88, 0xf3, 0x6a, 0x45, 0xae, 0x55, 0x7d, 0xf9, 0x7c, 0x6b, 0x4d, 0x45, - 0xdf, 0x49, 0x66, 0x76, 0x44, 0x44, 0x28, 0x76, 0xce, 0xeb, 0x10, 0x35, 0x1e, 0xd3, 0xec, 0xa7, - 0xea, 0x6a, 0x9a, 0xc5, 0xe3, 0x68, 0x74, 0x48, 0x4a, 0x73, 0x1f, 0x2c, 0xf5, 0x07, 0x6e, 0x0f, - 0x0d, 0xab, 0x4b, 0x52, 0xc6, 0x35, 0x3b, 0x31, 0x9c, 0x9d, 0x1a, 0xce, 0xbe, 0x43, 0x87, 0xad, - 0xea, 0x4f, 0x23, 0x46, 0x2f, 0x1a, 0xf6, 0x05, 0xb3, 0x3f, 0x1b, 0xb8, 0x0f, 0xd1, 0xd0, 0x51, - 0xd1, 0xe6, 0x87, 0x60, 0x71, 0x1f, 0x06, 0x03, 0x54, 0x7d, 0x43, 0xd2, 0x6c, 0xa4, 0xd9, 0x88, - 0x5d, 0x36, 0x96, 0x0a, 0x92, 0xe6, 0x33, 0x41, 0xdf, 0xba, 0xf9, 0xcd, 0xb3, 0x7a, 0xe9, 0xcf, - 0x67, 0xf5, 0xd2, 0xd7, 0x7f, 0xfc, 0x78, 0x3d, 0xab, 0x8b, 0x1c, 0xcd, 0x1c, 0xb3, 0x71, 0x11, - 0x58, 0x59, 0x8b, 0x39, 0x88, 0xf7, 0x19, 0xe5, 0xa8, 0xf1, 0x5d, 0x19, 0x9c, 0xef, 0x70, 0x7c, - 0xcf, 0x27, 0xe2, 0x35, 0xf9, 0x6f, 0xa6, 0xf6, 0x0b, 0x27, 0xd6, 0x1e, 0x82, 0x95, 0x91, 0x0b, - 0xbb, 0x11, 0x14, 0x48, 0x79, 0xee, 0xe3, 0x82, 0x7e, 0x6b, 0x23, 0x6f, 0xcc, 0x6f, 0x6d, 0xe4, - 0x39, 0xe7, 0xbc, 0x09, 0xb7, 0x9b, 0x7b, 0xb3, 0xad, 0x5d, 0x39, 0xd1, 0x32, 0x45, 0x6c, 0x7d, - 0xab, 0x36, 0x91, 0xc9, 0x6c, 0xce, 0x2c, 0x50, 0x9d, 0x4e, 0x8a, 0xce, 0xd8, 0x5f, 0x06, 0x58, - 0xee, 0x70, 0xac, 0xd8, 0xd0, 0xec, 0x2b, 0x62, 0x9c, 0xce, 0x15, 0x39, 0x79, 0x9a, 0x3e, 0x02, - 0x4b, 0x30, 0x64, 0x03, 0x2a, 0x64, 0x76, 0x0a, 0x78, 0x5b, 0xc1, 0xa7, 0x24, 0xc9, 0x9c, 0xa8, - 0xb1, 0x0e, 0x56, 0xc7, 0x4e, 0xad, 0xd5, 0x38, 0x58, 0x90, 0x15, 0xb4, 0x85, 0x30, 0xa1, 0x0e, - 0xf2, 0x4f, 0x59, 0x94, 0x4f, 0xc1, 0xfa, 0x48, 0x14, 0x1e, 0x79, 0x85, 0x85, 0x59, 0xd5, 0x61, - 0x3b, 0x91, 0x37, 0x93, 0xcd, 0xe7, 0x42, 0xb3, 0x95, 0x0b, 0xb3, 0xb5, 0xb9, 0xc8, 0x2a, 0x5d, - 0x39, 0x5d, 0xa5, 0x7b, 0xb2, 0x60, 0x4c, 0x29, 0x9a, 0x0a, 0x6e, 0x76, 0xe4, 0x3d, 0xec, 0x07, - 0x28, 0x36, 0x72, 0x37, 0x6e, 0xb0, 0xaa, 0x3e, 0x58, 0x99, 0x62, 0xf8, 0x79, 0xda, 0x7d, 0x5b, - 0x67, 0xe2, 0x0d, 0x3c, 0xfd, 0xb5, 0x6e, 0xc8, 0x3b, 0xa7, 0x82, 0xe3, 0xe9, 0xc6, 0xdf, 0x06, - 0x38, 0xdb, 0xe1, 0xf8, 0x11, 0xf5, 0xff, 0x67, 0x7e, 0xde, 0x05, 0xeb, 0x13, 0xe7, 0x7e, 0x5d, - 0x02, 0xff, 0xb0, 0x00, 0x2e, 0xc6, 0xf5, 0x1f, 0x52, 0x0f, 0x05, 0x8f, 0xa8, 0xcb, 0xa8, 0x4f, - 0x28, 0x3e, 0xae, 0xc5, 0xfe, 0xe7, 0xf4, 0x36, 0xaf, 0x81, 0x15, 0x2f, 0xee, 0x71, 0xb1, 0x68, - 0x7b, 0x88, 0xe0, 0xbd, 0xe4, 0x5e, 0x94, 0x9d, 0x73, 0xe9, 0xf0, 0x27, 0x72, 0xf4, 0xd8, 0xc4, - 0x5c, 0x05, 0x57, 0xf2, 0xf4, 0x4a, 0xf3, 0xb4, 0xfd, 0xfd, 0x22, 0x28, 0x77, 0x38, 0x36, 0x1f, - 0x83, 0x95, 0xe9, 0xf7, 0xdb, 0xf5, 0x79, 0xad, 0x32, 0xdb, 0x88, 0xad, 0xed, 0xe2, 0x58, 0x6d, - 0x91, 0x1e, 0x38, 0x3b, 0xd9, 0xb0, 0x37, 0x73, 0x48, 0x26, 0x90, 0xd6, 0xfb, 0x45, 0x91, 0x7a, - 0xb1, 0xaf, 0xc0, 0x19, 0xdd, 0x6b, 0x2e, 0xe7, 0x44, 0xa7, 0x20, 0xeb, 0xdd, 0x02, 0x20, 0xcd, - 0xfe, 0x18, 0xac, 0x4c, 0xd7, 0xee, 0x3c, 0xf5, 0xa6, 0xb0, 0xb9, 0xea, 0xcd, 0xab, 0x60, 0x2e, - 0x00, 0x63, 0xe5, 0xe6, 0x9d, 0x1c, 0x86, 0x11, 0xcc, 0xda, 0x2a, 0x04, 0xd3, 0x6b, 0x7c, 0x6b, - 0x80, 0x8d, 0xf9, 0x57, 0xee, 0x66, 0x5e, 0xce, 0xe7, 0x45, 0x59, 0xb7, 0xff, 0x4d, 0x54, 0xba, - 0xa3, 0xd6, 0xfd, 0x17, 0x87, 0x35, 0xe3, 0xe0, 0xb0, 0x66, 0xfc, 0x76, 0x58, 0x33, 0x9e, 0x1e, - 0xd5, 0x4a, 0x07, 0x47, 0xb5, 0xd2, 0xcf, 0x47, 0xb5, 0xd2, 0x97, 0xef, 0xe5, 0xbe, 0x6a, 0x9e, - 0xe8, 0xff, 0x36, 0xf2, 0x7d, 0xe3, 0x2e, 0xc9, 0xea, 0xf3, 0xc1, 0x3f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x48, 0x6a, 0x50, 0xaf, 0xc0, 0x0d, 0x00, 0x00, + 0x18, 0xf6, 0xc6, 0xae, 0x69, 0xdf, 0xa8, 0x4d, 0xba, 0x49, 0xc0, 0x59, 0x8a, 0x5d, 0xb9, 0xa5, + 0x8d, 0x0a, 0x59, 0xb7, 0x69, 0x11, 0xa8, 0xea, 0xa5, 0x8e, 0x5b, 0x51, 0x15, 0x23, 0xb4, 0xa1, + 0x1c, 0x10, 0x92, 0xb5, 0x1f, 0x93, 0xcd, 0xca, 0xbb, 0x33, 0xdb, 0x9d, 0x71, 0x5a, 0x5f, 0x39, + 0x71, 0xa3, 0x12, 0x7f, 0xa0, 0xe2, 0x07, 0x20, 0x0e, 0xfd, 0x11, 0x15, 0xa7, 0xa8, 0x27, 0xc4, + 0x21, 0x40, 0x72, 0x80, 0x1f, 0x80, 0x38, 0xa3, 0xdd, 0x9d, 0x1d, 0x7f, 0xac, 0xbd, 0xd9, 0x54, + 0xce, 0x01, 0xf5, 0xe4, 0xd5, 0xcc, 0xf3, 0x3e, 0xef, 0xcc, 0xf3, 0x7e, 0xcc, 0x6b, 0xa8, 0x99, + 0x84, 0x7a, 0x84, 0x36, 0x28, 0xd3, 0xbb, 0x0e, 0xb6, 0x1b, 0xbb, 0x37, 0x0c, 0xc4, 0xf4, 0x1b, + 0x0d, 0xf6, 0x54, 0xf5, 0x03, 0xc2, 0x88, 0xfc, 0x76, 0x0c, 0x50, 0x39, 0x40, 0xe5, 0x00, 0x65, + 0xd5, 0x26, 0xc4, 0x76, 0x51, 0x23, 0x42, 0x19, 0xbd, 0xed, 0x86, 0x8e, 0xfb, 0xb1, 0x89, 0x52, + 0x1b, 0xdf, 0x62, 0x8e, 0x87, 0x28, 0xd3, 0x3d, 0x9f, 0x03, 0x96, 0x6d, 0x62, 0x93, 0xe8, 0xb3, + 0x11, 0x7e, 0xf1, 0xd5, 0xd5, 0xd8, 0x53, 0x27, 0xde, 0xe0, 0x6e, 0xe3, 0xad, 0x2a, 0x3f, 0xa5, + 0xa1, 0x53, 0x24, 0x8e, 0x68, 0x12, 0x07, 0xf3, 0xfd, 0xcb, 0x53, 0x6e, 0x91, 0x1c, 0x3a, 0x46, + 0xbd, 0xc3, 0x51, 0x1e, 0x0d, 0x11, 0xe1, 0x4f, 0xbc, 0x51, 0xff, 0xb3, 0x04, 0x72, 0x9b, 0xda, + 0x9b, 0x01, 0xd2, 0x19, 0xfa, 0x4a, 0x77, 0x1d, 0x4b, 0x67, 0x24, 0x90, 0x1f, 0xc2, 0xbc, 0x85, + 0xa8, 0x19, 0x38, 0x3e, 0x73, 0x08, 0xae, 0x48, 0x17, 0xa5, 0xb5, 0xf9, 0x8d, 0x4b, 0xea, 0x64, + 0x41, 0xd4, 0xd6, 0x00, 0xda, 0x2c, 0xbd, 0xdc, 0xaf, 0x15, 0xb4, 0x61, 0x6b, 0xb9, 0x0d, 0x60, + 0x12, 0xcf, 0x73, 0x28, 0x0d, 0xb9, 0xe6, 0x22, 0xae, 0xab, 0xd3, 0xb8, 0x36, 0x05, 0x52, 0xd3, + 0x19, 0xa2, 0x9c, 0x6f, 0x88, 0x40, 0x76, 0x61, 0xc9, 0x73, 0x70, 0x87, 0x22, 0x77, 0xbb, 0x63, + 0x21, 0x17, 0xd9, 0x7a, 0x74, 0xc6, 0xe2, 0x45, 0x69, 0xed, 0x4c, 0xf3, 0x4e, 0x08, 0xff, 0x6d, + 0xbf, 0x76, 0xc5, 0x76, 0xd8, 0x4e, 0xcf, 0x50, 0x4d, 0xe2, 0x71, 0x3d, 0xf9, 0xcf, 0x3a, 0xb5, + 0xba, 0x0d, 0xd6, 0xf7, 0x11, 0x55, 0x1f, 0x60, 0xf6, 0xea, 0xc5, 0x3a, 0xf0, 0x83, 0x3c, 0xc0, + 0x4c, 0x3b, 0xef, 0x39, 0x78, 0x0b, 0xb9, 0xdb, 0x2d, 0x41, 0x2b, 0xdf, 0x83, 0xf3, 0xdc, 0x09, + 0x09, 0x3a, 0xba, 0x65, 0x05, 0x88, 0xd2, 0x4a, 0x29, 0xf2, 0x55, 0x79, 0xf5, 0x62, 0x7d, 0x99, + 0x5b, 0xdf, 0x8d, 0x77, 0xb6, 0x58, 0xe0, 0x60, 0x5b, 0x5b, 0x14, 0x26, 0x7c, 0x3d, 0xa4, 0xd9, + 0x4d, 0xd4, 0x15, 0x34, 0xa7, 0x8e, 0xa2, 0x11, 0x26, 0x09, 0xcd, 0x7d, 0x28, 0xfb, 0x3d, 0xa3, + 0x8b, 0xfa, 0x95, 0x72, 0x24, 0xe3, 0xb2, 0x1a, 0x27, 0x9c, 0x9a, 0x24, 0x9c, 0x7a, 0x17, 0xf7, + 0x9b, 0x95, 0x5f, 0x06, 0x8c, 0x66, 0xd0, 0xf7, 0x19, 0x51, 0xbf, 0xe8, 0x19, 0x0f, 0x51, 0x5f, + 0xe3, 0xd6, 0xf2, 0x47, 0x70, 0x6a, 0x57, 0x77, 0x7b, 0xa8, 0xf2, 0x56, 0x44, 0xb3, 0x9a, 0x44, + 0x23, 0xcc, 0xb2, 0xa1, 0x50, 0x38, 0x49, 0x3c, 0x63, 0xf4, 0xed, 0x5b, 0xdf, 0x3d, 0xaf, 0x15, + 0xfe, 0x7e, 0x5e, 0x2b, 0x7c, 0xfb, 0xd7, 0xcf, 0xd7, 0xd2, 0xba, 0x44, 0xab, 0xa9, 0x6b, 0xd6, + 0x2f, 0x80, 0x92, 0x4e, 0x31, 0x0d, 0x51, 0x9f, 0x60, 0x8a, 0xea, 0x3f, 0x14, 0x61, 0xb1, 0x4d, + 0xed, 0x7b, 0x96, 0xc3, 0x4e, 0x28, 0xff, 0x26, 0x6a, 0x3f, 0x77, 0x6c, 0xed, 0x75, 0x58, 0x18, + 0x64, 0x61, 0x27, 0xd0, 0x19, 0xe2, 0x39, 0xf7, 0x49, 0xce, 0x7c, 0x6b, 0x21, 0x73, 0x28, 0xdf, + 0x5a, 0xc8, 0xd4, 0xce, 0x99, 0x23, 0xd9, 0x2e, 0xef, 0x4c, 0x4e, 0xed, 0xd2, 0xb1, 0xdc, 0xe4, + 0x49, 0xeb, 0xdb, 0xd5, 0x91, 0x48, 0xa6, 0x63, 0xa6, 0x40, 0x65, 0x3c, 0x28, 0x22, 0x62, 0xff, + 0x48, 0x30, 0xdf, 0xa6, 0x36, 0x67, 0x43, 0x93, 0x4b, 0x44, 0x9a, 0x4d, 0x89, 0x1c, 0x3f, 0x4c, + 0x1f, 0x43, 0x59, 0xf7, 0x48, 0x0f, 0xb3, 0x28, 0x3a, 0x39, 0x72, 0x9b, 0xc3, 0xc7, 0x24, 0x49, + 0xdd, 0xa8, 0xbe, 0x02, 0x4b, 0x43, 0xb7, 0x16, 0x6a, 0xec, 0xcd, 0x45, 0x1d, 0xb4, 0x89, 0x6c, + 0x07, 0x6b, 0xc8, 0x9a, 0xb1, 0x28, 0x9f, 0xc1, 0xca, 0x40, 0x14, 0x1a, 0x98, 0xb9, 0x85, 0x59, + 0x12, 0x66, 0x5b, 0x81, 0x39, 0x91, 0xcd, 0xa2, 0x4c, 0xb0, 0x15, 0x73, 0xb3, 0xb5, 0x28, 0x4b, + 0x2b, 0x5d, 0x9a, 0xad, 0xd2, 0xdd, 0xa8, 0x61, 0x8c, 0x29, 0x9a, 0x08, 0x2e, 0xb7, 0xa3, 0x3a, + 0xf4, 0x5d, 0x14, 0x26, 0x72, 0x27, 0x7c, 0x60, 0x79, 0x7f, 0x50, 0x52, 0xcd, 0xf0, 0xcb, 0xe4, + 0xf5, 0x6d, 0x9e, 0x0e, 0x0f, 0xf0, 0xec, 0xf7, 0x9a, 0x14, 0xd5, 0x1c, 0x37, 0x0e, 0xb7, 0xeb, + 0xff, 0x4a, 0x70, 0xb6, 0x4d, 0xed, 0x47, 0xd8, 0x7a, 0xc3, 0xf2, 0x79, 0x1b, 0x56, 0x46, 0xee, + 0x7d, 0x52, 0x02, 0xff, 0x34, 0x07, 0x17, 0xc2, 0xfe, 0xaf, 0x63, 0x13, 0xb9, 0x8f, 0xb0, 0x41, + 0xb0, 0xe5, 0x60, 0xfb, 0xa8, 0x27, 0xf6, 0x7f, 0xa7, 0xb7, 0x7c, 0x15, 0x16, 0xcc, 0xf0, 0x8d, + 0x0b, 0x45, 0xdb, 0x41, 0x8e, 0xbd, 0x13, 0xd7, 0x45, 0x51, 0x3b, 0x97, 0x2c, 0x7f, 0x1a, 0xad, + 0x1e, 0x19, 0x98, 0x2b, 0x70, 0x39, 0x4b, 0x2f, 0xd1, 0x79, 0xf6, 0xa5, 0xa8, 0x23, 0x69, 0x84, + 0xe9, 0x0c, 0x6d, 0x12, 0x4c, 0xe3, 0x47, 0x5e, 0xbe, 0x0e, 0x65, 0x8a, 0xb0, 0x85, 0x82, 0x23, + 0x45, 0xe4, 0xb8, 0x59, 0x49, 0xf7, 0x39, 0xcc, 0x63, 0xf4, 0xa4, 0xe3, 0xf7, 0x8c, 0x4e, 0x38, + 0xa2, 0x14, 0x5f, 0x6b, 0x44, 0x39, 0x83, 0xd1, 0x93, 0xf8, 0xb3, 0xfe, 0x1e, 0xbc, 0x3b, 0xe1, + 0x7e, 0xc9, 0xfd, 0x37, 0x7e, 0x2c, 0x43, 0xb1, 0x4d, 0x6d, 0xf9, 0x31, 0x2c, 0x8c, 0xcf, 0xaf, + 0xd7, 0xa6, 0x8d, 0x0a, 0xe9, 0x41, 0x44, 0xd9, 0xc8, 0x8f, 0x15, 0x25, 0xd2, 0x85, 0xb3, 0xa3, + 0x03, 0xcb, 0x5a, 0x06, 0xc9, 0x08, 0x52, 0xb9, 0x9e, 0x17, 0x29, 0x9c, 0x7d, 0x03, 0xa7, 0xc5, + 0x5b, 0x7b, 0x29, 0xc3, 0x3a, 0x01, 0x29, 0x1f, 0xe4, 0x00, 0x09, 0xf6, 0xc7, 0xb0, 0x30, 0xfe, + 0x76, 0x65, 0xa9, 0x37, 0x86, 0xcd, 0x54, 0x6f, 0x5a, 0x07, 0x37, 0x00, 0x86, 0xda, 0xed, 0xfb, + 0x19, 0x0c, 0x03, 0x98, 0xb2, 0x9e, 0x0b, 0x26, 0x7c, 0x7c, 0x2f, 0xc1, 0xea, 0xf4, 0x96, 0x73, + 0x2b, 0x2b, 0xe6, 0xd3, 0xac, 0x94, 0x3b, 0xaf, 0x63, 0x25, 0x4e, 0xc4, 0x60, 0x31, 0x55, 0xaa, + 0x59, 0x91, 0x1a, 0x07, 0x2b, 0x37, 0x8f, 0x01, 0x4e, 0xbc, 0x36, 0xef, 0xbf, 0x3c, 0xa8, 0x4a, + 0x7b, 0x07, 0x55, 0xe9, 0x8f, 0x83, 0xaa, 0xf4, 0xec, 0xb0, 0x5a, 0xd8, 0x3b, 0xac, 0x16, 0x7e, + 0x3d, 0xac, 0x16, 0xbe, 0xfe, 0x30, 0x73, 0x96, 0x7c, 0x2a, 0xfe, 0x51, 0x46, 0x53, 0xa5, 0x51, + 0x8e, 0xca, 0xf7, 0xe6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x88, 0x38, 0x9b, 0x36, 0x0f, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -645,6 +748,7 @@ type MsgClient interface { // // Since: cosmos-sdk 0.46 CancelUnbondingDelegation(ctx context.Context, in *MsgCancelUnbondingDelegation, opts ...grpc.CallOption) (*MsgCancelUnbondingDelegationResponse, error) + RotateConsPubKey(ctx context.Context, in *MsgRotateConsPubKey, opts ...grpc.CallOption) (*MsgRotateConsPubKeyResponse, error) } type msgClient struct { @@ -709,6 +813,15 @@ func (c *msgClient) CancelUnbondingDelegation(ctx context.Context, in *MsgCancel return out, nil } +func (c *msgClient) RotateConsPubKey(ctx context.Context, in *MsgRotateConsPubKey, opts ...grpc.CallOption) (*MsgRotateConsPubKeyResponse, error) { + out := new(MsgRotateConsPubKeyResponse) + err := c.cc.Invoke(ctx, "/cosmos.staking.v1beta1.Msg/RotateConsPubKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // CreateValidator defines a method for creating a new validator. @@ -729,6 +842,7 @@ type MsgServer interface { // // Since: cosmos-sdk 0.46 CancelUnbondingDelegation(context.Context, *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) + RotateConsPubKey(context.Context, *MsgRotateConsPubKey) (*MsgRotateConsPubKeyResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -753,6 +867,9 @@ func (*UnimplementedMsgServer) Undelegate(ctx context.Context, req *MsgUndelegat func (*UnimplementedMsgServer) CancelUnbondingDelegation(ctx context.Context, req *MsgCancelUnbondingDelegation) (*MsgCancelUnbondingDelegationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CancelUnbondingDelegation not implemented") } +func (*UnimplementedMsgServer) RotateConsPubKey(ctx context.Context, req *MsgRotateConsPubKey) (*MsgRotateConsPubKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RotateConsPubKey not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -866,6 +983,24 @@ func _Msg_CancelUnbondingDelegation_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Msg_RotateConsPubKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRotateConsPubKey) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RotateConsPubKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.staking.v1beta1.Msg/RotateConsPubKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RotateConsPubKey(ctx, req.(*MsgRotateConsPubKey)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "cosmos.staking.v1beta1.Msg", HandlerType: (*MsgServer)(nil), @@ -894,6 +1029,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CancelUnbondingDelegation", Handler: _Msg_CancelUnbondingDelegation_Handler, }, + { + MethodName: "RotateConsPubKey", + Handler: _Msg_RotateConsPubKey_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/staking/v1beta1/tx.proto", @@ -1406,6 +1545,78 @@ func (m *MsgCancelUnbondingDelegationResponse) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } +func (m *MsgRotateConsPubKey) 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 *MsgRotateConsPubKey) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRotateConsPubKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.NewPubKey != nil { + { + size, err := m.NewPubKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRotateConsPubKeyResponse) 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 *MsgRotateConsPubKeyResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRotateConsPubKeyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -1610,6 +1821,36 @@ func (m *MsgCancelUnbondingDelegationResponse) Size() (n int) { return n } +func (m *MsgRotateConsPubKey) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.NewPubKey != nil { + l = m.NewPubKey.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRotateConsPubKeyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -3091,6 +3332,206 @@ func (m *MsgCancelUnbondingDelegationResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgRotateConsPubKey) 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 ErrIntOverflowTx + } + 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: MsgRotateConsPubKey: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRotateConsPubKey: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewPubKey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NewPubKey == nil { + m.NewPubKey = &types.Any{} + } + if err := m.NewPubKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRotateConsPubKeyResponse) 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 ErrIntOverflowTx + } + 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: MsgRotateConsPubKeyResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRotateConsPubKeyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0